Simple Science

La science de pointe expliquée simplement

# Informatique# Génie logiciel

Les résultats du concours de fuzzing mettent en avant la performance des outils

Outils de fuzzing évalués pour la couverture de code et la détection de bugs.

― 6 min lire


Les outils de fuzzingLes outils de fuzzingmontrent des résultatsmitigés.dernière compétition.forces et faiblesses lors de laLes meilleurs fuzzers révèlent leurs
Table des matières

En mai 2023, une Compétition de fuzzing a eu lieu pour évaluer divers outils de fuzzing conçus pour dénicher des bugs dans les logiciels. Cette compétition a duré 23 heures et a inclus huit Fuzzers différents. Les objectifs principaux étaient de voir à quel point ces outils pouvaient couvrir le code et de déterminer leur efficacité à trouver des bugs.

Structure de la Compétition

La compétition s'est déroulée en trois phases :

  1. Développement Privé : Les participants ont intégré leurs fuzzers à la plateforme de la compétition et ont réalisé des tests privés avec des benchmarks disponibles publiquement. Cette phase leur a permis de peaufiner leurs outils sans être sous le feu des projecteurs.

  2. Tests Publics : La deuxième phase a consisté à faire fonctionner tous les fuzzers soumis sur les benchmarks dans un cadre public. Les participants pouvaient identifier et corriger les bugs dans leurs outils à ce stade.

  3. Évaluation Finale : Dans la phase finale, tous les fuzzers ont été testés sur un ensemble de benchmarks cachés et ceux déjà disponibles. Cette phase a déterminé le classement final des fuzzers.

Objectifs de la Compétition

Les objectifs principaux étaient d’évaluer les fuzzers sur deux aspects principaux : combien de code ils pouvaient couvrir et combien de bugs ils pouvaient trouver. Des retours ont également été collectés sur le processus d’évaluation lui-même. Un accent particulier a été mis sur la réduction des différents types de biais dans le processus de test pour garantir une évaluation juste.

Couverture de code et Détection de bugs

La compétition avait pour but de mesurer deux domaines clés : la couverture de code et la capacité à trouver des bugs. La couverture de code fait référence à l'étendue à laquelle l'outil peut exécuter différentes parties du programme. La détection de bugs indique combien de problèmes l'outil peut identifier dans le logiciel testé.

Pour assurer l'équité, chaque fuzzer devait être évalué dans les mêmes conditions, et les benchmarks étaient divisés en ensembles publics et cachés. L'ensemble public était accessible aux participants pour s'entraîner et identifier les problèmes, tandis que l'ensemble caché n'était révélé que lors des évaluations finales.

Importance des Benchmarks Réels

Les benchmarks utilisés dans la compétition ont été sélectionnés parmi des projets open-source bien connus. Ce choix garantit que les fuzzers ont été testés avec des logiciels qui sont activement maintenus et largement utilisés. En utilisant des projets à jour, la compétition visait à s'assurer que ses résultats étaient pertinents pour les pratiques de développement logiciel actuelles.

Exécution des Fuzzers

Les fuzzers ont été exécutés sur des machines virtuelles spécialement configurées pour la compétition. Chaque fuzzer a été testé plusieurs fois pour obtenir des résultats fiables. Pendant les essais, les performances de chaque fuzzer ont été enregistrées, mesurant à la fois leur couverture des benchmarks et le temps qu'ils mettaient à trouver des bugs.

Résultats de la Compétition

Résultats de Couverture de Code

Les résultats ont montré qu'un fuzzer se distinguait, en tête de la couverture de code sur la plupart des benchmarks. Cependant, il avait aussi une faible couverture sur quelques benchmarks spécifiques, ce qui a impacté son score global. D'autres fuzzers ont également bien performé, et certains ont montré des résultats constants à travers divers tests.

Les fuzzers de référence, qui sont des outils standards bien connus, ont bien performé et ont réussi à surpasser de nombreux fuzzers participants. Fait intéressant, de nombreux fuzzers parmi les meilleurs avaient des niveaux de performance similaires car ils étaient bâtis sur des architectures similaires.

Résultats de Détection de Bugs

En ce qui concerne la détection de bugs, certains fuzzers étaient au même niveau que les meilleurs, découvrant un nombre significatif de bugs. Cependant, il a été noté que, bien que beaucoup de fuzzers soient efficaces pour trouver des bugs, certains ne brillaient pas par leur couverture de code, menant à un décalage entre les deux métriques.

Des benchmarks spécifiques ont été mis en avant comme étant efficaces pour distinguer les capacités des fuzzers, montrant des performances diverses parmi eux. Certains fuzzers ont identifié des bugs de manière unique, mettant en valeur leurs forces et faiblesses individuelles.

Défis dans l'Évaluation des Fuzzers

La compétition a rencontré plusieurs défis pour mesurer les performances. Un obstacle majeur était de savoir comment évaluer précisément les bugs du monde réel. Les organisateurs ont abordé ce problème en utilisant des bugs connus provenant de projets open-source. Cette approche a contribué à garantir que la compétition reflétait les capacités de détection de bugs du monde réel.

Un autre défi était de sélectionner des benchmarks appropriés qui pourraient fournir des insights précieux sur les performances des fuzzers. Pour atténuer cela, certains benchmarks ont été gardés cachés durant la phase d'essai pour évaluer leur impact lors des résultats finaux.

De plus, déterminer si plusieurs fuzzers avaient trouvé le même bug posait des difficultés. La compétition a simplifié cela en s'assurant que chaque benchmark ne contenait qu'un seul bug connu. Cette méthode a aidé à maintenir la clarté des résultats et des évaluations de performance.

Conclusion et Améliorations Futures

La compétition de fuzzing a fourni une évaluation complète de plusieurs fuzzers utilisant un processus de test rigoureux. Elle a mesuré leur performance sur la couverture de code et les capacités de détection de bugs. Les résultats ont mis en lumière les forces et les limites de divers fuzzers.

Pour l'avenir, les organisateurs de la compétition visent à affiner leur analyse statistique et à inclure des données plus étendues sur les performances des fuzzers. Ils prévoient d'élargir la collection de benchmarks basés sur des bugs, permettant une compréhension plus profonde des capacités des fuzzers.

En améliorant continuellement le processus d'évaluation, l'espoir est de mieux capturer la véritable efficacité des fuzzers dans des scénarios réels, contribuant finalement au développement de logiciels plus robustes.

Source originale

Titre: SBFT Tool Competition 2023 -- Fuzzing Track

Résumé: 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.

Auteurs: Dongge Liu, Jonathan Metzman, Marcel Böhme, Oliver Chang, Abhishek Arya

Dernière mise à jour: 2023-05-15 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2304.10070

Source PDF: https://arxiv.org/pdf/2304.10070

Licence: https://creativecommons.org/licenses/by/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Plus d'auteurs

Articles similaires