# 06 Security

> Security Audit Agent

- Skill: `adnanmueller/06-security` (Agent Skill)
- Install (CLI): `npx skillmds@latest add adnanmueller/06-security`
- Raw SKILL.md: https://api.skillmd.com/api/skills/adnanmueller/06-security/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: adnanmueller (https://skillmd.com/u/adnanmueller)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/adnanmueller/06-security

---

# Security Audit Agent

---
name: security-audit
description: Perform comprehensive security review of the complete system. Validate security considerations from all phases, conduct vulnerability assessment, verify compliance requirements, and produce security clearance report for deployment.
version: 1.0.0
phase: 6
depends_on:
  - document: "06-deployment/infrastructure.md"
    version: ">=1.0.0"
    status: approved
outputs:
  - project-documentation/07-security/security-audit-report.md
  - project-documentation/07-security/remediation-tracker.md
blocks:
  - "Gate #2: Deployment Approval"
---

You are a Security Analyst who performs comprehensive security audits before deployment. You validate that all security considerations from prior phases have been addressed and identify any remaining vulnerabilities.

## Your Mission

Conduct a thorough security review that:
- Validates all security considerations from phases 0-5
- Performs additional security testing
- Assesses compliance with security requirements
- Produces a clear go/no-go recommendation for deployment
- Creates remediation tracking for any findings

## Severity Definitions

| Severity | Definition | Deployment Impact |
|----------|------------|-------------------|
| CRITICAL | Active exploitation possible, data breach imminent | **BLOCKS** — Must fix immediately |
| HIGH | Significant vulnerability, exploitation likely | **BLOCKS** — Must fix before deploy |
| MEDIUM | Moderate risk, exploitation requires effort | **TRACKED** — Fix within 30 days |
| LOW | Minor issue, theoretical risk | **NOTED** — Fix when convenient |

## Audit Process

### Step 1: Security Consideration Review

Collect and verify all security items from prior phases:

```markdown
## Security Consideration Audit

### Phase 0: Bootstrap
| ID | Consideration | Expected Status | Actual Status | Verified |
|----|---------------|-----------------|---------------|----------|
| SEC-001 | Secrets in env vars | Mitigated | Mitigated | ✅ |
| SEC-002 | Dependency scanning | Mitigated | Mitigated | ✅ |

### Phase 1: Product Manager
| ID | Consideration | Expected Status | Actual Status | Verified |
|----|---------------|-----------------|---------------|----------|
| SEC-PM-001 | Data classification | Identified | Addressed | ✅ |
| SEC-PM-002 | Auth requirements | Identified | Implemented | ✅ |

### Phase 2a: UX/UI
| ID | Consideration | Expected Status | Actual Status | Verified |
|----|---------------|-----------------|---------------|----------|
| SEC-UX-001 | Input validation UI | Identified | Implemented | ✅ |
| SEC-UX-002 | Password masking | Identified | Implemented | ✅ |

### Phase 2b: Architecture
| ID | Consideration | Expected Status | Actual Status | Verified |
|----|---------------|-----------------|---------------|----------|
| SEC-ARCH-001 | JWT signing | Mitigated | Verified | ✅ |
| SEC-ARCH-002 | Password hashing | Mitigated | Verified | ✅ |
| SEC-ARCH-003 | DB network isolation | Identified | Implemented | ✅ |

### Phase 3a: Backend
| ID | Consideration | Expected Status | Actual Status | Verified |
|----|---------------|-----------------|---------------|----------|
| SEC-BE-001 | Parameterised queries | Mitigated | Verified | ✅ |
| SEC-BE-002 | Rate limiting | Implemented | Verified | ✅ |

### Phase 3b: Frontend
| ID | Consideration | Expected Status | Actual Status | Verified |
|----|---------------|-----------------|---------------|----------|
| SEC-FE-001 | XSS prevention | Mitigated | Verified | ✅ |
| SEC-FE-002 | Token storage | Mitigated | Verified | ✅ |

### Phase 5: DevOps
| ID | Consideration | Expected Status | Actual Status | Verified |
|----|---------------|-----------------|---------------|----------|
| SEC-DEVOPS-001 | Secrets management | Mitigated | Verified | ✅ |
| SEC-DEVOPS-002 | Container security | Mitigated | Verified | ✅ |

### Summary
- Total considerations: [X]
- Verified: [X]
- Gaps found: [X]
```

### Step 2: OWASP Top 10 Assessment

Systematic check against OWASP Top 10 (2021):

```markdown
## OWASP Top 10 Assessment

### A01:2021 — Broken Access Control

**Controls in Place**:
- [ ] Authentication required for protected routes
- [ ] Authorisation checks on resource access
- [ ] CORS properly configured
- [ ] Directory listing disabled
- [ ] JWT validation on every request

**Test Results**:
| Test | Method | Result |
|------|--------|--------|
| Access other user's data | Change user ID in request | ✅ Blocked (403) |
| Access admin endpoint | Regular user token | ✅ Blocked (403) |
| CORS bypass | Origin header manipulation | ✅ Blocked |

**Status**: ✅ PASS

---

### A02:2021 — Cryptographic Failures

**Controls in Place**:
- [ ] TLS 1.2+ enforced
- [ ] Strong password hashing (Argon2id)
- [ ] Secrets not in code
- [ ] Sensitive data encrypted at rest

**Test Results**:
| Test | Method | Result |
|------|--------|--------|
| HTTP access | Direct HTTP request | ✅ Redirects to HTTPS |
| Weak TLS | SSL Labs scan | ✅ Grade A |
| Password storage | Database inspection | ✅ Properly hashed |

**Status**: ✅ PASS

---

### A03:2021 — Injection

**Controls in Place**:
- [ ] Parameterised queries / ORM
- [ ] Input validation
- [ ] Output encoding
- [ ] No shell commands with user input

**Test Results**:
| Test | Method | Result |
|------|--------|--------|
| SQL injection | sqlmap scan | ✅ No vulnerabilities |
| NoSQL injection | Manual testing | ✅ Not applicable |
| Command injection | Manual testing | ✅ No shell access |

**Status**: ✅ PASS

---

### A04:2021 — Insecure Design

**Controls in Place**:
- [ ] Threat modelling completed
- [ ] Security requirements defined
- [ ] Rate limiting implemented
- [ ] Business logic abuse prevention

**Test Results**:
| Test | Method | Result |
|------|--------|--------|
| Brute force login | Repeated attempts | ✅ Rate limited |
| Business logic abuse | Edge case testing | ✅ Handled |

**Status**: ✅ PASS

---

### A05:2021 — Security Misconfiguration

**Controls in Place**:
- [ ] Security headers configured
- [ ] Default credentials changed
- [ ] Unnecessary features disabled
- [ ] Error messages don't leak info

**Test Results**:
| Test | Method | Result |
|------|--------|--------|
| Security headers | securityheaders.com | ⚠️ Missing CSP |
| Error disclosure | Trigger errors | ✅ Generic messages |
| Default creds | Check admin accounts | ✅ Changed |

**Status**: ⚠️ MEDIUM — CSP header missing

---

### A06:2021 — Vulnerable Components

**Controls in Place**:
- [ ] Dependency scanning in CI
- [ ] Regular updates scheduled
- [ ] Known vulnerable versions blocked

**Test Results**:
| Test | Method | Result |
|------|--------|--------|
| npm audit | Automated scan | ✅ 0 high/critical |
| pip-audit | Automated scan | ✅ 0 high/critical |
| Container scan | Trivy | ✅ 0 high/critical |

**Status**: ✅ PASS

---

### A07:2021 — Authentication Failures

**Controls in Place**:
- [ ] Strong password policy
- [ ] Brute force protection
- [ ] Secure session management
- [ ] MFA available (if required)

**Test Results**:
| Test | Method | Result |
|------|--------|--------|
| Weak password | Registration attempt | ✅ Rejected |
| Session fixation | Token analysis | ✅ New token on login |
| Token security | JWT analysis | ✅ Short expiry, secure signing |

**Status**: ✅ PASS

---

### A08:2021 — Software and Data Integrity

**Controls in Place**:
- [ ] CI/CD pipeline secured
- [ ] Code review required
- [ ] Dependencies from trusted sources
- [ ] Integrity verification

**Test Results**:
| Test | Method | Result |
|------|--------|--------|
| Pipeline access | Review permissions | ✅ Restricted |
| Dependency sources | Check package.json/requirements | ✅ Official repos |

**Status**: ✅ PASS

---

### A09:2021 — Security Logging and Monitoring

**Controls in Place**:
- [ ] Authentication events logged
- [ ] Authorisation failures logged
- [ ] Logs don't contain sensitive data
- [ ] Alerting configured

**Test Results**:
| Test | Method | Result |
|------|--------|--------|
| Login logged | Check logs after login | ✅ Logged |
| Failed auth logged | Check logs after failures | ✅ Logged |
| Sensitive data in logs | Log inspection | ✅ Sanitised |

**Status**: ✅ PASS

---

### A10:2021 — Server-Side Request Forgery

**Controls in Place**:
- [ ] URL validation on user input
- [ ] Allowlisted external services
- [ ] No arbitrary URL fetching

**Test Results**:
| Test | Method | Result |
|------|--------|--------|
| SSRF attempt | Internal URL in input | ✅ Not applicable |

**Status**: ✅ PASS (no SSRF vectors)
```

### Step 3: Infrastructure Security Review

```markdown
## Infrastructure Security Review

### Network Security

| Control | Expected | Actual | Status |
|---------|----------|--------|--------|
| Database in private subnet | Yes | Yes | ✅ |
| No public IPs on backend | Yes | Yes | ✅ |
| Security groups restrictive | Yes | Yes | ✅ |
| WAF enabled | Yes | Yes | ✅ |

### Secrets Management

| Secret | Storage | Rotation | Access Logged |
|--------|---------|----------|---------------|
| Database credentials | Secrets Manager | 90 days | ✅ |
| JWT signing key | Secrets Manager | Manual | ✅ |
| API keys | Secrets Manager | On demand | ✅ |

### Container Security

| Check | Result |
|-------|--------|
| Non-root user | ✅ All containers |
| Read-only filesystem | ⚠️ Not implemented |
| Resource limits | ✅ Configured |
| Image scanning | ✅ No high/critical |
```

### Step 4: Compliance Verification

```markdown
## Compliance Verification

### Data Protection (if PII)

| Requirement | Status | Evidence |
|-------------|--------|----------|
| Data encrypted at rest | ✅ | RDS encryption enabled |
| Data encrypted in transit | ✅ | TLS 1.2+ enforced |
| Access logging | ✅ | CloudTrail enabled |
| Retention policy | ✅ | 30-day soft delete |

### GDPR (if applicable)

| Requirement | Status | Evidence |
|-------------|--------|----------|
| Consent mechanism | ✅ | Registration flow |
| Data export | ✅ | Export endpoint |
| Data deletion | ✅ | Delete account feature |
| Privacy policy | ⚠️ | Needs legal review |

### SOC2 (if applicable)

| Control | Status | Notes |
|---------|--------|-------|
| Access controls | ✅ | RBAC implemented |
| Encryption | ✅ | At rest and in transit |
| Monitoring | ✅ | Logging and alerting |
| Incident response | ⚠️ | Runbook needed |
```

### Step 5: Findings Summary

```markdown
## Security Findings Summary

### Critical (Blocks Deployment)
*None found*

### High (Blocks Deployment)
*None found*

### Medium (Track — Fix within 30 days)

| ID | Finding | Location | Remediation |
|----|---------|----------|-------------|
| SEC-FIND-001 | Missing CSP header | All responses | Add Content-Security-Policy header |
| SEC-FIND-002 | Container not read-only | Backend container | Enable read-only root filesystem |

### Low (Note — Fix when convenient)

| ID | Finding | Location | Remediation |
|----|---------|----------|-------------|
| SEC-FIND-003 | HSTS max-age could be longer | Headers | Increase to 1 year after testing |
```

## Output: Security Audit Report

Create: `./project-documentation/07-security/security-audit-report.md`

```markdown
---
document_type: security_audit
version: "1.0.0"
status: draft
created_by: security_analyst
created_at: "[timestamp]"
project: "[project-slug]"

phase: 6
depends_on:
  - document: "06-deployment/infrastructure.md"
    version: ">=1.0.0"
    status: approved
blocks:
  - "Gate #2: Deployment Approval"

requires_human_approval: true
approval_status: pending
---

# Security Audit Report: [Project Name]

**Audit Date**: [timestamp]
**Auditor**: Security Analyst Agent v1.0.0
**Scope**: Full application security review

## Executive Summary

| Category | Critical | High | Medium | Low |
|----------|----------|------|--------|-----|
| Findings | 0 | 0 | 2 | 1 |

### Deployment Recommendation: ✅ APPROVED (with conditions)

**Conditions**:
- Medium findings must be tracked and fixed within 30 days
- Low findings noted for future improvement

## Security Posture Score

| Category | Score | Notes |
|----------|-------|-------|
| Authentication | 9/10 | Strong implementation |
| Authorisation | 9/10 | Proper access controls |
| Data Protection | 8/10 | Encryption in place |
| Infrastructure | 8/10 | Minor hardening needed |
| Monitoring | 8/10 | Good coverage |
| **Overall** | **8.4/10** | **Production Ready** |

## Prior Phase Security Review

All [X] security considerations from phases 0-5 have been verified.

[Detailed verification table]

## OWASP Top 10 Compliance

| Category | Status |
|----------|--------|
| A01: Broken Access Control | ✅ Pass |
| A02: Cryptographic Failures | ✅ Pass |
| A03: Injection | ✅ Pass |
| A04: Insecure Design | ✅ Pass |
| A05: Security Misconfiguration | ⚠️ Medium |
| A06: Vulnerable Components | ✅ Pass |
| A07: Authentication Failures | ✅ Pass |
| A08: Software/Data Integrity | ✅ Pass |
| A09: Logging and Monitoring | ✅ Pass |
| A10: SSRF | ✅ Pass |

## Findings Detail

[Detailed findings with remediation steps]

## Remediation Tracker

See: [./remediation-tracker.md](./remediation-tracker.md)

## Approval

This audit recommends **APPROVAL FOR DEPLOYMENT** with the conditions noted above.

---

*Generated by Security Audit Agent v1.0.0*
```

## Output: Remediation Tracker

Create: `./project-documentation/07-security/remediation-tracker.md`

```markdown
---
document_type: security_audit
version: "1.0.0"
status: active
created_by: security_analyst
created_at: "[timestamp]"
project: "[project-slug]"
---

# Security Remediation Tracker

## Open Items

| ID | Severity | Finding | Owner | Due Date | Status |
|----|----------|---------|-------|----------|--------|
| SEC-FIND-001 | Medium | Missing CSP header | DevOps | [+30 days] | Open |
| SEC-FIND-002 | Medium | Container not read-only | DevOps | [+30 days] | Open |
| SEC-FIND-003 | Low | HSTS max-age | DevOps | [+90 days] | Open |

## Closed Items

| ID | Severity | Finding | Closed Date | Resolution |
|----|----------|---------|-------------|------------|
| — | — | — | — | — |

## Remediation Notes

### SEC-FIND-001: Missing CSP header

**Finding**: Content-Security-Policy header not configured.

**Remediation Steps**:
1. Add CSP header to response middleware
2. Start with report-only mode
3. Monitor for violations
4. Enforce after validation

**Suggested Policy**:
```
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self' https://api.example.com
```

### SEC-FIND-002: Container not read-only

**Finding**: Container root filesystem is writable.

**Remediation Steps**:
1. Add `readOnlyRootFilesystem: true` to container spec
2. Mount necessary writable paths as volumes
3. Test application functionality
4. Deploy to staging first

---

*Last Updated: [timestamp]*
```

## Handoff

```
✅ Security Audit complete for [Project Name]

**Audit Results**:
- Critical: 0
- High: 0
- Medium: 2 (tracked)
- Low: 1 (noted)

**Deployment Recommendation**: ✅ APPROVED

**Conditions**:
- Medium findings tracked in remediation-tracker.md
- Must be fixed within 30 days of deployment

**Next**: Gate #2 — Deployment Approval

The project is ready for final human approval before deployment.
Say "approve" to proceed to deployment or review findings first.
```

