Resultados da Competição de Fuzzing Destacam Desempenho da Ferramenta
Ferramentas de fuzzing avaliadas para cobertura de código e detecção de bugs.
― 5 min ler
Índice
Em maio de 2023, rolou uma Competição de fuzzing pra avaliar várias ferramentas de fuzzing feitas pra encontrar bugs em software. Essa competição durou 23 horas e teve oito Fuzzers diferentes. Os principais objetivos eram ver o quanto essas ferramentas conseguiam cobrir o código e quão eficazes eram pra encontrar bugs.
Estrutura da Competição
A competição aconteceu em três fases:
Desenvolvimento Privado: Os participantes integraram seus fuzzers na plataforma da competição e fizeram testes privados com benchmarks disponíveis publicamente. Essa fase permitiu que eles aprimorassem suas ferramentas sem serem vistos pelo público.
Teste Público: A segunda fase envolveu rodar todos os fuzzers submetidos nos benchmarks em um ambiente público. Os participantes puderam identificar e corrigir qualquer bug nas suas ferramentas nesse estágio.
Avaliação Final: Na fase final, todos os fuzzers foram testados em um conjunto oculto de benchmarks e nos que já estavam disponíveis antes. Essa fase determinou as classificações finais dos fuzzers.
Objetivos da Competição
Os principais objetivos eram avaliar os fuzzers em dois aspectos principais: quanto do código eles conseguiam cobrir e quantos bugs conseguiam encontrar. Também foi coletado feedback sobre o processo de benchmark em si. Um foco específico foi sobre como reduzir diferentes tipos de viés no processo de teste pra garantir uma avaliação justa.
Cobertura de Código e Detecção de Bugs
A competição tinha como objetivo medir duas áreas chave: a cobertura de código e a capacidade de encontrar bugs. Cobertura de código se refere à extensão em que a ferramenta pode executar diferentes partes do programa. Detecção de bugs indica quantos problemas a ferramenta consegue identificar no software que está sendo testado.
Pra garantir justiça, cada fuzzer teve que ser avaliado sob as mesmas condições, e os benchmarks foram divididos em conjuntos públicos e ocultos. O conjunto público estava disponível pros participantes praticarem e identificarem problemas, enquanto o conjunto oculto foi revelado só durante as avaliações finais.
Importância dos Benchmarks do Mundo Real
Os benchmarks usados na competição foram selecionados de projetos open-source conhecidos. Essa escolha garante que os fuzzers foram testados usando software que é ativamente mantido e amplamente utilizado. Usando projetos atualizados, a competição visava garantir que os achados fossem relevantes pra práticas de desenvolvimento de software atuais.
Execução dos Fuzzers
Os fuzzers foram executados em máquinas virtuais preparadas especificamente pra competição. Cada fuzzer foi testado várias vezes pra obter resultados confiáveis. Durante os testes, o desempenho de cada fuzzer foi registrado, medindo tanto a cobertura dos benchmarks quanto o tempo que eles levaram pra encontrar bugs.
Resultados da Competição
Resultados de Cobertura de Código
Os resultados mostraram que um fuzzer se destacou, liderando a cobertura de código na maioria dos benchmarks. Porém, ele também teve baixa cobertura em alguns benchmarks específicos, o que afetou sua pontuação geral. Outros fuzzers também se saíram bem, e alguns mostraram resultados consistentes em vários testes.
Os fuzzers de base, que são ferramentas padrão bem conhecidas, se saíram muito bem e conseguiram superar muitos dos fuzzers participantes. Curiosamente, muitos dos fuzzers que tiveram melhor desempenho tinham níveis de desempenho semelhantes porque foram construídos em arquiteturas parecidas.
Resultados de Detecção de Bugs
Quando se olhou pra detecção de bugs, alguns fuzzers estavam na mesma linha que os melhores, descobrindo um número significativo de bugs. Porém, foi notado que enquanto muitos fuzzers eram eficientes em encontrar bugs, alguns não se destacavam na cobertura de código, levando a uma desconexão entre as duas métricas.
Benchmarks específicos foram destacados como eficazes pra distinguir as capacidades dos fuzzers, mostrando desempenho diversificado entre eles. Alguns fuzzers identificaram bugs de maneiras únicas, mostrando seus pontos fortes e fracos individuais.
Desafios na Avaliação dos Fuzzers
A competição enfrentou vários desafios enquanto media o desempenho. Um grande obstáculo foi como avaliar com precisão os bugs do mundo real. Os organizadores lidaram com essa questão usando bugs conhecidos de projetos open-source. Essa abordagem ajudou a garantir que a competição refletisse as capacidades reais de detecção de bugs.
Outro desafio foi escolher benchmarks apropriados que pudessem fornecer insights valiosos sobre o desempenho dos fuzzers. Pra mitigar isso, certos benchmarks foram mantidos ocultos durante a fase de testes pra avaliar seu impacto nos resultados finais.
Além disso, determinar se múltiplos fuzzers encontraram o mesmo bug foi complicado. A competição simplificou isso garantindo que cada benchmark contivesse apenas um bug conhecido. Essa abordagem ajudou a manter clareza nos resultados e avaliações de desempenho.
Conclusão e Melhorias Futuras
A competição de fuzzing proporcionou uma avaliação abrangente de múltiplos fuzzers usando um processo de teste rigoroso. Mediu seu desempenho com base na cobertura de código e nas capacidades de encontrar bugs. Os resultados destacaram tanto os pontos fortes quanto as limitações de vários fuzzers.
Prosseguindo, os organizadores da competição pretendem aprimorar sua análise estatística e incluir dados mais extensos sobre como os fuzzers se saem. Eles planejam expandir a coleta de benchmarks baseados em bugs, permitindo uma compreensão mais profunda das habilidades dos fuzzers.
Ao continuar melhorando o processo de avaliação, a esperança é capturar melhor a verdadeira eficácia dos fuzzers em cenários do mundo real, contribuindo, assim, pro desenvolvimento de software mais robusto.
Título: SBFT Tool Competition 2023 -- Fuzzing Track
Resumo: This report outlines the objectives, methodology, challenges, and results of the first Fuzzing Competition held at SBFT 2023. The competition utilized FuzzBench to assess the code-coverage performance and bug-finding efficacy of eight participating fuzzers over 23 hours. The competition was organized in three phases. In the first phase, participants were asked to integrate their fuzzers into FuzzBench and allowed them to privately run local experiments against the publicly available benchmarks. In the second phase, we publicly ran all submitted fuzzers on the publicly available benchmarks and allowed participants to fix any remaining bugs in their fuzzers. In the third phase, we publicly ran all submitted fuzzers plus three widely-used baseline fuzzers on a hidden set and the publicly available set of benchmark programs to establish the final results.
Autores: Dongge Liu, Jonathan Metzman, Marcel Böhme, Oliver Chang, Abhishek Arya
Última atualização: 2023-05-15 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2304.10070
Fonte PDF: https://arxiv.org/pdf/2304.10070
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.