Como Fazer a IA Encontrar Vulnerabilidades Reais em Código Sem Muitos Falsos Positivos
Se você já tentou apontar um LLM para código-fonte com um prompt de "encontrar vulnerabilidades", provavelmente lembra do resultado. O modelo tipicamente produz uma parede de observações teóricas: validação de checklist OWASP faltando aqui, outra camada de sanitização poderia ser adicionada ali, e esta variável tem um nome suspeito. Na prática, 90% dessas descobertas se revelam ruído que simplesmente desperdiça o tempo dos desenvolvedores.
A equipe da Cloudflare open-sourceou o security-audit-skill. É um conjunto de instruções e pipeline para agentes de codificação, que eles usaram para construir seu harness interno para auditoria contínua de repositórios.
Qual é o Principal Problema com Auditoria de IA Regular
A maioria dos analisadores estáticos e prompts simples de rede neural sofre de dois problemas: eles não verificam explorabilidade e alucinam contexto. A rede neural vê uma função perigosa, mas não percebe que os dados de entrada já estão filtrados por três camadas acima.
A Cloudflare adotou a abordagem oposta e construiu o skill com base em princípios rigorosos:
- Relatórios são gerados apenas para o que é realmente explorável. Frases como "teoricamente um atacante poderia" são imediatamente filtradas.
- A pessoa que encontrou o bug não tem o direito de validá-lo. Um agente independente separado atua como advogado do diabo para verificação.
- A ausência de uma segunda camada de proteção não é considerada vulnerabilidade se a primeira camada bloqueia de forma confiável o vetor de ataque.
- A avaliação de criticidade é baseada em impacto real, não em correspondências formais de checklist.
Como Funciona o Pipeline de Seis Fases
Em vez de um único prompt longo, a ferramenta divide o trabalho em seis estágios sequenciais. Sub-agentes paralelos trabalham dentro de cada um, cada um com uma tarefa rigorosamente definida.
+-------------------------------------------------------------+
| 1. Recon -> Карта архитектуры и точек входа |
| 2. Hunt -> Параллельные атаки по разным векторам |
| 3. Validate -> Попытка опровергнуть каждую находку |
| 4. Report -> Формирование читаемых отчетов |
| 5. Structured -> Генерация findings.json со схемой |
| 6. Verify -> Сверка фактов со свежими агентами |
+-------------------------------------------------------------+
1. Recon
Agentes investigam o projeto, definem limites de confiança, identificam pontos de entrada e mapeiam a arquitetura geral. O resultado é um arquivo architecture.md que serve como mapa para os agentes de ataque.
2. Hunt
Múltiplos agentes testam a base de código em paralelo de diferentes ângulos. O projeto é dividido em arquivos separados com prompts para diferentes classes de ataque:
- Injeções, controle de acesso e lógica de negócio.
- Especificidades de protocolos web, cache e autenticação (
WEB-PROTOCOL-AND-AUTH.md). - Ameaças do lado do cliente como injeções DOM e poluição de protótipo (
CLIENT-SIDE.md). - Segurança de memória e vulnerabilidades binárias para código nativo (
MEMORY-SAFETY-AND-BINARY.md). - Problemas de sistemas LLM: injeção de prompt, vazamento de contexto e manipulação de chamadas de ferramentas (
AI-AND-LLM.md).
Cada agente de caça pode gerar processos adicionais para investigar mais profundamente cadeias de chamadas suspeitas.
3. Validação Adversária
O estágio mais útil. Agentes novos recebem uma lista de bugs potenciais e deliberadamente tentam provar que um ataque não funcionará. Se houver proteção no lugar ou o vetor estiver bloqueado por um módulo vizinho, a descoberta é impiedosamente riscada.
4. Relatório e Saída Estruturada
Os arquivos REPORT.md e FINDINGS-DETAIL.md são gerados com traces detalhados para vulnerabilidades de nível Médio e superior, junto com findings.json. O JSON estruturado é validado pelo script validate-findings.cjs baseado em Node.js sem dependências externas.
5. Verificação Independente
Controle de qualidade final. Agentes com contexto limpo verificam linha por linha as afirmações no relatório contra o código real para eliminar alucinações em números de linha ou nomes de funções.
Instalação e Execução
O pacote se conecta via Skills CLI a qualquer agente de codificação que suporte chamadas de ferramentas e sub-agentes paralelos.
Instalação do projeto:
npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit
Instalação global para todo o sistema:
npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit --global
Depois disso, basta abrir a base de código no seu agente e escrever em texto simples:
security audit this codebase
ou especificar um diretório específico e caminho do relatório:
do a security review, output to ~/audits/my-project
Detalhe interessante: execuções podem ser acumuladas. Os autores descobriram durante os testes que uma execução encontra aproximadamente metade dos problemas reais devido à aleatoriedade nos caminhos de travessia. O skill pode ler execuções anteriores findings.json, pular bugs já conhecidos e explorar branches de código não visitados.
Para Quem Isso Serve
A ferramenta requer um modelo capaz com suporte a chamadas de ferramentas paralelas, então executá-la em configurações locais fracas provavelmente não funcionará.
Mas se você já está usando agentes para refatoração ou escrita de testes, adicionar um papel como auditor de segurança meticuloso é uma ótima ideia antes de um release ou merge importante. A abordagem de dividir papéis entre "atacante" e "cético" reduz notavelmente o esforço manual de lidar com falsos positivos.
Projetos relacionados