Auditing Security
Overview
Comprehensive security analysis to identify vulnerabilities, assess risk, and provide remediation guidance aligned with industry standards (OWASP Top 10, CVSS scoring).
Inputs:
- Codebase to audit
docs/system-design.md - Architecture context
docs/api-contracts.yaml - API specifications
docs/feature-spec/F-##-*.md - Feature implementations
Outputs:
- Security findings organized by severity (CRITICAL, HIGH, MEDIUM, LOW)
- CVSS scores and OWASP Top 10 mapping
- Exploit scenarios and remediation code
- Risk-prioritized remediation plan
Quick Start
Ask for security audit with context:
- What to audit? Feature, component, or full application
- Concerns? Injection, auth bypass, data leaks, access control, API security
- Sensitive data? PII, credentials, financial data, health info, business secrets
- Existing security? JWT/sessions, RBAC/ABAC, TLS, input validation, headers, rate limiting
Scope Discovery
Q1: Audit Scope
- Specific feature or component
- Entire application (full security audit)
- Known vulnerability investigation
- Compliance check (OWASP Top 10, PCI-DSS, GDPR)
- Code review for security issues
- Infrastructure and configuration
Q2: Threat Model
- Data breaches and leaks
- Authentication bypass
- Injection attacks (SQL, XSS, command)
- Access control failures
- API security
- Infrastructure vulnerabilities
- Dependency vulnerabilities
Q3: Sensitivity Level
- Personal identifiable information (PII)
- Authentication credentials
- Financial data (payment info, transactions)
- Health information (HIPAA)
- Business secrets or proprietary data
- User-generated content
Q4: Existing Security (optional)
- Authentication method (JWT, sessions, OAuth)
- Authorization model (RBAC, ABAC)
- Encryption (TLS, at-rest encryption)
- Input validation and sanitization
- Security headers (CSP, HSTS, etc.)
- Rate limiting and throttling
- Logging and monitoring
Security Review Strategy
Sequential Review (Targeted audits)
When to use: Small codebase, single vulnerability investigation, specific attack vector, <5 files
Review vulnerabilities one area at a time using direct tools:
Injection Vulnerabilities:
- SQL injection: String concatenation in queries (
db.query("SELECT * FROM users WHERE id = '" + id + "'"))
- XSS:
dangerouslySetInnerHTML, unsanitized HTML (.innerHTML = userInput)
- Command injection: Shell command construction (
exec('rm ' + filename))
- NoSQL injection, LDAP injection
- Search for:
db.query(, eval(, exec(, .innerHTML
Authentication/Authorization:
- Endpoints without auth checks
- Weak password requirements
- Missing rate limiting on auth endpoints
- Session management issues
- Broken access control, privilege escalation
- Search for: route handlers, auth middleware, permission checks
Sensitive Data Exposure:
- Hardcoded secrets: API keys, passwords, tokens
- Excessive data in API responses
- Logging sensitive information
- Unencrypted transmission
- Insecure storage
- Search for:
apiKey, password, secret, token assignments
Security Misconfiguration:
- Missing security headers (CSP, HSTS, X-Frame-Options)
- CORS misconfiguration
- Verbose error messages exposing internals
- Default credentials
- Debug mode in production
- Search for: server config, error handlers, CORS setup
Dependency Vulnerabilities:
- Run
npm audit or equivalent
- Check for outdated packages with CVEs
- Unnecessary dependencies, supply chain risks
Parallel Scanning (Comprehensive audits)
When to use: Entire application, multiple OWASP categories, >1000 lines, multiple attack surfaces
Agent 1: Injection (OWASP A03)
SQL, XSS, command, NoSQL, LDAP injection vulnerabilities
Agent 2: Authentication/Authorization (OWASP A01, A07)
Missing auth, weak passwords, broken sessions, access control failures, privilege escalation
Agent 3: Data Exposure (OWASP A02)
Hardcoded secrets, excessive API responses, logging sensitive data, unencrypted transmission, insecure storage
Agent 4: Configuration (OWASP A05)
Missing security headers, CORS misconfiguration, verbose errors, default credentials, unnecessary services
Agent 5: Dependencies (OWASP A06)
Vulnerable packages, outdated versions, supply chain risks
Finding Documentation Format
For each vulnerability:
### [SEVERITY] Issue Name
**CVSS Score:** X.X | **Category:** OWASP A##:YEAR | **Location:** `src/path/file.js:123`
**Vulnerable Code:**
[Code snippet]
**Exploit Scenario:**
[Concrete example of how to abuse this]
**Impact:**
[What attacker can achieve: data access, auth bypass, system compromise, etc.]
**Fix:**
[Secure replacement code]
**References:**
- OWASP: [link]
- CWE-##: [link]
Severity Mapping:
- 🔴 CRITICAL (CVSS 9.0-10.0): Fix immediately, authentication bypass, full database access, RCE
- 🔴 HIGH (CVSS 7.0-8.9): Fix within days, data exfiltration, significant privilege escalation
- 🟡 MEDIUM (CVSS 4.0-6.9): Fix within weeks, partial data access, limited auth bypass
- 🟢 LOW (CVSS 0.1-3.9): Fix within months, information disclosure, minor config issues
Security Audit Report
Generate comprehensive report with:
# Security Audit Report: [System Name]
## Executive Summary
**Overall Security Posture:** [CRITICAL / POOR / FAIR / GOOD / EXCELLENT]
**Vulnerability Summary:**
- CRITICAL: [X] (CVSS 9.0-10.0)
- HIGH: [Y] (CVSS 7.0-8.9)
- MEDIUM: [Z] (CVSS 4.0-6.9)
- LOW: [N] (CVSS 0.1-3.9)
**Immediate Actions Required:**
1. [Most critical issue]
2. [Second priority]
## OWASP Top 10 Assessment
| Category | Status | Findings | Priority |
|----------|--------|----------|----------|
| A01: Broken Access Control | ✅/⚠️/❌ | [count] | - |
| A02: Cryptographic Failures | ✅/⚠️/❌ | [count] | - |
| A03: Injection | ✅/⚠️/❌ | [count] | - |
| [Continue for all 10] | | | |
## Findings by Severity
[CRITICAL vulnerabilities]
[HIGH vulnerabilities]
[MEDIUM vulnerabilities]
[LOW vulnerabilities]
## Remediation Plan
### Immediate (24 hours)
[Critical and high-severity fixes]
### Short-term (1 week)
[Medium-severity fixes]
### Medium-term (1 month)
[Low-severity fixes, hardening]
## Verification Checklist
- [ ] Re-run security scans on fixed code
- [ ] Verify each vulnerability is closed
- [ ] Run `npm audit` on dependencies
- [ ] Test fixes don't break functionality
- [ ] Add security regression tests
Security Check Reference
Injection:
- SQL queries use parameterization (prepared statements, ORM)
- HTML output is sanitized (DOMPurify, escaped)
- No dynamic command execution (
exec, spawn with user input)
- No
eval() or similar code execution
Authentication:
- Password requirements adequate (12+ chars, complexity)
- All sensitive endpoints have auth checks
- Session management secure (httpOnly, secure cookies)
- Rate limiting on auth endpoints (5 attempts/min max)
- Credentials hashed with bcrypt/argon2, not plaintext
Data Exposure:
- No hardcoded secrets (use environment variables)
- API responses don't leak unnecessary data
- Sensitive data not in logs
- HTTPS/TLS enforced everywhere
- Sensitive data encrypted at rest (AES-256)
Configuration:
- Security headers present (CSP, HSTS, X-Frame-Options, X-Content-Type-Options)
- CORS properly configured (not
*, validate origins)
- Error messages don't expose internals
- No default credentials
- Debug mode disabled in production
Dependencies:
- No known vulnerabilities (run
npm audit)
- Packages up to date
- No unnecessary dependencies
Remediation Workflow
- Fix each vulnerability following documented code examples
- Verify immediately - re-run security scans, test functionality
- Document resolution - mark findings as fixed with verification method
- Run dependency audit -
npm audit, update packages
- Test regression - ensure fixes don't break features
- Update docs - document security measures implemented
Examples
Example 1: SQL Injection Finding
### [CRITICAL] SQL Injection in User Login
**CVSS Score:** 9.8 | **Category:** OWASP A03:2021 | **Location:** `src/auth/login.js:45`
**Vulnerable Code:**
const query = `SELECT * FROM users WHERE email = '${email}'`;
const user = await db.query(query);
**Exploit Scenario:**
Attacker sends: email = "admin' OR '1'='1"
→ Returns all users, bypasses authentication, gains admin access
**Impact:**
- Complete authentication bypass
- Full database access
- Data exfiltration and manipulation
**Fix:**
const query = 'SELECT * FROM users WHERE email = ?';
const user = await db.query(query, [email]);
Example 2: Hardcoded Secrets Finding
### [CRITICAL] Hardcoded API Key
**CVSS Score:** 9.6 | **Category:** OWASP A02:2021 | **Location:** `src/config.js:12`
**Vulnerable Code:**
const apiKey = "sk-1234567890abcdef";
**Impact:**
- Unauthorized API access
- Billing liability
- Data access under victim's account
**Fix:**
const apiKey = process.env.API_KEY;
// Store in .env: API_KEY=sk-1234567890abcdef
1---2name: auditing-security3description: Identify and remediate vulnerabilities through systematic code analysis. Use when performing security assessments, pre-deployment reviews, compliance validation (OWASP, PCI-DSS, GDPR), investigating known vulnerabilities, or post-incident analysis.4---56# Auditing Security78## Overview910Comprehensive security analysis to identify vulnerabilities, assess risk, and provide remediation guidance aligned with industry standards (OWASP Top 10, CVSS scoring).1112**Inputs:**13- Codebase to audit14- `docs/system-design.md` - Architecture context15- `docs/api-contracts.yaml` - API specifications16- `docs/feature-spec/F-##-*.md` - Feature implementations1718**Outputs:**19- Security findings organized by severity (CRITICAL, HIGH, MEDIUM, LOW)20- CVSS scores and OWASP Top 10 mapping21- Exploit scenarios and remediation code22- Risk-prioritized remediation plan2324## Quick Start2526Ask for security audit with context:27- **What to audit?** Feature, component, or full application28- **Concerns?** Injection, auth bypass, data leaks, access control, API security29- **Sensitive data?** PII, credentials, financial data, health info, business secrets30- **Existing security?** JWT/sessions, RBAC/ABAC, TLS, input validation, headers, rate limiting3132## Scope Discovery3334**Q1: Audit Scope**35- Specific feature or component36- Entire application (full security audit)37- Known vulnerability investigation38- Compliance check (OWASP Top 10, PCI-DSS, GDPR)39- Code review for security issues40- Infrastructure and configuration4142**Q2: Threat Model**43- Data breaches and leaks44- Authentication bypass45- Injection attacks (SQL, XSS, command)46- Access control failures47- API security48- Infrastructure vulnerabilities49- Dependency vulnerabilities5051**Q3: Sensitivity Level**52- Personal identifiable information (PII)53- Authentication credentials54- Financial data (payment info, transactions)55- Health information (HIPAA)56- Business secrets or proprietary data57- User-generated content5859**Q4: Existing Security** (optional)60- Authentication method (JWT, sessions, OAuth)61- Authorization model (RBAC, ABAC)62- Encryption (TLS, at-rest encryption)63- Input validation and sanitization64- Security headers (CSP, HSTS, etc.)65- Rate limiting and throttling66- Logging and monitoring6768## Security Review Strategy6970### Sequential Review (Targeted audits)71**When to use:** Small codebase, single vulnerability investigation, specific attack vector, <5 files7273Review vulnerabilities one area at a time using direct tools:7475**Injection Vulnerabilities:**76- SQL injection: String concatenation in queries (`db.query("SELECT * FROM users WHERE id = '" + id + "'")`)77- XSS: `dangerouslySetInnerHTML`, unsanitized HTML (`.innerHTML = userInput`)78- Command injection: Shell command construction (`exec('rm ' + filename)`)79- NoSQL injection, LDAP injection80- Search for: `db.query(`, `eval(`, `exec(`, `.innerHTML`8182**Authentication/Authorization:**83- Endpoints without auth checks84- Weak password requirements85- Missing rate limiting on auth endpoints86- Session management issues87- Broken access control, privilege escalation88- Search for: route handlers, auth middleware, permission checks8990**Sensitive Data Exposure:**91- Hardcoded secrets: API keys, passwords, tokens92- Excessive data in API responses93- Logging sensitive information94- Unencrypted transmission95- Insecure storage96- Search for: `apiKey`, `password`, `secret`, `token` assignments9798**Security Misconfiguration:**99- Missing security headers (CSP, HSTS, X-Frame-Options)100- CORS misconfiguration101- Verbose error messages exposing internals102- Default credentials103- Debug mode in production104- Search for: server config, error handlers, CORS setup105106**Dependency Vulnerabilities:**107- Run `npm audit` or equivalent108- Check for outdated packages with CVEs109- Unnecessary dependencies, supply chain risks110111### Parallel Scanning (Comprehensive audits)112**When to use:** Entire application, multiple OWASP categories, >1000 lines, multiple attack surfaces113114**Agent 1: Injection (OWASP A03)**115SQL, XSS, command, NoSQL, LDAP injection vulnerabilities116117**Agent 2: Authentication/Authorization (OWASP A01, A07)**118Missing auth, weak passwords, broken sessions, access control failures, privilege escalation119120**Agent 3: Data Exposure (OWASP A02)**121Hardcoded secrets, excessive API responses, logging sensitive data, unencrypted transmission, insecure storage122123**Agent 4: Configuration (OWASP A05)**124Missing security headers, CORS misconfiguration, verbose errors, default credentials, unnecessary services125126**Agent 5: Dependencies (OWASP A06)**127Vulnerable packages, outdated versions, supply chain risks128129## Finding Documentation Format130131**For each vulnerability:**132133```markdown134### [SEVERITY] Issue Name135**CVSS Score:** X.X | **Category:** OWASP A##:YEAR | **Location:** `src/path/file.js:123`136137**Vulnerable Code:**138[Code snippet]139140**Exploit Scenario:**141[Concrete example of how to abuse this]142143**Impact:**144[What attacker can achieve: data access, auth bypass, system compromise, etc.]145146**Fix:**147[Secure replacement code]148149**References:**150- OWASP: [link]151- CWE-##: [link]152```153154**Severity Mapping:**155- 🔴 CRITICAL (CVSS 9.0-10.0): Fix immediately, authentication bypass, full database access, RCE156- 🔴 HIGH (CVSS 7.0-8.9): Fix within days, data exfiltration, significant privilege escalation157- 🟡 MEDIUM (CVSS 4.0-6.9): Fix within weeks, partial data access, limited auth bypass158- 🟢 LOW (CVSS 0.1-3.9): Fix within months, information disclosure, minor config issues159160## Security Audit Report161162Generate comprehensive report with:163164```markdown165# Security Audit Report: [System Name]166167## Executive Summary168**Overall Security Posture:** [CRITICAL / POOR / FAIR / GOOD / EXCELLENT]169170**Vulnerability Summary:**171- CRITICAL: [X] (CVSS 9.0-10.0)172- HIGH: [Y] (CVSS 7.0-8.9)173- MEDIUM: [Z] (CVSS 4.0-6.9)174- LOW: [N] (CVSS 0.1-3.9)175176**Immediate Actions Required:**1771. [Most critical issue]1782. [Second priority]179180## OWASP Top 10 Assessment181| Category | Status | Findings | Priority |182|----------|--------|----------|----------|183| A01: Broken Access Control | ✅/⚠️/❌ | [count] | - |184| A02: Cryptographic Failures | ✅/⚠️/❌ | [count] | - |185| A03: Injection | ✅/⚠️/❌ | [count] | - |186| [Continue for all 10] | | | |187188## Findings by Severity189[CRITICAL vulnerabilities]190[HIGH vulnerabilities]191[MEDIUM vulnerabilities]192[LOW vulnerabilities]193194## Remediation Plan195### Immediate (24 hours)196[Critical and high-severity fixes]197198### Short-term (1 week)199[Medium-severity fixes]200201### Medium-term (1 month)202[Low-severity fixes, hardening]203204## Verification Checklist205- [ ] Re-run security scans on fixed code206- [ ] Verify each vulnerability is closed207- [ ] Run `npm audit` on dependencies208- [ ] Test fixes don't break functionality209- [ ] Add security regression tests210```211212## Security Check Reference213214**Injection:**215- SQL queries use parameterization (prepared statements, ORM)216- HTML output is sanitized (DOMPurify, escaped)217- No dynamic command execution (`exec`, `spawn` with user input)218- No `eval()` or similar code execution219220**Authentication:**221- Password requirements adequate (12+ chars, complexity)222- All sensitive endpoints have auth checks223- Session management secure (httpOnly, secure cookies)224- Rate limiting on auth endpoints (5 attempts/min max)225- Credentials hashed with bcrypt/argon2, not plaintext226227**Data Exposure:**228- No hardcoded secrets (use environment variables)229- API responses don't leak unnecessary data230- Sensitive data not in logs231- HTTPS/TLS enforced everywhere232- Sensitive data encrypted at rest (AES-256)233234**Configuration:**235- Security headers present (CSP, HSTS, X-Frame-Options, X-Content-Type-Options)236- CORS properly configured (not `*`, validate origins)237- Error messages don't expose internals238- No default credentials239- Debug mode disabled in production240241**Dependencies:**242- No known vulnerabilities (run `npm audit`)243- Packages up to date244- No unnecessary dependencies245246## Remediation Workflow2472481. **Fix each vulnerability** following documented code examples2492. **Verify immediately** - re-run security scans, test functionality2503. **Document resolution** - mark findings as fixed with verification method2514. **Run dependency audit** - `npm audit`, update packages2525. **Test regression** - ensure fixes don't break features2536. **Update docs** - document security measures implemented254255## Examples256257**Example 1: SQL Injection Finding**258```markdown259### [CRITICAL] SQL Injection in User Login260**CVSS Score:** 9.8 | **Category:** OWASP A03:2021 | **Location:** `src/auth/login.js:45`261262**Vulnerable Code:**263const query = `SELECT * FROM users WHERE email = '${email}'`;264const user = await db.query(query);265266**Exploit Scenario:**267Attacker sends: email = "admin' OR '1'='1"268→ Returns all users, bypasses authentication, gains admin access269270**Impact:**271- Complete authentication bypass272- Full database access273- Data exfiltration and manipulation274275**Fix:**276const query = 'SELECT * FROM users WHERE email = ?';277const user = await db.query(query, [email]);278```279280**Example 2: Hardcoded Secrets Finding**281```markdown282### [CRITICAL] Hardcoded API Key283**CVSS Score:** 9.6 | **Category:** OWASP A02:2021 | **Location:** `src/config.js:12`284285**Vulnerable Code:**286const apiKey = "sk-1234567890abcdef";287288**Impact:**289- Unauthorized API access290- Billing liability291- Data access under victim's account292293**Fix:**294const apiKey = process.env.API_KEY;295// Store in .env: API_KEY=sk-1234567890abcdef296```