Skip to main content

codeql-scanning

Analyze code for common vulnerability patterns using CodeQL-style queries. Identify injection flaws, unsafe deserialization, prototype pollution, path traversal, and other security issues in TypeScript/JavaScript code.

Source facts

Repository
hyperledger-cacti/cacti
Last source activity
April 27, 2026 at 13:39
Detected SKILL.md language
English
Stars
416
Forks
366

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
codeql-scanning
description
Analyze code for common vulnerability patterns using CodeQL-style queries. Identify injection flaws, unsafe deserialization, prototype pollution, path traversal, and other security issues in TypeScript/JavaScript code.
# CodeQL Scanning Skill Identify security vulnerability patterns in TypeScript/JavaScript code using static analysis techniques inspired by CodeQL queries. ## When to Use - When reviewing code for security vulnerabilities - Before merging PRs that handle user input or external data - When auditing authentication, authorization, or crypto code - When analyzing data flow from sources to sinks ## Vulnerability Patterns ### Injection Flaws (CWE-89, CWE-78, CWE-79) **SQL Injection**: User input concatenated into SQL queries. ```typescript // BAD: string concatenation const query = `SELECT * FROM users WHERE id = '${userId}'`; // GOOD: parameterized query const query = `SELECT * FROM users WHERE id = $1`; ``` **Command Injection**: User input passed to shell commands. ```typescript // BAD: unsanitized input in exec exec(`git clone ${repoUrl}`); // GOOD: use execFile with argument array execFile("git", ["clone", repoUrl]); ``` **XSS**: User input rendered without escaping in HTML responses. ### Prototype Pollution (CWE-1321) - `Object.assign` or spread with untrusted objects - Deep merge utilities without prototype checks - `__proto__` or `constructor.prototype` in user input ### Unsafe Deserialization (CWE-502) - `JSON.parse` of untrusted input without schema validation - `eval` or `Function()` with dynamic input - YAML/XML parsing without safe mode ### Path Traversal (CWE-22) - File paths constructed with user input without sanitization - Missing checks for `../` sequences - Symlink following without validation ### Insecure Crypto (CWE-327, CWE-330) - MD5 or SHA1 for password hashing (use bcrypt/scrypt/argon2) - `Math.random()` for security-sensitive values - Hardcoded encryption keys or IVs ### SSRF (CWE-918) - HTTP requests to user-supplied URLs without allowlist - DNS rebinding exposure - Internal network access via URL manipulation ### Cacti-Specific Patterns - **OpenAPI endpoint auth**: Endpoints in `openapi.json` missing security scheme definitions. - **Gateway protocol**: SATP Hermes messages accepted without signature verification or session validation. - **Ledger connector**: Private keys logged or stored insecurely. - **Test tooling in prod**: `cactus-test-tooling` imported in main source. ## Data Flow Analysis For each finding, trace the data flow: 1. **Source**: Where does untrusted data enter? (HTTP request, file read, environment variable, database query result) 2. **Propagation**: How does the data flow through the code? (variable assignment, function parameters, object properties) 3. **Sink**: Where is the data used in a security-sensitive operation? (SQL query, shell command, file path, HTTP response) 4. **Sanitizers**: Are there any validation or encoding steps between source and sink? ## Output Format ```markdown ## CodeQL-Style Scan: [Package/Scope] ### Findings #### [CWE-XXX] [Vulnerability Name] - **Severity**: Critical/High/Medium/Low - **Source**: [file:line] — [description of data entry point] - **Sink**: [file:line] — [description of dangerous operation] - **Flow**: source → [intermediate steps] → sink - **Sanitizer**: [present/missing] - **Fix**: [specific remediation steps] ### Summary - Critical: [count] - High: [count] - Medium: [count] - Low: [count] ```
View on GitHub