| name | add-security-audit |
| description | Security audit: OWASP Top 10, multi-tenancy, injection, auth, XSS, dependencies.
|
Security Audit
Use for: Validate security, audit codebase, identify vulnerabilities
Do not use for: Writing security fixes, dependency upgrades, incident response, general code review
Reference: Always consult CLAUDE.md for general project standards.
OWASP Checklist
A01 — Broken Access Control (CRITICAL)
Multi-tenant rules:
Searches to run:
grep 'findAll|selectFrom' → check account_id filter
grep '@Body()' → check no accountId from body
A02 — Cryptographic Failures
Searches:
grep 'sk_live|api_key|secret' → no hardcoded
grep 'logger|console' → no sensitive data
A03 — Injection (CRITICAL)
SQL/NoSQL:
Command injection:
Searches:
grep 'raw(' → check user input
grep '${' in queries → SQL injection
A04 — Insecure Design
Search: grep '@Get|@Post' → check @UseGuards.
A05 — Misconfiguration
Secrets/env vars: see A02.
Searches:
grep 'origin.*\*' → open CORS
grep 'process.env' → use IConfigurationService
A06 — Vulnerable Components
Command: npm audit --json | grep -E 'critical|high'.
A07 — Auth Failures
A08 — Integrity Failures
A09 — Logging Failures
Sensitive data in logs: see A02.
A10 — SSRF
Extra — XSS
Search: grep 'dangerouslySetInnerHTML' → check sanitization.
Extra — Mass Assignment
Search: grep '...body|...dto' → spread vulnerability.
Scoring
Formula: score = 10 - (weighted_sum / 5)
| Severity | Weight | Score Range | Status |
|---|
| critical | 3 | 8-10 | ✅ Secure |
| high | 2 | 6-7 | ⚠️ Attention |
| medium | 1 | 4-5 | 🟠 Risk |
| low | 0.5 | 0-3 | 🔴 Vulnerable |
Process
- Setup: Read
security.md, CLAUDE.md, identify scope files
- Analyze: For EACH OWASP category → run searches → verify (no false positives) → classify severity
- Multi-Tenant: Check ALL queries filter
account_id, ID from JWT
- Report: Calculate score, group by severity, create
security-report.md
Output Template
# Security Audit Report
**Date:** [date] | **Scope:** [path]
## Score
| Category | Status | Findings |
|----------|--------|----------|
| Access Control | ✅/⚠️/❌ | X |
| Crypto | ✅/⚠️/❌ | X |
| Injection | ✅/⚠️/❌ | X |
| Auth | ✅/⚠️/❌ | X |
| Config | ✅/⚠️/❌ | X |
| XSS | ✅/⚠️/❌ | X |
| Deps | ✅/⚠️/❌ | X |
| **OVERALL** | **⚠️** | **X** |
## Critical Findings
### Finding #1
**Category:** [OWASP] | **Severity:** 🔴 | **File:** `path:line`
**Vulnerable Code:** [code]
**Impact:** [simple language]
**Recommendation:** [fix]
## Positive Points
- [good practices found]
## Priority Actions
1. [most urgent]
2. [second]
3. [third]
Rules
- Analyze ALL files in scope, check ALL OWASP categories, include exact line, explain impact simply
- Verify context to avoid false positives; do not flag minor findings without justification
- Report only — never auto-fix
- Avoid jargon without explanation
False Positive Prevention
Stack-specific protections (NestJS sanitization, Kysely parametrization, React escaping, etc.) and accepted patterns (e.g. process.env.NODE_ENV, internal .raw(), validated PartialType): consult CLAUDE.md for the project's stack and documented exceptions.
Project patterns:
- Check documented patterns
IConfigurationService is correct
- Don't report as violation if it follows the docs