Journal Sortie de Fusil le fuzzer en version 1.0beta3

Posté par (page perso) .
Tags :
18
3
sept.
2008
Fusil est à la fois une boîte à outils permettant d'écrire son propre fuzzer et une suite de fuzzers : Apache, ClamAV, Firefox, gettext, gstreamer, ImageMagick, libpoppler, printf(), Mplayer, ogg123, PHP et Python. Il permet d'écrire rapidement un fuzzer et s'occupe de gérer une campagne de fuzzing (création de fichiers, nettoyage en quittant, classement des erreurs, etc.). Un fuzzer est un outil d'assurance qualité permettant de générer des bugs dans vos programmes. Ceci permet d'améliorer la robustesse de vos applications face aux situations rares ou inattendues (échec d'une allocation mémoire, fichier corrompu, ...) et aux attaques d'un pirate. Fusil a déjà servi à remonter des dizaines de bugs dans divers projets (notamment ceux pour lesquels il existe un fuzzer).

Avec la version 1.0, Fusil peut maintenant être utilisé sans risque. Il utilise un utilisateur dédié pour créer les processus fils et limite leurs ressources (mémoire, nombre total de processus, etc.). L'ajout d'un débogueur, python-ptrace, aide à la classification des erreurs (lecture/écriture invalide en mémoire, division par zéro, dépassement de la pile, ...) en renommant le dossier de travail du fuzzer.

Cette version étant une version béta, elle doit être testée au maximum sur différentes architectures et systèmes d'exploitations. N'hésitez pas à remonter des bugs !

Le développement de la version 1.0 (actuellement en phase béta) aura nécessité environ un an de développement. Le projet est distribué sous licence GPLv2, écrit en Python et packagé pour Debian, Mandriva et OpenEmbedded. Bien que le développement soit essentiellement réalisé sous Linux, Fusil fonctionne bien sous FreeBSD et devrait fonctionner sur n'importe quel système POSIX (UNIX et BSD en particulier).



Pour l'installation, vous aurez besoin de python-ptrace et d'un utilisateur système « fusil » (et d'un groupe « fusil »). Un fuzzer s'exécute simplement en tapant son nom : « fusil-gettext » par exemple. Chaque fuzzer a ses propres options, n'hésitez pas à essayer l'option « --help ».

Pour la documentation, consultez le dossier doc/. Des exemples simples sont disponibles dans le dossier examples/.

python-ptrace ne fonctionne correctement que sous Linux (i386, x86_64, PPC32) et FreeBSD (i386). Si vous avez des problèmes avec une autre architecture/système d'exploitation, vous pouvez le désactiver avec le fichier de configuration de Fusil (~/.config/fusil.conf) :

[debugger]
use_debugger = False

Consultez doc/configuration.rst pour connaître les autres options de Fusil.

Au passage, si vous ne connaissez pas python-ptrace, sachez qu'il est écrit intégralement en Python et inclut les programmes strace.py et gdb.py (clones de strace et gdb). strace.py est très proche de strace, mais possède plus d'options et fonctionne sous FreeBSD sans émulation Linux (dossier /proc). Au contraire, gdb.py est très limité, il ne gère ni les threads ni les symboles par exemple.
  • # Je vais tester

    Posté par (page perso) . Évalué à 5.

    J'avais beaucoup apprécié ton article dans MISC.

    Speed dating is useless. 30s isn't long enough to explain the benefits of functional programming in Haskell

    • [^] # Re: Je vais tester

      Posté par (page perso) . Évalué à 8.

      Oh, drôle de hasard ! Il y a un dossier « fuzzing » dans le MISC ce mois (n°39) avec justement un article dédié à Fusil :-)
    • [^] # Re: Je vais tester

      Posté par (page perso) . Évalué à 2.

      Moi j'appérice tout autant le blog que l'article. C'est très instructif à lire la plupartu du temps (j'adore la partie sur les générateurs de nombres aléatoires).
  • # Un outil pour générer des bugs ?

    Posté par . Évalué à 3.

    Un fuzzer est un outil d'assurance qualité permettant de générer des bugs dans vos programmes
    Un programme qui rajoute des bugs ? super !
    La phrase est un peu tendancieuse, même si facilement compréhensible. Mais j'aurais plutot dit "détecter".

    Sinon, cet outil est vraiment interressant et puissant pour le peu que j'ai eu à l'utiliser. Toutes mes félicitations à son auteur
  • # Suicide

    Posté par . Évalué à 3.

    Peut-on "fuzzer" Fusil lui même ?
    • [^] # Re: Suicide

      Posté par (page perso) . Évalué à 2.

      Il n'existe pas de fuzzer pour Fusil, mais c'est une bonne idée. Fusil est une bibliothèque Python qui est utilisée par différents fuzzers. Pour fuzzer Fusil, il faudrait... hum... générer des fuzzers aléatoires, et voir comment Fusil réagit ? Pour l'instant, je me contente d'exécuter les fuzzers et corriger les erreurs (erreur de Fusil, pas de la cible genre Firefox ;-)) quand j'en rencontre...
  • # et aussi dans archlinux

    Posté par . Évalué à 1.

Suivre le flux des commentaires

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