Vulnerability Flow 🔬
| Tipo | Vulnerabilidade (CWE / OWASP / pentest finding) |
| Trigger | /scan-vuln → /analyze-vuln CWE-NN (ou OWASP-Axx) |
| Status | 🔬 experimental (v1.2.0) — promovido para estável após 2 pilotos OK |
| Agentes | vuln-triage → vuln-investigator → impact-analyzer → architecture-agent → builder-agent → test-validator → pr-generator → release-agent → learning-agent |
| Checkpoints humanos | 5 (o CP0 Ă© extra: o triage define o escopo das ondas) |
PrĂ©-requisitos: instalação concluĂda (00 — Instalação e Setup) e
/bootstrap-securityrodado (populacwe-catalog.mde os wrappers emtools/).
1. O que Ă© e quando usar
Diferente do Bug Flow, este fluxo trata classes inteiras de CWE — todas as instâncias de XSS, todas as conexões hardcoded, etc. — com um padrão único de fix.
Use quando:
- Há findings de SAST (Semgrep, Veracode), DAST (ZAP) ou relatório de pentest.
- O fix envolve uma classe de problema, nĂŁo um sintoma isolado.
- O ticket nasceu de auditoria de security.
- Regra prática: se o ticket tem cwe: ou label security/vulnerability, use este workflow.
Use o Bug Flow quando há 1 sintoma especĂfico com root cause Ăşnica e fix localizado.
2. Diferenças em relação ao Bug Flow
| Etapa | Bug Flow | Vulnerability Flow |
|---|---|---|
| Entrada | Ticket com sintoma | Scan multi-fonte (Semgrep + Veracode + pentest) |
| Investigação | 1 root cause | Todas as instâncias da classe CWE |
| Pré-investigação | — | vuln-triage: dedup + FP filtering |
| Granularidade | 1 ticket = 1 sintoma | 1 ticket = 1 classe CWE |
| Fix | Patch focado | PadrĂŁo Ăşnico cobrindo N arquivos |
| Wave residual | — | Wave-N permitido quando scanner posterior revela residual |
| Gate adicional | Code review | + /security-review + re-scan SAST com 0 findings |
| Speckit update | known-issues | + cwe-catalog.md (obrigatório — gate) |
architecture-agent,builder-agent,test-validator,pr-generator,release-agentelearning-agentsão reusados sem alteração — apenas leem inputs diferentes.
3. VisĂŁo geral do fluxo
/scan-vuln
└── vuln-triage → VulnInventory (multi-fonte, dedup, FPs)
↓
⚡ CHECKPOINT 0 — humano valida classes e ondas
/analyze-vuln CWE-NN (ou OWASP-Axx)
└── vuln-investigator → VulnReport por classe (hipóteses L1–L4)
└── impact-analyzer → ImpactReport (blast radius dos N arquivos)
↓
⚡ CHECKPOINT 1 — humano aprova padrão único de fix
↓
/generate-fix <ticket> → architecture-agent (+Mini RFC) + builder-agent (todas as instâncias)
↓
⚡ CHECKPOINT 2 — humano revisa o patch
↓
/run-regression <ticket> → test-validator (+ re-scan SAST = 0 findings)
↓
/open-pr <ticket> → pr-generator + /security-review (gate adicional)
↓
⚡ CHECKPOINT 3 — reviewer aprova (dupla aprovação se utilitário cross-cutting)
↓
/release-check <ticket> → release-agent (fast-track de security disponĂvel)
↓
⚡ CHECKPOINT 4 — humano aprova o deploy
↓
[deploy via pipeline] → learning-agent → atualiza cwe-catalog.md + anti-patterns + metrics
4. Passo a passo
Passo 0 — /scan-vuln [flags] — vuln-triage
- LĂŞ
.claude/.local-config.json(blocosveracodeesemgrep). - Invoca os wrappers
tools/semgrep/Run-SemgrepScan.ps1e/outools/veracode/Get-VeracodeFlaws.ps1. - LĂŞ os JSONs em
.ns-flow/discovery/(+--include-pentest=<path>opcional). - Deduplica por
arquivo:linha:cwee descarta FPs (utilitários endurecidos + heurĂsticas docwe-catalog.md). - Atribui status a cada finding:
open/closed-via-commit-{SHA}/dismissed-fp/backlog. - Propõe waves por alavanca (config first, design last).
Output:
.ns-flow/discovery/<TICKET_ID>-vuln-inventory.md(se não houver ticket, o/scan-vulnusa um ID temporárioSCAN-YYYY-MM-DD-HHMM).
Modos: auto (padrĂŁo), --fallback, --semgrep-only, --veracode-only,
--include-pentest=<path>, --veracode-app=<nome>.
Passo 1 — ⚡ Checkpoint 0 (escopo)
Humano valida classes CWE, proposta de waves, FPs descartados (amostral) e re-classificações. Se OK,
abre tickets <prefixo>-NNN por wave/classe.
Passo 2 — /analyze-vuln CWE-NN [<ticket>] (ou OWASP-Axx) — vuln-investigator
- Hipóteses L1–L4 (config → cookies → output → estrutural) antes de qualquer Grep.
- Lê todas as instâncias
openda classe e confirma cada uma no código (não confia no scanner). - Identifica padrão único de fix e o utilitário interno seguro (ou propõe criar).
- Lista CIAs/tenants afetados (multi-tenant) e define o ciclo RED→GREEN.
Output:
.ns-flow/analysis/<ticket>-cwe<NN>-vulnreport.md+...-cwe<NN>-impact.md
Wave-N: se a classe já tem VulnReport anterior, o agente renomeia o anterior para
...-wave1-vulnreport.mde gera o novo como atual, preservando linhagem auditável.
Passo 3 — ⚡ Checkpoint 1 (padrão único)
Humano valida: padrão cobre todas as instâncias? Utilitário é canônico? L1 tentado antes de L3? CIAs completos? Dependências de infra listadas?
Passos 4–7 — Reuso do Bug Flow
IdĂŞnticos ao Bug Flow — incluindo a Esteira de Qualidade (Gates 1/2/3 + /qa-gate). Diferenças mĂnimas:
- /run-regression: alĂ©m do Gate 1 (1a cobertura + 1b execucao no dev), test-validator acrescenta re-scan /scan-vuln --semgrep-only e exige 0 findings da classe-alvo (gate de segurança especĂfico, complementar aos 4 gates).
- /open-pr: pr-generator invoca /security-review como gate — findings ≥ MEDIUM bloqueiam.
- /release-check: release-agent aplica release-policy.md com fast-track para severidade
ALTA/CRĂŤTICA.
Passo 8 — Pós-deploy — learning-agent
- Atualiza
.speckit/known-issues/cwe-catalog.md(cria entrada CWE-NN se não existia — gate). - Atualiza
anti-patterns.md(padrão vulnerável novo) erisk-map.md(arquivos do inventário). - Grava em
metrics-feed.jsonl(type: "vulnerability", cwe, wave, findings_closed, fps_dismissed...). - Se há wave próxima planejada → cria item no backlog do squad.
5. Checkpoints humanos
| # | Quando | Quem aprova | Verifica |
|---|---|---|---|
| 0 | ApĂłs triage | Security/TL | Classes corretas? Waves adequadas (config first)? FPs realmente FPs? |
| 1 | Após análise por classe | Security/TL | Padrão cobre todas as instâncias? Utilitário canônico? CIAs completos? |
| 2 | ApĂłs patch | Reviewer | Patch aplica o padrĂŁo Ăşnico em todos os arquivos? |
| 3 | No PR | Reviewer (dupla se utilitário) | /security-review passou? Re-scan = 0 findings? |
| 4 | Antes do deploy | Responsável de release | Gates ✅? Fast-track aplicável? |
6. Pastas e arquivos gerados
| Etapa | Arquivo |
|---|---|
| Inventário | .ns-flow/discovery/<ticket>-vuln-inventory.md |
| Scans brutos | .ns-flow/discovery/semgrep.json, .ns-flow/discovery/veracode-flaws.json |
| VulnReport por classe | .ns-flow/analysis/<ticket>-cwe<NN>-vulnreport.md |
| Impacto | .ns-flow/analysis/<ticket>-cwe<NN>-impact.md |
| Patch / Validação / PR / Release | mesmos do Bug Flow (.ns-flow/delivery/) |
| Encerramento | cwe-catalog.md (gate) + anti-patterns.md + metrics-feed.jsonl |
7. Aplicação pelo time (papéis)
| Papel | Responsabilidade |
|---|---|
| Security / AppSec | Roda /scan-vuln, valida escopo e waves (CP0), aprova padrĂŁo Ăşnico (CP1) |
| Dev | Aplica o padrão único em todas as instâncias via /generate-fix |
| Reviewer | Aprova PR + /security-review (CP3); dupla aprovação se utilitário cross-cutting |
| Release | Aprova deploy com fast-track quando ALTA/CRĂŤTICA (CP4) |
8. MĂ©tricas especĂficas
| Métrica | Target (maduro) |
|---|---|
| FP-rate por scanner | Semgrep < 95%, Veracode < 30% após calibração |
| Cycle time por classe | ≤ 5 dias para classes ≤ 50 findings |
| Regressões pós-deploy | 0 |
| Cobertura de CIAs | 100% |
ReferĂŞncias
- Definição canônica:
.claude/workflows/vulnerability-flow.md - Comandos:
/scan-vuln,/analyze-vuln,/bootstrap-security