O Google espalhou a magia da inteligência artificial em sua infraestrutura de teste fuzz de código aberto e os resultados sugerem que os algoritmos LLM (large language model) alterarão radicalmente o espaço de caça a bugs.
O Google adicionou tecnologia generativa de IA ao seu projeto OSS-FUZZ (um serviço gratuito que executa fuzzers para projetos de código aberto e alerta os desenvolvedores sobre os bugs detectados) e descobriu uma grande melhoria na cobertura de código quando os LLMs são usados para criar novos alvos fuzz.
“Usando LLMs, podemos aumentar a cobertura de código para projetos críticos usando nosso serviço OSS-Fuzz sem escrever código adicional manualmente. O uso de LLMs é uma nova maneira promissora de escalar melhorias de segurança nos mais de 1.000 projetos atualmente fuzzed pelo OSS-Fuzz e remover barreiras para futuros projetos que adotam fuzzing”, disse a empresa em uma nota com resultados de um experimento de meses.
Os testadores Fuzz, ou fuzzers, são usados na pesquisa de vulnerabilidades para identificar vulnerabilidades de segurança enviando entradas aleatórias para um aplicativo. Se o programa contiver uma vulnerabilidade que leve a uma exceção, travamento ou erro do servidor, os pesquisadores podem analisar os resultados do teste para identificar a causa do travamento.
No entanto, a arte do fuzzing depende muito do esforço manual para escrever alvos fuzz e funções para testar seções de código, levando os engenheiros de software do Google a testar se os LLMs poderiam ser usados para aumentar a eficácia do serviço OSS-Fuzz de seis anos. .
A empresa disse que o projeto OSS-Fuzz ajudou a encontrar e verificar correções para mais de 10.000 bugs de segurança em software de código aberto, mas os pesquisadores acreditam que a ferramenta provavelmente poderia encontrar ainda mais bugs com maior cobertura de código.
“O serviço fuzzing cobre apenas cerca de 30% do código de um projeto de código aberto em média, o que significa que uma grande parte do código de nossos usuários permanece intocada pelo fuzzing”, disse o Google.
Para testar se um LLM poderia escrever com sucesso novos alvos fuzz, os engenheiros de software do Google construíram uma estrutura de avaliação que conecta o OSS-Fuzz ao seu LLM para identificar porções subdifusas e de alto potencial do código do projeto de exemplo para avaliação.
A empresa explicou que a estrutura de avaliação localizada entre o OSS-Fuzz e o LLM cria um prompt que o LLM usará para gravar o novo alvo fuzz. “A princípio, o código gerado a partir de nossos prompts não compilava, no entanto, após várias rodadas de engenharia de prompt e experimentando os novos alvos fuzz, vimos os projetos ganharem entre 1,5% e 31% de cobertura de código”, disse a empresa.
Em um projeto de amostra – tinyxml2 – o Google disse que a cobertura de código melhorou de 38% para 69% sem nenhuma intervenção humana.
“O caso do tinyxml2 nos ensinou: quando os alvos fuzz gerados pelo LLM são adicionados, o tinyxml2 tem a maior parte de seu código coberto”, disseram os engenheiros. “Replicar manualmente os resultados do tinyxml2 exigiria pelo menos um dia de trabalho — o que significaria vários anos de trabalho para cobrir manualmente todos os projetos OSS-Fuzz.”
Durante o experimento, o Google disse que o LLM foi capaz de gerar automaticamente um alvo de trabalho que redescobriu o CVE-2022-3602 (consulte o comunicado do OpenSSL), que estava em uma área de código que anteriormente não tinha cobertura fuzzing. “Embora esta não seja uma nova vulnerabilidade, sugere que, à medida que a cobertura do código aumenta, encontraremos mais vulnerabilidades que atualmente são perdidas pelo fuzzing”, acrescentou o Google.
A empresa planeja abrir o código da estrutura de avaliação para permitir que os pesquisadores testem sua própria geração automática de alvos fuzz.