Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Fuzz Testing Security

devsecops

Définition

Le Fuzz Testing (ou Fuzzing) de sécurité est une technique de test dynamique qui génère automatiquement des entrées invalides, inattendues, ou aléatoires et les envoie à l'application sous test pour provoquer des comportements non anticipés — crashes, exceptions non gérées, violations de mémoire, deadlocks — révélant ainsi des vulnérabilités de sécurité qui ne seraient pas détectées par des tests avec des entrées valides et prévues. Le fuzzing automatise l'exploration de l'espace d'entrée d'une application à une échelle impossible manuellement. Les types de fuzzing en DevSecOps incluent : le Dumb Fuzzing (génération purement aléatoire d'inputs — simple mais peu efficace pour les applications avec des parsers complexes), le Smart Fuzzing ou Structure-aware Fuzzing (le fuzzer comprend le format des inputs — JSON, XML, HTTP, protobuf — et génère des inputs valides mutés, plus efficace pour traverser les validations d'entrée superficielles), et le Coverage-guided Fuzzing (le fuzzer trace la couverture de code pendant les tests et génère des inputs qui explorent de nouveaux chemins d'exécution — la technique la plus efficace, utilisée par AFL++, libFuzzer, hongfuzz). Les domaines d'application du fuzzing en sécurité applicative incluent : les parsers de données (formats de fichiers, protocoles réseau, formats de message — zones classiques de vulnérabilités de corruption mémoire), les APIs REST et GraphQL (fuzzing des paramètres d'entrée pour découvrir des injections, SSRF, path traversal), les interfaces en ligne de commande (fuzzing des arguments pour découvrir des injections de commandes), et les bibliothèques cryptographiques (fuzzing des implémentations TLS, des parsers X.509). Les outils de fuzzing populaires pour le DevSecOps incluent : AFL++ (C/C++/Go, coverage-guided), libFuzzer (intégré à LLVM, C/C++), go-fuzz (Go), Jazzer (Java, JVM languages), Atheris (Python), RESTler (Microsoft Research, REST API fuzzing automatique basé sur la spécification OpenAPI), et boofuzz (fuzzing de protocoles réseau).

Coverage-guided Fuzzing avec AFL++

AFL++ est le fuzzer coverage-guided de référence pour les programmes C/C++ : afl-fuzz -i testcases/ -o findings/ -- ./target_binary @@ (lance le fuzzing, @@ est remplacé par les fichiers de test générés). AFL++ instrumente le binaire cible (afl-cc/afl-c++) pour tracer la couverture de code et génère des inputs qui exercent de nouveaux chemins d'exécution. Les crashes et timeouts sont enregistrés dans findings/crashes/ et findings/hangs/ — chaque fichier est un input reproduisant le problème. Ces findings sont ensuite triés (par gravité) et transformés en test cases de régression pour éviter les régressions futures.

Fuzzing d'API REST avec RESTler

Microsoft RESTler automatise le fuzzing des APIs REST à partir de leur spécification OpenAPI : restler compile --api_spec openapi.json (compile la spécification), restler fuzz --grammar_file Compile/grammar.py --target_ip localhost --target_port 8080 --time_budget 4 (fuzze l'API pendant 4 heures). RESTler génère automatiquement des séquences de requêtes valides (pour satisfaire les dépendances entre endpoints) puis les mute pour découvrir des comportements non anticipés. Les erreurs 500 et les comportements anormaux sont loggués comme findings potentiels. Intégrable dans CI/CD pour un fuzzing de régression rapide (1h) ou complet (24h+) en parallèle des tests.

Fuzzing continu en CI/CD avec ClusterFuzz

Le fuzzing continu (contrairement au fuzzing ponctuel) est la pratique de fuzzer en permanence les composants critiques de l'application en parallèle du développement. Google ClusterFuzz (open source) et OSS-Fuzz (programme Google pour les projets open source) fournissent une infrastructure de fuzzing continu à grande échelle. Pour les équipes DevSecOps, des solutions comme Google's FuzzBench ou le fuzzing natif GitHub Actions (via les actions de fuzzing tierces) permettent d'intégrer du coverage-guided fuzzing continu dans les pipelines CI, avec alertes automatiques lors de la découverte de nouveaux crashes et suivi de la couverture de code de fuzzing dans le temps.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis