Framework com três agentes de IA descobre vulnerabilidades reais em pacotes populares do PyPI
O QRS (Query, Review, Sanitize) é um framework neuro-simbólico que usa três agentes de LLM para gerar, revisar e validar consultas CodeQL automaticamente, em vez de depender de regras curadas manualmente como em ferramentas SAST tradicionais. Aplicado aos 100 pacotes mais baixados do PyPI, o sistema encontrou 41 vulnerabilidades de severidade média a alta, das quais 8 receberam CVEs novos e 4 foram reconhecidas via atualização de documentação.
Ferramentas de análise estática de segurança (SAST) como CodeQL, Semgrep e SonarQube dependem de consultas escritas por especialistas e sofrem com dois problemas conhecidos: geram muitos falsos positivos e só encontram os padrões de vulnerabilidade que já foram explicitamente codificados em suas regras. Trabalhos recentes já tentaram usar LLMs para melhorar SAST, mas normalmente usando o modelo apenas para triar os resultados de ferramentas tradicionais, não para raciocinar diretamente sobre a semântica da vulnerabilidade.
O QRS inverte essa lógica: em vez de um LLM filtrando resultados de regras estáticas, três agentes autônomos geram consultas CodeQL a partir de um esquema estruturado e exemplos few-shot, validam os achados através de raciocínio semântico e produzem provas de conceito mínimas de exploração, que são então verificadas manualmente antes de qualquer divulgação. Isso permite ao sistema encontrar classes de vulnerabilidade que não estavam previstas em nenhuma regra pré-existente, ao mesmo tempo em que reduz o volume de código que um humano precisa auditar manualmente no final do processo.
Os resultados foram medidos em pacotes reais, não em trechos de código isolados: nos 100 pacotes mais baixados do PyPI, o QRS atingiu até 94,06% de acurácia de veredito e encontrou 41 vulnerabilidades de severidade média a alta — 8 delas resultaram em CVEs novos, 4 foram reconhecidas pelos mantenedores via atualização de documentação, e as 29 restantes eram CVEs já publicados, redescobertos pelo sistema só a partir do código-fonte. Estendido para Java e avaliado no benchmark CWE-Bench-Java, o sistema detectou 58 de 90 CVEs no escopo (64,44%), com 87,60% de acurácia e F1 de 0,857.
O resultado interessa tanto a quem defende quanto a quem ataca software: de um lado, é uma ferramenta que amplia a cobertura de auditoria de segurança de código aberto sem depender exclusivamente de regras escritas à mão; de outro, demonstra que agentes de LLM já são capazes de descobrir de forma autônoma vulnerabilidades reais e exploráveis em pacotes amplamente usados — a mesma capacidade técnica que, em mãos mal-intencionadas, serve para automatizar a busca por alvos antes que os mantenedores corrijam as falhas. É um lembrete de que "descoberta autônoma de vulnerabilidades por IA" deixou de ser um cenário hipotético de pesquisa.