dimanche 22 septembre 2013

Le fuzzing appliqué à la validation des applications

A OHM 2013 (voir l'article "Mon OHM à moi…") en sortant de la présentation de @agarri_fr aka Nicolas Grégoire (excellente présentation par ailleurs appelé “Low-cost vulnerability research: XSLT fuzzing as a case study”), je me suis accordé un instant de réflexion, assis dans l’herbe, en sirottant un Club-Maté, boisson de tout OHMien qui se respecte, et là j’ai pris une décision, j’allais enfin passer de la théorie du fuzzing à la pratique.
club-mate

Qu'est ce que le fuzzing? (source: Wikipedia)

Le fuzzing est une technique pour tester des logiciels. L'idée est d'injecter des données aléatoires dans les entrées d'un programme. Si le programme échoue (par exemple en plantant ou en générant une erreur), alors il y a des défauts à corriger.
Le grand avantage du fuzzing est que l'écriture de tests est extrêmement simple, ne demande aucune connaissance du fonctionnement du système et permet de trouver des vulnérabilités facilement. D'ailleurs, le fuzzing est également utilisé pour traquer des failles de sécurité .
Cependant la principale limitation du fuzzing est sa grande consommation de ressources mémoire, disque dur, CPU.


Quels sont les outils dont nous disposons?

Il existe une multitude de fuzzers dans différents languages, plus ou moins faciles à utiliser (comme Sulley par exemple).
Si on se focalise sur les outils les plus simples, on peut lister les outils proposés par le CERT de Carnegie Mellon:


BFF
Le CERT Basic Fuzzing Framework (BFF) est un outil logiciel de test permettant de trouver des défauts dans les applications fonctionnant sous Linux et Mac OS X. BFF effectue des mutations sur les données en entrée du logiciel à tester. Une mutation consiste à prendre une donnée bien formattée et à la corrompre de différentes façons à la recherche de la mutation qui générera un crash.

FOE
The CERT Failure Observation Engine (FOE) est un outil logiciel de test permettant de trouver des défauts dans les applications fonctionnant sous Windows. FOE effectue également des mutations sur les données en entrée du logiciel à tester


Que fait @agarri_fr avec le fuzzing?

@agarri_fr (http://www.agarri.fr/) est un chercheur en vulnérabilités à ses heures. Ses recherches se focalisent actuellement sur les parsers autour de XML et de XSLT. Il utilise principalement le fuzzer Radamsa (http://code.google.com/p/ouspg/wiki/Radamsa). Sur cette base @agarri_fr a découvert de nombreuses vulnérabilités dont:


Pour information il existe une extension Radamsa pour Burp Suite.
Si vous souhaitez quelques informations sur XML et XSLT vous pouvez jeter un oeil à l’article Les transformations “XSLT” fournissent toujours de précieux services!


Et comment le fuzzing est-il utilisé dans une phase de validation?

Le chercheur en sécurité informatique Charlie Miller a refusé en 2010 de dévoiler les vulnérabilités "0-day" trouvées dans le code de logiciels célèbres (contrairement au règlement du concours de sécurité informatique Pwn2Own), afin de protester contre les éditeurs qui n'utilisent pas assez cette technique simple selon lui.

Tout est dit! Le fuzzing devrait faire partie intégrante de toutes les phases de validation.


Et moi je fais quoi avec tout ca?

Tout d'abord je m'amuse.

Et à titre d'exercice, j'ai installé FOE dans un environnement Windows avec pour objectif de trouver des vulnérabilités chez quelques éditeurs! Bon ca parait simple sur le papier mais ca l'est beaucoup moins dans la réalité (mais je ne suis pas à l'abri de trouver quelque chose)


A vous de jouer! Et peut-être allez vous découvrir un "0-day" !

Aucun commentaire:

Enregistrer un commentaire

Partager avec...