Liens connexes

Dépêche modérée par

Dépêche éditée par

: Fusillez vos applications avec Fusil 0.6

Posté par Victor STINNER (Jabber id, page perso, ). Modéré le 19 décembre 2007.
0
Le fuzzing est une technique d'assurance qualité logicielle visant à rechercher des bugs en injectant des données invalides. Fusil est un framework dédié au fuzzing comprenant divers outils pour créer des processus, surveiller un processus existant ou encore injecter des erreurs dans un fichier.

Chaque exécution de la cible se voit attribuer une note de -100% à +100% en utilisant diverses sondes pour déterminer si l'application a planté ou non. Des sondes surveillent l'état d'un processus et sa consommation processeur, d'autres surveillent des fichiers texte tel que syslog, d'autres encore se basent sur la durée d'exécution, etc. Le système de notation est réutilisé pour autoconfigurer Fusil : l'agressivité, nombre d'erreurs injectées, évolue en fonction des notes précédentes. Divers exemples sont fournis pour essayer Fusil et voir de quoi il est capable : Mplayer, Image Magick, ClamAV, PHP, printf, etc. Un dossier temporaire est généré pour chaque exécution. Il est utilisé comme répertoire de travail et est conservé en cas de plantage de la cible.

> Lire la suite (17 commentaires, moyenne: 1,2).   [dépêche : 2833 caractères]

Le projet est écrit en Python et distribué sous licence libre (GNU GPLv2). Son architecture est basée sur un système multi-agents et elle est donc très modulaire. Ce choix s'explique par le fait que Fusil doit pouvoir jouer n'importe quel scénario de test, et qu'il faut donc être le plus modulaire possible. L'implémentation actuelle de Fusil est bien adaptée aux applications Linux en ligne de commande, bien qu'il soit utilisable sur n'importe quel système d'exploitation (Mac OS X, NetBSD, etc.). Des extensions pour d'autres environnements (application réseau, application graphique, plate-forme Windows, etc.) sont les bienvenues.

Bien que Fusil mette en place quelques mesures simples pour protéger la machine de test, souvenez-vous que le but de Fusil est de faire planter des applications. Ne vous plaignez pas si vous perdez des données ! N'utilisez Fusil que dans un environnement dédié aux tests ou si vous savez exactement ce que vous faites. Il n'est pas nécessaire d'installer Fusil pour l'utiliser, il suffit d'utiliser le script run_fusil.sh. Lorsque Fusil trouve un bug, ce n'est pas forcément une faille de sécurité. Le bug peut être un simple déni de service. Il faut reproduire le bug dans un débogueur pour vérifier .

Exemple Mplayer avec un fichier Matroska :

$ fusil -p projects/mplayer.py --max-success=1 movie.mkv
[application] Fusil version 0.6 -- GNU GPL v2
[application] http://fusil.hachoir.org/
[application] Load project projects/mplayer.py
[session 1][project] Start session
[session 2][project] Start session
[session 3][project] Start session
[session 4][project] Start session
[session 5][project] Start session
[session 5][step 9][watch:stdout] Match pattern 'MPlayer interrupted by signal' (score 100.0%) in 'MPlayer interrupted by signal 11 in module: decode_audio'
[session 5][project] End of session: score=100.0%, duration=0.315 second
[project] Success 1/1!
[project] Project done: 5 session in 9.3 second (1850.9 ms per session), total 9.8 second
[project] Total: 1 success
[directory:run-0001] Keep non-empty directory: /home/haypo/prog/fusil/trunk/run-0001
[application] Exit Fusil

Mplayer a planté après 5 essais et 10 secondes. Le fichier fusil.log contient un peu plus d'informations sur l'exécution, et run-0001/session-0005/session.log contient tous les détails sur la session ayant planté. On y trouve le fichier généré qu'on va pouvoir rejouer :

$ mplayer run-0001/session-0005/flashmob-0001.mkv
MPlayer 1.0rc2-4.1.2 (C) 2000-2007 MPlayer Team
(...)
MPlayer interrupted by signal 11 in module: decode_audio
(...)
Erreur de segmentation (core dumped)

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

[+] Framework ... je te hais

Posté par IsNotGood () le 19/12/2007 à 12:36. (lien). Évalué à -3.

Fusil n'a pas l'air d'un framework, il ne produit pas de logiciel.

Et pourquoi diable utiliser framework quand on peut utiliser "environnement de ..." ou "ensemble d'outils ...." ou "suite".

Par contre je suis d'accord pour l'emploi de fuzzing. Il n'y a pas à ma connaissance d'équivalent français.

et par rapport à zzuf ?

Posté par Krunch (Jabber id, page perso, ) le 24/12/2007 à 16:01. (lien). Évalué à 2.

Comment pourrait-on comparer Fusil par rapport à zzuf ? http://sam.zoy.org/zzuf/

--
Free Softwares Users Group Arlon (Sud Luxembourg, Belgique)
pertinent, e adj. Approprié ; qui se rapporte exactement à ce dont il est question.

Revenir en haut de page