Security Scan
Security-focused code scan. Checks for hardcoded secrets, vulnerable dependencies, and common security issues.
Security Scan
Security-focused code scanning. Run before commits and PRs to catch vulnerabilities.
Phase 1: Secret Detection
Scan for hardcoded credentials:
# Common secret patterns
grep -rn "password\s*[=:]\s*['\"]" --include="*.{js,ts,py,go,java,rb}" . 2>/dev/null | grep -v node_modules | grep -v ".git"
grep -rn "api[_-]?key\s*[=:]\s*['\"]" --include="*.{js,ts,py,go,java,rb}" . 2>/dev/null | grep -v node_modules
grep -rn "secret\s*[=:]\s*['\"]" --include="*.{js,ts,py,go,java,rb}" . 2>/dev/null | grep -v node_modules
grep -rn "token\s*[=:]\s*['\"]" --include="*.{js,ts,py,go,java,rb}" . 2>/dev/null | grep -v node_modules
# AWS keys
grep -rn "AKIA[0-9A-Z]{16}" . 2>/dev/null | grep -v node_modules
# Private keys
find . -name "*.pem" -o -name "*.key" -o -name "id_rsa" 2>/dev/null | grep -v node_modules
Phase 2: Dependency Audit
Check for vulnerable dependencies:
Node.js
npm audit --json 2>/dev/null | head -100
# or
yarn audit --json 2>/dev/null | head -100
Python
pip-audit 2>/dev/null || safety check 2>/dev/null
Go
govulncheck ./... 2>/dev/null
Rust
cargo audit 2>/dev/null
Phase 3: Code Pattern Analysis
Check for dangerous patterns:
SQL Injection
- String concatenation in SQL queries
- Unparameterized queries
- Dynamic table/column names from user input
Command Injection
- Shell execution with user input (
exec,system,subprocess) - Unsanitized path construction
XSS Vulnerabilities
innerHTMLwith user datadangerouslySetInnerHTMLwithout sanitization- Unescaped template variables
Path Traversal
- User input in file paths without sanitization
- Missing
..checks
Phase 4: Configuration Check
Verify security settings:
- Debug mode disabled in production configs
- HTTPS enforced (no HTTP URLs in prod)
- CORS properly configured
- Security headers present (CSP, X-Frame-Options, etc.)
- No default/weak passwords in configs
Output Format
## Security Scan: [PASS/FAIL/WARNINGS]
### Secrets Detected: [count]
1. **CRITICAL** - `file:line`
- Type: [API key/password/token/private key]
- Action: Remove immediately and rotate credential
### Vulnerable Dependencies: [count]
1. **[package@version]** - Severity: [Critical/High/Medium/Low]
- CVE: [CVE number if available]
- Fixed in: [version]
- Action: Update to [version]
### Code Vulnerabilities: [count]
1. **[Vulnerability Type]** - `file:line`
- Risk: [description]
- Fix: [remediation steps]
### Configuration Issues: [count]
1. **[Issue]**
- Current: [state]
- Recommended: [secure state]
### Recommendations
1. [Prioritized action items]
NEVER Commit If
- Secrets detected in code (rotate and remove)
- Critical CVEs in dependencies (update first)
- Obvious injection vulnerabilities (fix first)
Usage
Copy to your project:
cp templates/subagents/security-scan.md .claude/commands/
Invoke with: /project:security-scan