Fuzzing
Un article de Haypo.
Retour aux articles de programmation
Le fuzzing est une méthode qui aide à trouver rapidement des erreurs de programmes qui peuvent se révéler être des failles de sécurité. En bref, la technique consiste à envoyer des données mal-formées à un programme et à analyser son comportement : utilisation anormale de la mémoire, crash, erreur, etc.
Plus d'informations dans l'article Fuzz test de Wikipédia.
Tout a commencé avec fuzz en 1990 et le fuzzing d'application UNIX en ligne de commande.
Sommaire |
[modifier] Points d'entrée
- Fichier (open)
- Clavier (stdin)
- Signaux (kill/signal/sigaction)
- Variable d'environnement (getenv())
- Gestion de la mémoire (malloc() & cie)
- Système de fichier
- Chemin courant (getcwd())
- Erreur ENOSPC (28) : tester avec /dev/full
- Présence ou non d'un fichier
- Erreur de lecture/écriture
- Gestion du temps (gettimeofday(), time(), ...)
- En gros toute la libc :-)
- etc.
[modifier] Bugs trouvés
- DoS (Denial Of Service) : consommation excessive de la mémoire ou deu temps processeur
- Envoi d'un signal fatal au programme:
- SIGSEGV : Erreur de segmentation mémoire
- SIGABRT : abort()
- SIGXFSZ : Dépassement de la taille limite d'un fichier
- SIGFPE : Erreur arithmétique (en nombre entier ou flottant) comme par exemple une division par zéro
- SIGILL : Instruction illégale
- SIGSTKFLT : erreur de la pile du coprocessor arithmétique
- SIGBUS
- Erreur mineure indiquée par un message dans le programme
- Programme devenu instable
- etc.
[modifier] Quelques fuzzers
[modifier] Fuzzer de fichier
- Fusil: mon prore fuzzer :-)
- zzuf de Sam Hocevar
[modifier] Fuzzer réseau
- (en) BSS : Outil permettant de fuzzer une pile Bluebooth
[modifier] Frameworks
[modifier] Failles découverte par du fuzzing
- Bug (redécouvert) dans le pilote Madwifi pour Linux (carte Wifi)
- Lire égalemente les détails sur madwifi.org (la faille avait déjà été corrigée)
[modifier] Liens
- Sidewinder:
- Evolving art of fuzzing:
- Liste de fuzzers
- Liste de diffusion de fuzzing (whitestar.linuxbox.org) (crée en avril 2006)
- Injecting faults into the kernel : Partant du constat que le code du Linux noyau plante de moins en moins, certains se sont mis à déclancher volontairement des erreurs pour tester le code qui traite les erreurs.
- http://www.scadasec.net/secwiki/FuzzingTools
- http://www.owasp.org/index.php/Fuzzing
- Site Internet d'Ilja van Sprundel : auteur de nombreux fuzzers divers et variés (je me suis basé sur son programme mangle.c)
- (en) Liste de fuzzer
- (en) Analysing Common Binary Parser Mistakes
- (en) fuzz
- (en) Fuzzing: Breaking software in an automated fashion (8 décembre 2005)

