O que é OSS-Fuzz?
O OSS-Fuzz é uma plataforma gratuita mantida pelo Google que realiza testes de fuzzing automatizados em larga escala em projetos de software livre. O objetivo é identificar vulnerabilidades de segurança antes que sejam descobertas por agentes mal-intencionados, contribuindo para a segurança do ecossistema open source como um todo.
Lançado em 2016, o OSS-Fuzz já ajudou a encontrar e corrigir milhares de bugs de segurança em centenas de projetos críticos, incluindo bibliotecas amplamente utilizadas como OpenSSL, libjpeg, SQLite, entre outras. O serviço integra-se diretamente à infraestrutura de build dos projetos e utiliza sanitizers como AddressSanitizer, MemorySanitizer e UndefinedBehaviorSanitizer para detectar diversos tipos de erros de memória e comportamento indefinido.
Como funciona?
Para os mantenedores, o processo é simples: eles adicionam o projeto ao repositório do OSS-Fuzz fornecendo um script de build e sementes de fuzzing. A partir daí, o Google Cloud executa os testes continuamente, gerando novos inputs e monitorando crashes. Quando uma falha é encontrada, um relatório detalhado é enviado ao mantenedor, geralmente acompanhado de um caso de teste minimizado. O projeto também se integra a sistemas de rastreamento de bugs, como o Monorail, e atribui CVEs automaticamente para vulnerabilidades confirmadas.
O OSS-Fuzz oferece suporte a várias linguagens, incluindo C, C++, Rust, Python e Go, e utiliza instrumentos de cobertura de código para direcionar o fuzzing a áreas nunca testadas, maximizando a eficiência.
Importância para a segurança digital
Para profissionais de cibersegurança, o OSS-Fuzz representa uma camada extra de proteção: muitas vulnerabilidades graves que afetam sistemas em produção são descobertas graças a esse tipo de teste automatizado. Acompanhar as correções e os avisos gerados pelo OSS-Fuzz ajuda equipes de defesa a se anteciparem a possíveis explorações.
Além disso, o ecossistema de segurança brasileiro também se beneficia: projetos nacionais de código aberto podem aderir ao OSS-Fuzz e elevar seu nível de segurança. A 13SEC NEWS acompanha essas tendências e traz análises sobre ferramentas e práticas de segurança.
Como seu projeto pode participar
Para adicionar um projeto ao OSS-Fuzz, os mantenedores precisam atender a alguns critérios: o projeto deve ser de código aberto com licença aprovada pela OSI, ter uma base de código significativa e estar alinhado com os objetivos de segurança. O processo envolve criar um diretório com as configurações de build no repositório do OSS-Fuzz e submeter um pull request. A equipe do Google analisa e, uma vez aprovado, o projeto passa a receber testes contínuos.
Ferramentas e sanitizers
O OSS-Fuzz utiliza diversos compiladores e sanitizers para maximizar a detecção de bugs. Entre as ferramentas estão o AddressSanitizer (ASAN) para uso após liberação de memória, o MemorySanitizer (MSAN) para leitura de memória não inicializada, e o UndefinedBehaviorSanitizer (UBSAN) para comportamento indefinido. Também são empregados instrumentos de cobertura de código para guiar o fuzzing a áreas nunca testadas.