Fuzzing

Définition, exemples et bonnes pratiques

À retenir

  • C'est une méthode de test automatisée et intensive.
  • Elle vise à découvrir des bugs de sécurité et de stabilité.
  • Elle repose sur l'injection de données malformées ou inattendues.

Le fuzzing est une technique de test informatique qui consiste à envoyer automatiquement une avalanche de données imprévues, incorrectes ou aléatoires à un programme pour voir s'il plante ou se comporte anormalement. C'est un peu comme si vous testiez la solidité d'une serrure en essayant d'y insérer des milliers de clés tordues ou d'objets inappropriés pour voir si elle finit par céder.

Étymologie

Le terme vient du verbe anglais to fuzz, qui signifie rendre flou ou confus. En informatique, il a été popularisé à la fin des années 1980 par Barton Miller, qui a eu l'idée de tester la résistance des logiciels face aux bruits parasites et aux données corrompues transmises par les réseaux de l'époque.

Exemples d'usage

  • Fournir un fichier image volontairement mal formé à un navigateur web pour vérifier s'il affiche une erreur proprement ou s'il s'arrête brutalement.
  • Remplir un formulaire d'inscription avec des millions de caractères là où un simple nom est attendu.
  • Injecter des données binaires aléatoires dans un protocole de communication réseau.

Cas d'usage

Cette méthode intervient principalement dans la cybersécurité pour débusquer des failles critiques (comme les dépassements de tampon) avant qu'elles ne soient exploitées par des pirates. Elle est aussi utilisée par les éditeurs de logiciels pour améliorer la stabilité de leurs applications complexes.

Bonnes pratiques

Il est essentiel de surveiller l'état du système pendant le test pour identifier précisément quel jeu de données a provoqué un plantage. Il est aussi conseillé de privilégier le 'fuzzing intelligent' (qui connaît la structure attendue des données) plutôt que le pur hasard, afin d'aller plus vite dans l'exploration des bugs.

Synonymes

test de robustesse test par injection de données test aléatoire

Antonymes

test unitaire test de conformité test formel

Conseil

Si vous développez une application, utilisez le fuzzing sur les parties qui traitent des entrées utilisateur ou des fichiers externes. Utilisez des outils reconnus comme AFL ou LibFuzzer pour automatiser cette tâche fastidieuse mais cruciale pour la sécurité.

Questions fréquentes

Le fuzzing remplace-t-il les tests classiques ?

Non, c'est un complément indispensable qui trouve des erreurs que les tests humains ou unitaires ne prévoient pas.

Est-ce réservé aux experts ?

Il existe des outils automatiques (fuzzers) accessibles, mais analyser les résultats demande souvent des compétences en programmation ou en sécurité.