Le fuzzing est une technique de test logiciel qui consiste à bombarder un système avec une variété de données aléatoires, inattendues ou mal formées.
Cette méthode vise à découvrir des vulnérabilités, des bugs ou des comportements anormaux dans les logiciels ou les systèmes.
La première étape est d’identifier la cible, qui peut être une application, un protocole réseau, ou même un système d’exploitation entier.
Les données de test peuvent être totalement aléatoires, ou être générées selon des modèles plus sophistiqués qui visent à tester des scénarios spécifiques.
L’étape suivante consiste à injecter ces données dans le système cible et à observer les réactions.
Le but est de repérer des comportements inhabituels, tels que des plantages, des fuites de mémoire, ou d’autres dysfonctionnements qui peuvent indiquer la présence de vulnérabilités.
American Fuzzy Lop ou AFL est réputé pour son efficacité. Il utilise des techniques d’instrumentation de code pour découvrir rapidement des zones de code non testées. Sa capacité à générer automatiquement des cas de test qui maximisent la couverture du code est particulièrement appréciée.
LibFuzzer est un autre outil de fuzzing notable. Il se concentre sur les bibliothèques, permettant ainsi aux développeurs de cibler spécifiquement les composants de leur logiciel.
Radamsa se démarque par sa polyvalence. C’est un outil de fuzzing généraliste capable de tester une grande variété d’applications et de formats. Sa facilité d’utilisation et sa robustesse en font un choix populaire.
Peach Fuzzer offre une plateforme de fuzzing flexible et modulable. Il permet aux utilisateurs de créer des tests sophistiqués pour une large gamme d’applications comprenant protocoles réseau et interfaces web.
Le populaire Boofuzz est un descendant de Sulley. Il se distingue par son interface utilisateur intuitive, qui simplifie le processus de configuration des sessions de fuzzing, en particulier pour les protocoles réseau.
Honggfuzz est un fuzzer robuste. Il se concentre sur la détection de multiples types de vulnérabilités comprenant les défaillances liées à la mémoire et à la logique du programme.
Syzkaller conçu pour le fuzzing noyaux est un outil incontournable pour les développeurs travaillant sur des systèmes comme Linux. Il permet de détecter des problèmes profondément ancrés dans le code du noyau.
OSS-Fuzz fournit une infrastructure complète pour le fuzzing open-source. Cet outil sert à améliorer la sécurité de nombreux projets logiciels importants en détectant rapidement les vulnérabilités.
ClusterFuzz se distingue par sa capacité à fonctionner à grande échelle.Idéal pour les projets de grande envergure.
Enfin, Jazzer est un outil récent qui apporte le fuzzing dans l’écosystème Java. […]
En mettant en lumière ces faiblesses, le fuzzing aide les développeurs à renforcer la sécurité et la stabilité de leurs systèmes, en corrigeant les bugs avant qu’ils ne puissent être exploités malicieusement.