← Últimos artigos
💻 computer science

SeedSmith: LLM-Driven Seed Synthesis for Directed Fuzzing

O SeedSmith é um pipeline de LLM agêntico que sintetiza sementes iniciais direcionadas ao resolver iterativamente chamadas indiretas e precondições de crash, acelerando significativamente o fuzzing direcionado e permitindo a descoberta de vulnerabilidades anteriormente inalcançáveis em diversos formatos de entrada.

Autores originais: Junmin Zhu, Siyu Liu, Jie Hu, Fabio Gritti, Ati Priya Bajaj, Hulin Wang, Wenbo Guo, Tiffany Bao, Christopher Kruegel, Giovanni Vigna

Publicado 2026-07-13
📖 5 min de leitura🧠 Leitura aprofundada

Autores originais: Junmin Zhu, Siyu Liu, Jie Hu, Fabio Gritti, Ati Priya Bajaj, Hulin Wang, Wenbo Guo, Tiffany Bao, Christopher Kruegel, Giovanni Vigna

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você está tentando encontrar um baú de tesouro escondido em um castelo enorme e escuro. Você tem um robô (um "fuzzer") que pode vagar aleatoriamente, bater nas paredes e tentar abrir portas. Normalmente, o robô apenas vaga ao acaso, esperando tropeçar no tesouro. Mas às vezes, você sabe exatamente onde o tesouro está (uma função "sink" específica no código) e quer que o robô vá direto para lá. Isso é chamado de Fuzzing Direcionado.

O problema? O robô frequentemente se perde ou fica preso. Por quê? Porque o mapa que ele usa é incompleto (ele não consegue ver passagens secretas atrás de portas trancadas) e, mesmo que encontre a sala com o tesouro, ele não sabe o aperto de mão secreto necessário para abri-la. Ele apenas continua cutucando o baú com um bastão, esperando quebrá-lo, o que leva uma eternidade.

Conheça o SeedSmith, um novo sistema que atua como um detetive superinteligente antes mesmo de o robô começar a se mover. Em vez de deixar o robô vagar cegamente, o SeedSmith usa um tipo especial de inteligência artificial (um LLM) para fazer o trabalho de detetive primeiro.

Os Dois Grandes Problemas que o SeedSmith Resolve

1. O Mapa Invisível (Chamadas Indiretas)
Imagine que o castelo tem um corredor onde as portas não têm nomes; elas apenas têm uma nota dizendo: "Vá para a porta que o guarda apontar". O mapa do robô só mostra conexões diretas, então ele pensa que esse corredor é um beco sem saída. No mundo real, isso acontece com "chamadas indiretas" no código de computador. O artigo mostra que, sem corrigir isso, o rob em nunca conseguirá ver o caminho para o tesouro. O detetive de IA do SeedSmith lê o código, descobre qual guarda aponta para qual porta e desenha o caminho que faltava no mapa.

2. O Aperto de Mão Secreto (Precondições de Crash)
Às vezes, o robô encontra a sala certa, mas o baú está trancado com um quebra-cabeça complexo. Talvez você precise pressionar três botões em uma ordem específica enquanto segura uma chave específica. A cutucada aleatória do robô (mutação) é como um macaco batendo teclas em um piano; ele pode eventualmente acertar a nota certa, mas isso pode levar um milhão de anos. O detetive do SeedSmith lê as instruções, descobre a combinação exata e constrói uma chave que se encaixa perfeitamente.

Como o SeedSmith Funciona: O Detetive e o Construtor

O SeedSmith não apenas adivinha; ele trabalha em duas etapas, como uma equipe de duas pessoas:

  • O Agente de Análise (O Detetive): Esta parte do sistema começa no baú do tesouro e trabalha de trás para frente. Ele usa uma ferramenta especial para "pesquisar" o código, lendo corpos de funções e definições de tipos exatamente como um especialista em segurança humano faria. Ele não olha apenas para um mapa estático; ele faz perguntas como: "Quem chama esta função?" e "Quais valores esta variável precisa?". Ele continua cavando até encontrar o caminho exato e as condições exatas necessárias para disparar o erro (crash).
  • O Agente de Geração de Seeds (O Construtor): Assim que o detetive escreve um relatório, o construtor assume o controle. Ele escreve um script em Python para criar a "seed" perfeita (a entrada inicial). Se o tesouro exigir um arquivo de imagem complexo ou um pacote de rede específico, o construtor usa bibliotecas (como um pincel digital) para construí-lo perfeitamente, em vez de apenas jogar bytes aleatórios.

Se a primeira tentativa não quebrar o baú, o sistema verifica o resultado, aprende com o erro e tenta novamente até dez vezes até conseguir.

O Que o SeedSmith Prova (e o Que Não Prova)

Os pesquisadores testaram isso em dois grandes conjuntos de desafios: Magma (23 bugs específicos) e ARVO (115 bugs do mundo real de 26 projetos).

Os Resultados:

  • Velocidade: Quando usando as seeds do SeedSmith, os robôs encontraram crashes 11,51 vezes mais rápido (em média) com uma ferramenta popular chamada AFL++, e 14,66 vezes mais rápido com outra chamada AFLGo, em comparação ao uso das seeds iniciais padrão.
  • Novas Descobertas: Nos desafios do ARVO, o SeedSmith ajudou os robôs a encontrar 16 bugs que eles nunca encontrariam antes, mesmo após rodar por 24 horas. Esses bugs estavam em 10 projetos diferentes com formatos de arquivo muito distintos.
  • Prodígios de Uma Única Vez: Para alguns bugs, a seed que o SeedSmith construiu foi tão perfeita que o robô disparou o crash imediatamente, antes mesmo de ter a chance de mutar a entrada. Isso aconteceu 5 vezes no conjunto Magma.

O que o SeedSmith NÃO É:

  • Não é uma varinha mágica que conserta o próprio robô. O artigo afirma explicitamente que o SeedSmith não altera como o robô (o fuzzer) funciona internamente. Ele apenas dá ao robô um ponto de partida melhor.
  • Não é um substituto para todo o fuzzing. O artigo observa que, para alguns bugs, o robô ainda precisa realizar algum trabalho após a entrega da seed.
  • Não afirma resolver todos os problemas. O artigo admite que, às vezes, o robô ainda sofre "timeout" (leva tempo demais), especialmente se as condições de crash forem incrivelmente complexas.

A Conclusão

Pense no SeedSmith como um GPS e um mestre chaveiro combinados. Antes de enviar seu robô para o castelo escuro, o SeedSmith descobre a rota exata e fabrica a chave perfeita. O artigo mostra que essa abordagem é mensurada e comprovada para tornar a descoberta de bugs de software significativamente mais rápida e ajuda a encontrar bugs que eram anteriormente impossíveis de alcançar. Ela transforma um jogo de sorte cega em um jogo de estratégia inteligente, permitindo que até robôs de propósito geral atuem como caçadores de tesouros direcionados.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →