# Vulnerability Code Patterns Grep patterns for detecting common vulnerability patterns. Use with Grep tool. ## SQL Injection ### String concatenation in queries ``` (?i)(query|sql|execute)\s*\(.*\+.*\) (?i)(SELECT|INSERT|UPDATE|DELETE|DROP).*['"].*\+ ``` ### Template literals in queries (JS/TS) ``` (?i)(query|sql|execute)\s*\(`.*\$\{ ``` ## XSS (Cross-Site Scripting) ### Dangerous DOM manipulation ``` \.innerHTML\s*= dangerouslySetInnerHTML document\.write\( ``` ### Unescaped output (template engines) ``` \{\{\{ # Handlebars unescaped (triple braces) <%-\s* # EJS unescaped (vs <%= escaped) \|safe\b # Jinja2/Django unescaped v-html= # Vue unescaped ``` ## Command Injection ### Unsanitized exec/spawn ``` (?i)(exec|execSync|spawn|spawnSync)\s*\(.*\+ (?i)(exec|execSync|spawn|spawnSync)\s*\(`.*\$\{ (?i)child_process.*\(.*\$\{ os\.system\(.*\+ subprocess\.(call|run|Popen)\(.*\+ ``` ## Path Traversal ### User input in file paths ``` (?i)(readFile|writeFile|createReadStream|open)\s*\(.*req\.(params|query|body) (?i)(readFile|writeFile)\s*\(.*\+.*\) ``` ## Insecure Randomness ### Math.random for security ``` Math\.random\(\).*(?i)(token|key|secret|password|session|nonce|salt) ``` ## Dangerous Functions ### eval and equivalents ``` \beval\s*\( new\s+Function\s*\( setTimeout\s*\(\s*['"] setInterval\s*\(\s*['"] ``` ### Deserialization ``` (?i)(pickle\.loads|yaml\.load\(|unserialize\() JSON\.parse\(.*req\.(params|query|body) ``` ## Authentication / Authorization ### Hardcoded credentials ``` (?i)(admin|root|password)\s*[:=]\s*['"][^'"]{4,}['"] ``` ### Disabled security ``` (?i)(verify|ssl|tls|certificate)\s*[:=]\s*(false|False|0) (?i)rejectUnauthorized\s*:\s*false NODE_TLS_REJECT_UNAUTHORIZED.*0 ``` ## Information Disclosure ### Debug/verbose in production ``` (?i)console\.(log|debug|trace)\s*\(.*(?:password|secret|token|key|credential) (?i)(DEBUG|VERBOSE)\s*[:=]\s*(true|True|1) ``` ## False Positive Indicators Skip matches containing: - `test`, `spec`, `mock`, `fixture`, `example`, `sample`, `demo` - `TODO`, `FIXME`, `HACK` - Variable declarations reading from env: `process.env.`, `os.getenv(` - Comments (lines starting with `//`, `#`, `/*`)