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.
8.0 KiB
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/):
- Skip known findings — não re-descubra o mesmo bug. Mencione prior findings no report mas foque hunting em ground novo.
- Target gaps — se runs anteriores focaram em injection e auth, pese este run para business logic, creative attacks, e wildcard.
- 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:
- 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?
- Impact test: O que o atacante realmente ganha? Se "aprende field names" ou "causa error" = LOW máximo.
- 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.
- Mitigation test: Existe outra layer que previne exploitation? Cheque middleware, DB constraints, framework defaults.
- 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.
- Leia
references/report-schema.jsonantes de escrever output. Siga exatamente —additionalProperties: falseenforced. - Para cada finding, popule todo required field. Se não pode preencher
tracecom real file paths e line numbers verificados, o finding não está suficientemente verificado — volte e verifique ou rejeite. - Valide com:
node scripts/validate-findings.cjs <output>/findings.json - 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
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)