Fuzzer guiado por LLM encontra 31 zero-days em motores JavaScript de leitores de PDF, incluindo execução de código
Pesquisadores usaram um LLM para extrair, a partir de manuais de API JavaScript e traces de execução, gramáticas e relações entre chamadas de API, alimentando um solver de restrições que gera sequências de chamadas mais realistas para o fuzzer PDFuzzer. A ferramenta superou fuzzers anteriores de PDF e outros baseados em LLM, encontrando 31 vulnerabilidades zero-day inéditas no Adobe Acrobat Reader, Foxit PDF Reader e PDF-XChange Editor, de vazamento de informação a execução arbitrária de código, todas reportadas via divulgação coordenada e recompensadas via bug bounty.
A equipe (Suyue Guo, Stijn Pletinckx, Tianle Yu, Yigitcan Kaya, Saad Ullah, Wenbo Guo, Christopher Kruegel e Giovanni Vigna) partiu de uma limitação conhecida de fuzzers de leitores de PDF: eles costumam testar chamadas de API JavaScript isoladamente, o que gera cobertura limitada e deixa passar vulnerabilidades que só aparecem quando várias chamadas ocorrem em uma sequência específica. O PDFuzzer ataca esse problema usando um LLM não para gerar exploits diretamente, mas para fazer engenharia reversa da própria superfície de API: o modelo lê manuais de API JavaScript e traces de execução reais para inferir gramáticas livres de contexto e as relações de dependência entre chamadas, e um solver de restrições transforma essa gramática em sequências concretas de chamadas para o fuzzer executar.
O resultado prático é concreto: 31 vulnerabilidades zero-day inéditas distribuídas entre Adobe Acrobat Reader, Foxit PDF Reader e PDF-XChange Editor — três dos leitores de PDF mais usados no mundo — variando de vazamento de informação a execução arbitrária de código, com cobertura até 48% superior à de fuzzers estado da arte anteriores (TypeOracle, Favocado, Cooper) e de abordagens baseadas em LLM mais simples (Fuzz4All, LLM ingênuo).
Isso importa na prática por dois motivos. Primeiro, leitores de PDF são historicamente um dos vetores mais explorados para distribuição de malware via documento malicioso, então encontrar 31 zero-days reais nos três principais players do mercado é um resultado de segurança concreto, não apenas acadêmico — e os autores seguiram divulgação coordenada com os fornecedores, recebendo recompensas via bug bounty antes da publicação (o trabalho foi aceito na ACM CCS 2026). Segundo, a técnica em si — usar um LLM para extrair uma gramática de API a partir de documentação e traces, em vez de gerar exploits diretamente — é uma metodologia que generaliza para qualquer software com superfície de API documentada e scriptável, não só leitores de PDF, o que sugere que equipes mantenedoras de software com APIs complexas e documentadas devem esperar esse tipo de ferramenta ser aplicado contra seus próprios produtos.
O ponto que fica em aberto é que o resumo disponível não cita CVEs específicos atribuídos às 31 falhas — apenas que foram reportadas e recompensadas — então quem depende desses produtos deve acompanhar os avisos de segurança dos respectivos fornecedores para saber quando os patches correspondentes foram de fato publicados.