
Auditor de segurança white-hat autônomo para revisão de código orientada por IA, pesquisa de bug bounty, construção de exploits e verificação fundamentada em execução.
configs/ - perfis de contexto opcionaisEstes arquivos JSON são opcionais, perfis de contexto livres de respostas. Eles não são modos do produto Flounder e não são carregados por padrão. Eles existem para casos onde um operador deseja deliberadamente dar ao modelo um referencial familiar para uma classe de alvo.
| Arquivo | Contexto opcional |
|---|---|
vulnerability-audit.default.json | contexto de auditoria de segurança genérico (independente de domínio) |
zk-constraint-audit.default.json | circuitos de conhecimento zero / sistemas de restrições |
solidity-contract-audit.default.json | contratos inteligentes Solidity / EVM |
thegraph-contracts.default.json | contratos do protocolo The Graph |
cairo-starknet-audit.default.json | contratos Cairo e componentes relacionados a Starknet |
Cada um é um esqueleto projectContext para aquela classe: o tipo de ativos, capacidades do atacante, limites de confiança, invariantes e áreas de foco que uma pilha conhecida tende a ter. O modelo ainda detém a estratégia de auditoria e a estrutura ainda exige prova de execução.
A estrutura nunca carrega estes por conta própria. Um flounder run / flounder map /
flounder audit padrão carrega nenhum conhecimento prévio de bugs: a execução é cega e baseada na execução, então o modelo tem que enumerar a superfície de ataque a partir da fonte real antes que qualquer ensaio de auditoria possa encontrar algo. Entregar ao modelo uma lista pré-escrita de onde os bugs geralmente vivem o enviesa para as áreas listadas e para longe das não listadas, e corre o risco de transformar a auditoria em correspondência de listas de verificação em vez de leitura. Isso é o oposto de como esta ferramenta deve encontrar novos bugs, então os perfis permanecem desligados a menos que você os solicite.
Eles existem para os casos onde essa troca vale a pena: uma classe de vulnerabilidade bem explorada onde semear a superfície comum é genuinamente útil, um orçamento limitado que precisa de uma vantagem inicial no foco/fora de escopo, ou definir rapidamente o escopo para uma pilha familiar. Os perfis Solidity/EVM e ZK são exemplos comuns de alto sinal. Nessas situações, opte ativamente:
flounder run --config ./configs/solidity-contract-audit.default.json \
--target my-protocol --source ./contracts --corpus ./docs
--config <arquivo> mescla na configuração de execução (applyConfigOverrides), então as flags de linha de comando a substituem — então --target / --source / --corpus / --max-steps que você passa na CLI vencem o arquivo. A partir de projectContext, apenas summary, focusAreas e outOfScope atualmente alcançam o modelo (incorporados em sua nota de escopo). Os campos mais ricos abaixo são documentação/esqueleto hoje — eles registram o modelo de ameaça para um autor humano, mas ainda não são injetados no prompt.
{
"targetName": "…",
"sourcePaths": [], // normalmente deixado vazio; passe o alvo real via --source
"corpusPaths": [], // normalmente deixado vazio; passe a documentação do próprio projeto via --corpus
"thinkingLevel": "xhigh",
"projectContext": {
"summary": "…", // ── injetado na nota de escopo do modelo
"focusAreas": ["…"], // ── injetado
"outOfScope": ["…"], // ── injetado
"criticalAssets": ["…"], // apenas esqueleto (declarados, ainda não enviados)
"attackerCapabilities": ["…"], // apenas esqueleto
"trustBoundaries": ["…"], // apenas esqueleto
"securityInvariants": ["…"], // apenas esqueleto
"scenarioGuidance": ["…"] // apenas esqueleto
}
}
Deixe sourcePaths / corpusPaths vazios no perfil e passe o alvo real e as especificações/documentação do próprio projeto na linha de comando. Um perfil é um enquadramento, não um substituto para o material real do alvo.
Um perfil é contexto, nunca um veredito. Pode dizer ao modelo onde olhar; não pode dizer ao modelo o que encontrará. A confirmação ainda vem apenas da execução — uma descoberta é real porque uma PoC foi executada, nunca porque correspondeu a um perfil. (O próprio scenarioGuidance dos perfis diz isso explicitamente: "Não escreva regras estáticas de bugs que reivindiquem descobertas.")
Este é o lar opcional para pacotes de contexto de domínio. Para adicionar um, mantenha-o genérico para uma classe e sem respostas: capture a superfície de ataque e invariantes que uma classe tende a ter, nunca um bug específico conhecido em um alvo específico. Qualquer coisa específica de um alvo pertence ao --corpus daquela auditoria, não aqui.