A infraestrutura para testes de fuzzing contínuo OSS-Fuzz agora inclui a capacidade de testar projetos escritos na linguagem Lua, além das linguagens anteriormente suportadas C/C++, Go, Swift, Rust, Python, JavaScript e Java. A integração foi realizada com o projeto luzer, que desenvolve ferramentas especializadas para testes de fuzzing de código na linguagem Lua e extensões Lua escritas em C/C++.
O projeto utiliza a biblioteca libFuzzer e pode ser aplicado juntamente com ferramentas como AddressSanitizer, MemorySanitizer, LeakSanitizer, ThreadSanitizer e Undefined Behavior Sanitizer, que permitem identificar a presença de vulnerabilidades comuns, causadas por estouro de buffer, estouros inteiros, acesso a áreas não inicializadas e liberadas, vazamentos de memória, desreferenciação de ponteiros e problemas de bloqueio. O código do projeto está disponível sob a licença ISC.
Durante sua execução, luzer experimenta combinações possíveis de dados de entrada e gera um relatório sobre todas as falhas e exceções não capturadas detectadas. Por exemplo, ao testar a biblioteca de análise de formato MsgPack antirez/lua-cmsgpack no luzer, foi observado que dados com um número elevado de arrays podem levar a um estouro de pilha.
No âmbito do projeto lunapark, a ferramenta luzer é utilizada para testar o PUC Rio Lua, o compilador de rastreamento LuaJIT, um SGBD de alto desempenho e servidor aplicativos Tarantool, além de testar módulos Lua de terceiros.
Desenvolvedores de projetos abertos podem adicionar seus repositórios para teste, elaborando um modelo de fuzzing e enviando uma solicitação especial através de um pull request. Ao detectar erros, os desenvolvedores recebem automaticamente uma notificação e é criada uma solicitação privada de correção (para evitar a divulgação prematura de informações sobre vulnerabilidades, o ticket é criado no sistema de rastreamento de erros com acesso restrito). O OSS Fuzz monitora o estado da correção do erro e fecha o ticket automaticamente caso o erro não seja mais reproduzido. As informações sobre a questão tornam-se publicamente disponíveis após 7 dias da correção ou após 90 dias desde a detecção do erro, se o problema permanecer não resolvido.
Fonte: opennet.ru
