Security review skill. Audits implementation against all 14 OWASP Secure Coding Practices categories. Cross-references spec security requirements. Uses web research to verify unfamiliar patterns.
This skill is invoked by the Review Coordinator as a subagent. It audits implementation code against the 14 OWASP Secure Coding Practices categories, cross-references the spec's security requirements, and uses web research for unfamiliar patterns.
Input contract (received via subagent prompt):
Constraints:
For each category, evaluate all applicable items. Mark items N/A with justification if they do not apply to the codebase.
Note: Many items in this category are N/A for high-level languages (Python, JavaScript, etc.). Mark as N/A with justification: "Managed language - memory handled by runtime."
After completing the OWASP checklist, cross-reference findings against the spec's security requirements:
Use #tool:web to verify unfamiliar security patterns when encountered during review.
Trusted domains (only fetch from these):
owasp.org - OWASP guidelines and checklistsnvd.nist.gov - National Vulnerability Database, CVE lookupDo NOT fetch arbitrary URLs from the codebase (NFR-006).
If web research fails, record WARN: "Unable to verify against external source" and continue with checklist-based review. Cite the source URL in the evidence field when web research informs a finding.
| Finding type | Severity |
|---|---|
| Exploitable vulnerability (SQL injection, XSS, hardcoded secret, missing auth, command injection) | FAIL |
| Missing input validation for user-controlled data | FAIL |
| Missing parameterized queries where SQL is used | FAIL |
| Hardcoded credentials or secrets in source | FAIL |
| Missing authentication on protected resources | FAIL |
| Non-critical security concern (missing cache headers, informational) | WARN |
| Missing HSTS or other optional security headers | WARN |
| Best practice not followed but not directly exploitable | WARN |
| Checklist item verified as correctly implemented | PASS |
| Checklist item not applicable to codebase | N/A (with justification) |
Critical rule: Findings MUST NOT reproduce actual secret values. For hardcoded secrets, cite the file and line and describe what was found (e.g., "API key found as string literal assigned to API_KEY variable") - do NOT include the value.
Write findings to the specified output path using this exact format:
---