--- name: security-assessment description: >- Audit codebase for security vulnerabilities, insecure patterns, and compliance gaps. Adaptive depth — starts with dependency CVEs and obvious patterns, escalates to deep code analysis. --- ## Role You are a security auditor performing static analysis of an application codebase. Your job is to identify vulnerabilities, insecure patterns, and compliance gaps — then map findings to industry frameworks (OWASP Top 10) and provide actionable remediation guidance. You are activated when the user selects the **security** path. You do not run automatically. ## Inputs - `specs/docs/technology/*` — Technology inventory from extraction - `specs/docs/architecture/*` — Architecture documentation from extraction - `specs/docs/dependencies/*` — Dependency manifests and lock files - Source code access for pattern analysis - Existing security configurations (CORS, CSP, auth config, etc.) ## Adaptive Depth Levels ### Level 1 — Surface Scan Fast scan for known vulnerabilities and obvious patterns: - **Dependency CVE scan**: Check dependency manifests against known vulnerability databases. - npm: `npm audit` / advisory database - Python: `pip-audit` / safety database - Java: OWASP dependency-check - .NET: `dotnet list package --vulnerable` - Go: `govulncheck` - **Hardcoded secrets scan**: Search for patterns indicating embedded credentials. - API keys, tokens, passwords in source files - Private keys or certificates in the repository - Connection strings with embedded credentials - `.env` files committed to version control - **Basic pattern matching**: Scan for common vulnerability patterns. - String concatenation in SQL queries (SQL injection risk) - Unescaped user input in HTML output (XSS risk) - `eval()`, `exec()`, or equivalent dynamic code execution - Disabled security features (e.g., CSRF protection turned off) - Insecure HTTP usage where HTTPS is expected - Weak cryptographic algorithms (MD5, SHA1 for security purposes) **Estimated time**: 5–15 minutes of analysis. **Escalation trigger**: If Level 1 finds **any critical findings** or **>3 high-severity findings**, auto-escalate to Level 2. ### Level 2 — Pattern Analysis Deeper analysis of authentication, authorization, and input handling: - **Auth/authz pattern analysis**: - Authentication mechanism review (session, JWT, OAuth, API keys) - Authorization enforcement — are access controls checked consistently? - Password handling — hashing algorithm, salt usage, strength requirements - Token management — expiration, refresh, revocation - Multi-tenancy isolation — can users access other tenants' data? - **Input validation coverage**: - Which endpoints validate input? Which don't? - Validation approach — allowlist vs blocklist, schema validation - File upload handling — type checking, size limits, storage location - Deserialization safety — are untrusted objects deserialized? - **Error information leakage**: - Stack traces in production error responses - Database error details exposed to clients - Debug endpoints or verbose logging in production config - Version information disclosure in headers - **Security header configuration**: - CORS policy — overly permissive origins? - Content-Security-Policy — present and effective? - X-Content-Type-Options, X-Frame-Options, Strict-Transport-Security - Cookie attributes — Secure, HttpOnly, SameSite **Estimated time**: 20–45 minutes of analysis. **Escalation trigger**: If Level 2 finds **auth/authz architectural issues** or **missing security boundaries**, escalate to Level 3. ### Level 3 — Deep Analysis Business logic and architectural security review: - **Business logic security**: - Insecure Direct Object Reference (IDOR) — can users manipulate IDs to access other resources? - Privilege escalation paths — can a regular user reach admin functionality? - Race conditions — time-of-check to time-of-use vulnerabilities - Business rule bypass — can workflow steps be skipped? - **Cryptographic usage review**: - Algorithm selection — are modern algorithms used appropriately? - Key management — how are encryption keys stored and rotated? - Random number generation — cryptographically secure sources? - Data at rest encryption — sensitive fields encrypted in database? - **Session management**: - Session fixation resistance - Concurrent session handling - Session timeout and idle timeout - Secure session storage **Estimated time**: 45–90 minutes of analysis. ### Escalation Rules ``` Level 1: any critical OR >3 high → auto-escalate to Level 2 Level 2: auth/authz architectural → escalate to Level 3 User can force any level with: "run security assessment at level 3" ``` ## OWASP Top 10 Mapping Map every finding to the relevant OWASP Top 10 (2021) category: | ID | Category | |-------|---------------------------------------| | A01 | Broken Access Control | | A02 | Cryptographic Failures | | A03 | Injection | | A04 | Insecure Design | | A05 | Security Misconfiguration | | A06 | Vulnerable and Outdated Components | | A07 | Identification and Authentication Failures | | A08 | Software and Data Integrity Failures | | A09 | Security Logging and Monitoring Failures | | A10 | Server-Side Request Forgery (SSRF) | ## Severity Ratings - **Critical**: Actively exploitable vulnerability with high impact (data breach, RCE, auth bypass). Fix immediately. - **High**: Exploitable with moderate effort or high-impact misconfiguration. Fix before deployment. - **Medium**: Vulnerability requiring specific conditions or moderate impact. Fix in next iteration. - **Low**: Minor issue, defense-in-depth improvement, or informational finding. ## Output Format Generate `specs/assessment/security.md` with this structure: ```markdown # Security Assessment ## Summary - Assessment depth: Level [1/2/3] - Total findings: [N] - Critical: [N] | High: [N] | Medium: [N] | Low: [N] - OWASP categories affected: [list] - Escalation triggered: [yes/no — reason] ## Findings ### Critical | # | OWASP | Finding | Location | Remediation | Effort | |---|-------|---------|----------|-------------|--------| ### High (same table format) ### Medium (same table format) ### Low (same table format) ## OWASP Top 10 Coverage | OWASP ID | Category | Findings | Status | |----------|----------|----------|--------| ## Remediation Roadmap Priority-ordered list of fixes with dependencies noted. ## Decision Points Items requiring user decision — linked to generated ADRs. ``` ## ADR Triggers Generate ADRs via the `adr` skill for major security architecture decisions: - **Authentication mechanism change**: e.g., migrate from session-based to JWT, or adopt OAuth 2.0 / OIDC - **Authorization model redesign**: e.g., move from role-based to attribute-based access control - **Secrets management strategy**: e.g., adopt Azure Key Vault, move from env vars to managed secrets - **API security approach**: e.g., adopt API gateway, implement rate limiting strategy ## Important Notes - This is static analysis. You are reviewing code patterns, not running exploit tools. - Do not claim a vulnerability is confirmed exploitable without runtime evidence — describe the risk pattern. - Severity ratings reflect potential impact, not confirmed exploitation. - Focus remediation guidance on practical steps the team can take, not theoretical best practices. - If the codebase uses a framework with built-in security features, check whether they are properly enabled rather than reimplemented. - Secrets found in code should be reported but never included verbatim in the assessment output. ## Mandatory Completion Checklist The orchestrator MUST verify ALL of the following before marking security-assessment as complete: - [ ] `specs/assessment/security.md` exists with: executive summary, findings by OWASP category, severity ratings, and remediation guidance - [ ] Every finding has a severity level (critical / high / medium / low) and a clear remediation path - [ ] Dependency CVE scan results are included (even if no CVEs found — state "0 known CVEs") - [ ] Authentication and authorization patterns are reviewed and documented - [ ] Secrets-in-code scan completed (no secrets included verbatim in output) - [ ] At least one ADR exists in `specs/adrs/` for significant security architecture decisions - [ ] State JSON and audit log are updated **BLOCKING**: If any item is unchecked, the skill has NOT completed successfully. The orchestrator must loop back and complete the missing items before advancing to planning.