CyberGlossary

Sécurité applicative

Fuzz testing

Aussi appelé: Fuzzing

Définition

Technique de test automatisé qui soumet un programme à de grandes quantités d'entrées malformées, aléatoires ou inattendues pour révéler des crashs, des corruptions mémoire et des vulnérabilités.

Le fuzz testing (ou fuzzing) bombarde une cible — fonction, parseur, protocole ou application — d'entrées mutées ou générées tout en surveillant crashs, blocages, assertions ou rapports de sanitizers. L'objectif est de trouver des entrées qui violent des propriétés de sécurité : accès hors borne, use-after-free, boucles infinies, exceptions non gérées ou erreurs logiques. Les fuzzers modernes comme AFL++, libFuzzer, Jazzer et Atheris utilisent un feedback de couverture pour faire évoluer les entrées vers de nouveaux chemins, ce qui est très efficace sur les parseurs, décodeurs et codes cryptographiques. Le fuzzing fait partie intégrante des SSDLC chez Google (OSS-Fuzz) ou Microsoft et a permis de découvrir de nombreuses CVE majeures.

Exemples

  • OSS-Fuzz exécutant libFuzzer en continu contre le parseur OpenSSL pour trouver des corruptions mémoire.
  • Jazzer fuzzant un parseur JSON Java pour trouver un DoS via une entrée profondément imbriquée.

Termes liés