O Google revelou que sua ferramenta de fuzzing com tecnologia de IA, OSS-Fuzz, foi usada para ajudar a identificar 26 vulnerabilidades em vários repositórios de código aberto, incluindo uma falha de gravidade média na biblioteca criptográfica OpenSSL.
“Essas vulnerabilidades específicas representam um marco para a descoberta automatizada de vulnerabilidades: cada uma foi encontrada com IA, usando alvos fuzz gerados e aprimorados por IA”, disse a equipe de segurança de código aberto do Google em uma postagem de blog compartilhada com o The Hacker News.
A vulnerabilidade do OpenSSL em questão é CVE-2024-9143 (pontuação CVSS: 4.3), um bug de gravação de memória fora dos limites que pode resultar em uma falha do aplicativo ou execução remota de código. O problema foi resolvido nas versões 3.3.3, 3.2.4, 3.1.8, 3.0.16, 1.1.1zb e 1.0.2zl do OpenSSL.
O Google, que adicionou a capacidade de aproveitar modelos de grandes linguagens (LLMs) para melhorar a cobertura de fuzzing no OSS-Fuzz em agosto de 2023, disse que a vulnerabilidade provavelmente está presente na base de código há duas décadas e que “não teria sido descoberta com alvos de fuzz existentes escritos por humanos”.
Além disso, a gigante da tecnologia observou que o uso de IA para gerar alvos de fuzz melhorou a cobertura de código em 272 projetos C/C++, adicionando mais de 370.000 linhas de novo código.
“Um motivo pelo qual esses bugs podem permanecer sem serem descobertos por tanto tempo é que a cobertura de linha não é garantia de que uma função esteja livre de bugs”, disse o Google. “A cobertura de código como uma métrica não é capaz de medir todos os caminhos e estados de código possíveis — diferentes sinalizadores e configurações podem desencadear comportamentos diferentes, revelando diferentes bugs.”
Essas descobertas de vulnerabilidades assistidas por IA também são possíveis porque os LLMs estão se mostrando hábeis em emular o fluxo de trabalho de fuzzing de um desenvolvedor, permitindo assim mais automação.
O desenvolvimento ocorre depois que a empresa revelou no início deste mês que sua estrutura baseada em LLM, chamada Big Sleep, facilitou a detecção de uma vulnerabilidade de dia zero no mecanismo de banco de dados de código aberto SQLite.
Paralelamente, o Google tem trabalhado para fazer a transição de suas próprias bases de código para linguagens de memória segura, como Rust, ao mesmo tempo em que adapta mecanismos para lidar com vulnerabilidades de segurança de memória espacial — que ocorrem quando é possível que um pedaço de código acesse memória que está fora de seus limites pretendidos — dentro de projetos C++ existentes, incluindo o Chrome.
Isso inclui migrar para Safe Buffers e habilitar libc++ reforçado , o último dos quais adiciona verificação de limites a estruturas de dados C++ padrão para eliminar uma classe significativa de bugs de segurança espacial. Ele também observou que a sobrecarga incorrida como resultado da incorporação da mudança é mínima (ou seja, um impacto médio de desempenho de 0,30%).
“O libc++ reforçado, adicionado recentemente por contribuidores de código aberto, introduz um conjunto de verificações de segurança projetadas para capturar vulnerabilidades como acessos fora dos limites na produção”, disse o Google . “Embora o C++ não se torne totalmente seguro em termos de memória, essas melhorias reduzem o risco […], levando a um software mais confiável e seguro.”