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.

antonio-cesar-150x150
António César de Andrade

Apaixonado por tecnologia e inovação, traz notícias do seguimento que atua com paixão há mais de 15 anos.