Simple Science

La science de pointe expliquée simplement

# Informatique# Génie logiciel

Le rôle du fuzzing dans le développement logiciel

Le fuzzing est super important pour dénicher des bugs dans des systèmes logiciels complexes.

― 7 min lire


Fuzzing : Un Outil CléFuzzing : Un Outil Clépour les Logicielsdes bugs dans les logiciels.Le fuzzing aide à trouver rapidement
Table des matières

Dans le développement logiciel, trouver et corriger les Bugs est super important pour s'assurer que les programmes fonctionnent correctement et en toute Sécurité. Avec la complexité croissante des logiciels, les Développeurs ont un vrai casse-tête. Le Fuzzing est une technique qui aide à identifier les problèmes en générant automatiquement des entrées aléatoires pour les programmes. Ça peut révéler des soucis comme des erreurs de mémoire et des plantages. Beaucoup de développeurs commencent à utiliser des outils de fuzzing, comme OSS-Fuzz, pour améliorer la qualité de leur code et leur sécurité.

L'Importance de la Détection des Bugs

Les ingénieurs logiciels bossent dur pour créer des programmes fiables et sûrs. Les bugs, qui sont des erreurs ou des défauts, peuvent mener à des problèmes de sécurité et des pannes de système. Dans beaucoup de cas, les vulnérabilités sont peu nombreuses mais peuvent avoir de graves conséquences. À mesure que les logiciels deviennent plus sophistiqués, les outils qui simplifient la recherche et la correction des bugs deviennent essentiels.

Le fuzzing fonctionne en exécutant automatiquement des tests avec des données aléatoires pour voir comment un programme réagit dans des conditions inattendues. Ce processus peut découvrir des problèmes cachés qui pourraient ne pas être trouvés lors de tests manuels. La possibilité de faire ces tests en arrière-plan pendant que le développement continue peut faire gagner du temps et améliorer la qualité du logiciel.

Fuzzing et OSS-Fuzz

Les fuzzers comme OSS-Fuzz peuvent évaluer des projets open-source, en identifiant divers bugs. OSS-Fuzz a été intégré dans de nombreux projets populaires, offrant aux développeurs un moyen efficace de suivre et de résoudre les problèmes. En créant automatiquement des rapports dans un système de suivi, OSS-Fuzz permet aux développeurs de rester informés sur les bugs et d'agir rapidement pour les corriger.

Cependant, adopter le fuzzing n'est pas sans défis. Les développeurs doivent se demander si les avantages du fuzzing valent le temps et l'effort nécessaires pour le mettre en place. Ils doivent se poser la question de savoir si utiliser le fuzz testing en vaut la peine pour leurs projets.

Investiguer les Bugs de Fuzzing

Pour déterminer l'impact du fuzzing sur les projets logiciels, une étude a analysé un grand nombre de problèmes signalés par OSS-Fuzz. L'objectif était de comprendre les types de bugs que les fuzzers trouvent, combien de temps ces bugs restent dans le système avant d'être corrigés, et si les développeurs apprennent de leurs erreurs.

Méthodologie de l'Étude

Un vaste ensemble de données de 44 102 problèmes de fuzzing a été collecté à partir d'OSS-Fuzz. L'étude a retracé l'historique de ces bugs à travers des enregistrements de commits qui indiquaient quand les bugs ont été introduits et quand ils ont été corrigés. Cela a permis un examen détaillé des durées de vie des bugs et de la rapidité avec laquelle les développeurs y ont répondu.

L'étude s'est concentrée sur plusieurs questions clés concernant le fuzzing :

  1. Combien de temps les bugs détectés par les fuzzers restent-ils dans le système ?
  2. Combien de temps les développeurs mettent-ils à corriger ces bugs une fois qu'ils sont signalés ?
  3. Quels types de bugs les fuzzers sont-ils les plus efficaces pour trouver ?
  4. Comment les résultats du fuzzing se comparent-ils aux vulnérabilités connues dans d'autres bases de données ?
  5. Les développeurs corrigent-ils leurs propres bugs ou d'autres s'en occupent-ils ?

Résultats Clés

L'analyse a produit plusieurs conclusions intéressantes sur le fuzzing et ses effets sur le développement logiciel.

Durée de Vie des Bugs

Les bugs détectés par OSS-Fuzz avaient une durée de vie médiane d'environ 324 jours. Cela signifie que beaucoup de bugs ont persisté dans le logiciel pendant presque un an avant d'être traités. Cependant, une fois qu'un bug était identifié, il était généralement corrigé très rapidement, avec un temps de correction médian de seulement 2 jours. Cela indique que, même si les bugs peuvent rester longtemps, les développeurs priorisent souvent leur correction rapidement.

Temps de Réaction des Développeurs

En regardant à quelle vitesse les développeurs ont répondu aux rapports de fuzzing, la plupart des problèmes étaient traités rapidement. Le temps médian pour corriger un bug de fuzz était de 2 jours, avec un nombre significatif de problèmes résolus en une semaine. Ce rapide retournement suggère que les développeurs prennent les résultats de fuzzing au sérieux et agissent rapidement pour résoudre les problèmes.

Types de Bugs Trouvés

L'étude a également révélé quels types de bugs sont couramment détectés par les fuzzers. Bien que beaucoup de problèmes trouvés soient critiques, un nombre important de bugs n'est pas directement lié à la sécurité. Seulement environ 21 % des bugs identifiés par OSS-Fuzz ont été classés comme liés à la sécurité. Cela souligne le besoin pour les développeurs de compléter le fuzzing avec d'autres pratiques d'assurance qualité pour garantir une couverture complète des problèmes potentiels.

Chevauchement avec les Vulnérabilités Connues

L'étude a comparé les bugs trouvés par OSS-Fuzz avec les vulnérabilités signalées dans la National Vulnerability Database (NVD). Seulement environ 9,2 % des bugs de fuzz identifiés avaient des rapports similaires dans la NVD. Cela suggère que les fuzzers peuvent découvrir un large éventail de problèmes, mais ils peuvent ne pas attraper chaque vulnérabilité qui pourrait affecter la sécurité des logiciels. Les équipes de développement doivent être prudentes et ne pas se fier uniquement aux fuzzers pour leurs contrôles de sécurité.

Opportunités d'Apprentissage pour les Développeurs

Une autre découverte clé concernait les développeurs et leur capacité à apprendre des problèmes qu'ils créent. On a découvert qu'environ 46 % des bugs signalés ont été corrigés par le même développeur qui les avait introduits. Bien que certains développeurs utilisent le fuzzing comme un outil d'apprentissage, beaucoup ne corrigent pas leurs propres erreurs. Cela pourrait signifier qu'il y a un fossé dans l'éducation des développeurs ou une séparation entre les équipes qui créent des fonctionnalités et celles qui s'en occupent.

Défis de Mise en Œuvre du Fuzzing

Bien que les avantages du fuzzing soient clairs, il y a des défis à mettre en œuvre cette technique dans un environnement de développement. Les développeurs doivent investir du temps au départ pour configurer et paramétrer les outils de fuzzing, gérer les faux positifs, et prioriser les corrections de bugs en fonction de leur gravité. De plus, ils doivent garder une trace des résultats du fuzzing et maintenir l'intégration avec leurs processus de développement existants.

Conclusion

Le fuzzing, en particulier avec des outils comme OSS-Fuzz, a montré son potentiel pour améliorer la qualité des logiciels. La capacité à détecter et corriger rapidement les bugs est un atout précieux pour les développeurs. Cependant, les résultats indiquent également que le fuzzing à lui seul n'est pas une solution infaillible pour identifier toutes les vulnérabilités. Les développeurs doivent compléter le fuzzing avec d'autres pratiques de test et s'assurer que tous les membres de l'équipe sont impliqués dans l'apprentissage de leurs erreurs.

En résumé, le fuzzing représente un investissement valable pour de nombreux projets logiciels. Avec une mise en œuvre soignée et une amélioration continue, les développeurs peuvent tirer parti des avantages du fuzzing pour créer des logiciels meilleurs et plus sûrs.

Source originale

Titre: What Happens When We Fuzz? Investigating OSS-Fuzz Bug History

Résumé: BACKGROUND: Software engineers must be vigilant in preventing and correcting vulnerabilities and other critical bugs. In servicing this need, numerous tools and techniques have been developed to assist developers. Fuzzers, by autonomously generating inputs to test programs, promise to save time by detecting memory corruption, input handling, exception cases, and other issues. AIMS: The goal of this work is to empower developers to prioritize their quality assurance by analyzing the history of bugs generated by OSS-Fuzz. Specifically, we examined what has happened when a project adopts fuzzing as a quality assurance practice by measuring bug lifespans, learning opportunities, and bug types. METHOD: We analyzed 44,102 reported issues made public by OSS-Fuzz prior to March 12, 2022. We traced the Git commit ranges reported by repeated fuzz testing to the source code repositories to identify how long fuzzing bugs remained in the system, who fixes these bugs, and what types of problems fuzzers historically have found. We identified the bug-contributing commits to estimate when the bug containing code was introduced, and measure the timeline from introduction to detection to fix. RESULTS: We found that bugs detected in OSS-Fuzz have a median lifespan of 324 days, but that bugs, once detected, only remain unaddressed for a median of 2 days. Further, we found that of the 8,099 issues for which a source committing author can be identified, less than half (45.9%) of issues were fixed by the same author that introduced the bug. CONCLUSIONS: The results show that fuzzing can be used to makes a positive impact on a project that takes advantage in terms of their ability to address bugs in a time frame conducive to fixing mistakes prior to a product release.

Auteurs: Brandon Keller, Andrew Meneely, Benjamin Meyers

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

Langue: English

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

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

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.

Articles similaires