Files
SlipItIn/.github/skills/security-specialist/steering/full-scan.md
Tim Krampitz 01046b01e4 Neue Skills, Referenzen & OpenWiki-Doku integriert
Umfangreiche Erweiterung der Skill-Bibliothek: Neue Skills für Humanisierung (Englisch/PT-BR), Design-Validierung, AI-SEO und Coolify-Deployment inkl. Regelwerke, Presets, Pattern-Referenzen, Testfälle und Automatisierungsskripte. Zusätzliche Skills für Revenue-Centric Design, Pier Cloud, OKF, Lebenslauf- und LinkedIn-Optimierung sowie zahlreiche Referenzdateien, Checklisten und YAML/JSON/Markdown-Templates. Einführung einer vollständigen OpenWiki-Dokumentation mit Architektur-, Domain- und Workflow-Beschreibungen, zentralem Index und automatisierten Updates. Modularer Aufbau, restriktive Lizenzen und umfassende Qualitäts- und Evaluationsmechanismen für alle neuen Inhalte.
2026-07-26 14:00:58 +02:00

189 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Full Repository Security Scan
## Propósito
Auditoria de segurança estruturada de um repositório inteiro. Pipeline de 6 fases com agentes paralelos, validação adversarial, e verificação independente.
---
## Pipeline de 6 Fases
```
Phase 1: Recon → architecture.md (agentes paralelos mapeiam o alvo)
Phase 2: Hunt → findings brutos (agentes paralelos por attack class)
Phase 3: Validate → findings confirmados (adversarial — tenta DISprovar)
Phase 4: Report → security-report.html + report.json
Phase 5: Schema → findings.json validado contra report-schema.json
Phase 6: Verify → verificação independente de cada claim factual
```
---
## Phase 1: Reconnaissance
Lance **múltiplos agentes em paralelo** para mapear aspectos diferentes do codebase:
**Agent 1a: Overview, stack e baseline comparável**
- O que é esta aplicação? Que tipo de software?
- Quem usa e como? (end users, devs, operadores, outros services)
- Tech stack? (languages, frameworks, databases, runtime, deployment model)
- Qual software mainstream comparável existe? Que tradeoffs de security o comparável aceita?
- Estrutura de diretórios high-level com file paths para entry points chave
**Agent 1b: Trust boundaries e access control**
- Trust boundaries — onde input não-confiável entra? (HTTP, CLI, file reads, IPC, message queues, env vars, config)
- Authentication — como callers provam identidade?
- Authorization — como permissions são enforced?
- Privilege separation — roda como root? Drop privileges? Sandboxing?
- Bypass mechanisms (dev-only modes, test helpers, setup flows, debug flags)
**Agent 1c: Input surface inventory**
- Network-facing surfaces (HTTP endpoints, gRPC, WebSocket, TCP/UDP) com method/verb e propósito
- File-based input (uploads, config parsing, import/export)
- IPC e inter-service (message queues, shared memory, Unix sockets, env vars, CLI args)
- User-generated content surfaces
- External integrations (OAuth, webhooks, third-party APIs, plugin loading, dynamic code execution)
- Todos os lugares onde input alcança dangerous sinks
### Síntese
Colete outputs dos 3 agentes e sintetize em `architecture.md`:
- 1-2 páginas com application type, tech stack, trust model, input surfaces, baseline comparável
- Key file paths de todos agentes — starting points para Phase 2
- Se codebase é maior/mais complexo que esperado (plugin system, multi-tenant, complex auth chains), lance agentes adicionais antes de prosseguir
### Multi-Run Additive
Se runs anteriores existem (cheque `.security/scans/`):
1. **Skip known findings** — não re-descubra o mesmo bug. Mencione prior findings no report mas foque hunting em ground novo.
2. **Target gaps** — se runs anteriores focaram em injection e auth, pese este run para business logic, creative attacks, e wildcard.
3. **Resolve disagreements** — se runs anteriores deram verdicts conflitantes no mesmo finding, valide definitivamente.
Se nenhum run anterior existe, note no report que coverage melhora com runs adicionais.
---
## Phase 2: Hunt
Siga `steering/hunting.md` para:
- Selecionar attack classes relevantes ao application type
- Lançar agentes paralelos (um por classe × subsistema)
- Cada agente recebe architecture.md + hunting methodology + validation rules
- Agentes podem spawnar sub-agents para deep dives
---
## Phase 3: Validate (Adversarial)
**Consolidar duplicatas primeiro** — Phase 2 deliberadamente overlapa scopes.
Para cada finding restante, lance um **agente de validação separado** que tenta **DISprovar** o finding:
```
Seu trabalho é DISPROVAR este finding. Leia o source code real em cada step.
Se não conseguir disprovar, confirme com o código exato que o torna explorável.
Retorne um de:
- "CONFIRMED: [explicação com code evidence]"
- "REJECTED: [o que o finding errou, com code evidence]"
```
**Testes de validação:**
1. **Exploitation test**: Leia o código real em cada step do trace. O data flow funciona como claimed? Pode construir o exact input que triggera?
2. **Impact test**: O que o atacante realmente ganha? Se "aprende field names" ou "causa error" = LOW máximo.
3. **Baseline test**: O comparável tem o mesmo pattern? Se sim, foi explorado? Se nunca explorado em anos de produção, entenda por quê antes de reportar.
4. **Mitigation test**: Existe outra layer que previne exploitation? Cheque middleware, DB constraints, framework defaults.
5. **Parser/runtime behavior test**: Se o exploit depende de como parser/runtime handles input específico, verifique contra spec ou implementação — não reasoning from intuition.
**Kill false positives agressivamente, mas não mate findings reais.** Report curto com 3 findings reais vale mais que report longo com 30 teóricos.
---
## Phase 4: Report
Gere o report usando `steering/reporting.md`. Siga `references/report-format.md` para o HTML.
Adições ao report padrão para full-scan com pipeline:
- Seção de coverage: quais attack classes foram exercitadas, quais subsistemas
- Seção de findings rejeitados (colapsável): mostra rigor sem cluttering findings reais
- Positive patterns: o que o codebase faz bem (calibra confiança na auditoria)
---
## Phase 5: Structured Output e Schema Check
Para cada finding que sobreviveu Phase 3, produza JSON conformando ao schema em `references/report-schema.json`.
1. Leia `references/report-schema.json` antes de escrever output. Siga exatamente — `additionalProperties: false` enforced.
2. Para cada finding, popule todo required field. Se não pode preencher `trace` com real file paths e line numbers verificados, o finding não está suficientemente verificado — volte e verifique ou rejeite.
3. Valide com: `node scripts/validate-findings.cjs <output>/findings.json`
4. Fix qualquer falha antes de prosseguir.
Escreva em: `.security/scans/<timestamp>/findings.json`
---
## Phase 6: Independent Verification
O structured output de Phase 5 força self-validation, mas o mesmo agente que escreveu o finding também escreveu o JSON. Esta phase usa agentes frescos para verificar independentemente.
Lance **um agente por finding confirmado**, todos em paralelo:
```
Você é um verificador independente. Você NÃO escreveu este finding.
Seu trabalho é ler o source code real e verificar que todo claim factual está correto.
1. Leia file e line number citados em CADA trace step. Verifique:
- File existe no path citado
- Line number corresponde ao código descrito
- Scope (function name) está correto
- Description reflete acuradamente o que o código faz
2. Verifique root_cause lendo o file citado e confirmando que o defeito descrito existe.
3. Verifique execution payloads:
- Endpoint existe na URL claimed?
- HTTP method corresponde?
- Input passaria validation como descrito?
- Auth/access checks passariam como descrito?
4. Verifique conditions — há pré-requisitos que o finding não mencionou?
5. Cheque remediation code_changes — o fix preveniria o ataque sem quebrar funcionalidade normal?
Retorne um de:
- "VERIFIED" — todos claims checked contra source
- "CORRECTED: [field]: [errado] → [correto]"
- "REJECTED: [razão]"
```
Aplique correções:
- **VERIFIED**: nenhuma mudança
- **CORRECTED**: atualize campos específicos, re-run schema validation
- **REJECTED**: mude verdict para `"rejected"` ou remova
Após correções, reconcilie deliverables: atualize HTML report e findings.json para que não discordem.
---
## Inicialização e Persistência
```bash
python3 scripts/scan_db.py init --repo <path>
```
Findings são persistidos no SQLite durante todo o processo. O `finalize.py` sela ambos os formatos (JSON + HTML) no final.
---
## Completion Criteria
O scan está completo quando:
- [ ] Phase 1 produziu architecture.md com trust model e input surfaces
- [ ] Phase 2 exercitou attack classes relevantes com agentes paralelos
- [ ] Phase 3 validou adversarially cada finding (confirmado ou rejeitado)
- [ ] Phase 4 produziu HTML report conforme template
- [ ] Phase 5 produziu findings.json válido contra schema
- [ ] Phase 6 verificou independentemente cada claim factual
- [ ] Report e findings.json concordam (sem discrepâncias)