O OSS-Fuzz do Google, uma ferramenta de teste de fuzz baseada em inteligência artificial, alcançou resultados notáveis recentemente, descobrindo com sucesso vulnerabilidades em 26 bibliotecas de código-fonte aberto, incluindo uma vulnerabilidade de gravidade média na biblioteca de criptografia OpenSSL de quase 20 anos. Este avanço marca um novo marco na detecção automatizada de vulnerabilidades. Os alvos de testes fuzz gerados por IA demonstraram capacidades poderosas na melhoria da cobertura de código e na descoberta de vulnerabilidades profundas. Este artigo detalhará as últimas descobertas do OSS-Fuzz, o papel da tecnologia de IA nele e as medidas que o Google tomou para melhorar a segurança do código.
Recentemente, o Google anunciou que sua ferramenta de teste fuzz baseada em inteligência artificial OSS-Fuzz descobriu com sucesso vulnerabilidades em 26 bibliotecas de código-fonte aberto, incluindo uma vulnerabilidade de gravidade média na biblioteca de criptografia OpenSSL.
“A descoberta dessas vulnerabilidades marca um novo marco na detecção automatizada de vulnerabilidades: cada vulnerabilidade é encontrada por meio de alvos de testes fuzz aprimorados e gerados por IA”, disse a equipe de segurança de código aberto do Google em uma postagem compartilhada no blog.
Nota sobre a fonte da imagem: a imagem é gerada pela IA e pelo provedor de serviços de autorização de imagem Midjourney
O número de vulnerabilidade do OpenSSL descoberto desta vez é CVE-2024-9143 (pontuação CVSS 4.3), que se manifesta como um erro de gravação de memória fora dos limites que pode levar à falha do aplicativo ou à execução remota de código. Este problema foi corrigido em várias versões do OpenSSL, incluindo 3.3.3, 3.2.4, 3.1.8, 3.0.16, 1.1.1zb e 1.0.2zl. O Google observou que a falha pode existir na base de código há quase 20 anos e que os alvos tradicionais de testes fuzz escritos por humanos não teriam descoberto o problema.
O Google também mencionou que, com a ajuda de alvos de teste fuzz gerados por IA, a cobertura de código de 272 projetos C/C++ foi melhorada, adicionando mais de 370.000 linhas de novo código. O Google explica que a razão pela qual muitos bugs passam despercebidos é porque a cobertura do código não significa que a funcionalidade esteja livre de bugs. A cobertura de código por si só não mede todos os possíveis caminhos e estados de código, pois diferentes sinalizadores e configurações podem desencadear comportamentos diferentes e, assim, expor diferentes vulnerabilidades.
Essa descoberta de vulnerabilidades assistida por IA também se beneficia do excelente desempenho de grandes modelos de linguagem (LLMs) na simulação do fluxo de trabalho de testes fuzz dos desenvolvedores, aumentando ainda mais o grau de automação. Além disso, o Google revelou no início deste mês que sua estrutura Big Sleep, baseada em LLM, ajudou a detectar uma vulnerabilidade de dia zero no mecanismo de banco de dados de código aberto SQLite.
Para melhorar a segurança de sua própria base de código, o Google está promovendo a migração de código para linguagens seguras de memória, como Rust, e reparando vulnerabilidades de segurança de memória espacial em projetos C++ existentes. Isso inclui a migração para buffers seguros e a ativação do libc++ reforçado, que elimina uma classe importante de vulnerabilidades de segurança espacial ao adicionar verificações de limites às estruturas de dados C++ padrão. O Google afirma que a penalidade de desempenho resultante da implementação dessas melhorias é mínima, em média apenas 0,30%.
O Google destacou ainda que o libc++ reforçado, adicionado recentemente por contribuidores de código aberto, introduz uma série de verificações de segurança projetadas para detectar vulnerabilidades, como acesso fora dos limites em ambientes de produção. Embora a linguagem C++ não possa implementar totalmente a segurança da memória, essas melhorias sem dúvida reduzem os riscos e tornam o software mais confiável e seguro.
Destaque:
A ferramenta OSS-Fuzz do Google descobriu vulnerabilidades em 26 projetos de código aberto, incluindo uma vulnerabilidade OpenSSL de quase 20 anos.
Os alvos fuzz gerados por IA melhoraram a cobertura de código em 272 projetos C/C++, adicionando mais de 370.000 linhas de novo código.
O Google está migrando código para linguagens seguras de memória e melhorando a segurança de projetos C++ por meio de medidas como o fortalecimento da libc++.
Em suma, o Google utilizou a tecnologia de IA para melhorar significativamente as suas capacidades de detecção de segurança de software, e a sua experiência fornece uma referência valiosa para outras instituições. No futuro, a IA desempenhará um papel cada vez mais importante no campo da segurança de software, ajudando os desenvolvedores a construir sistemas de software mais seguros e confiáveis.