8
votes

Test de fuzz xml-analyseur

Je veux tester Fuzz-Testez un analyseur XML et je me demande s'il y a des fuzzers appropriés.
Il serait agréable de générer des ordures aléatoires, mais non seulement des avantages de la spécification de schéma existante comme XSD ou DTD.


1 commentaires

Vote à fermer en tant que hors-thème: "Questions nous demandant de recommander ou de trouver un livre, un outil, une bibliothèque de logiciels, un didacticiel ou une autre ressource hors site sont hors tension pour débordement de pile car ils ont tendance à attirer des réponses et des spams d'opinion. Décrivez le problème et ce qui a été fait jusqu'à présent pour le résoudre. "


3 Réponses :


7
votes

Voici quelques fluzeurs XML que j'ai chiés lors d'une recherche plusieurs mois en arrière:

  • désordonné . Cela ne semble pas être en développement actif, avec la dernière mise à jour en 2007. (projet n'est plus disponible sur Sourceforge, pour la postérité, voir archive.org pour le contenu partiel et PacketStorm à télécharger. Il a été ajouté à la pêche-1.0, mais n'est plus apparu dans l'édition de la communauté de pêche-3.1 la source du tout).
  • Fuzzware . Semble avoir une prise en charge décente du fuzzing basé sur XSD.
  • pêche . Le projet Fuzzer de pêche vous aidera à générer des fichiers XML valides, mais ne vous aidera probablement pas beaucoup si vous souhaitez fuzzez l'analyseur au lieu de l'application à l'aide de l'analyseur. Cela vaut certainement la peine d'essayer, mais être prévenu que la création d'un modèle de données peut être un processus lourd si vous n'êtes pas au courant des différentes structures de XML. Le projet associé HotFuzz vaut également la peine de mentionner ici.
  • JBrofuzz ​​. Ceci est assez activement développé. Je n'ai pas trouvé de tutoriel décrivant ses capacités de floue XML (et SOAP). Vous pourriez être aidé par le fait qu'il peut être utilisé comme une bibliothèque fuzzing seul.
  • Défension de Codenomicon pour XML . Ceci est un fluzer commercial. Disclaimer : J'ai évalué les défenseurs dans le passé et je l'ai trouvée adaptée à diverses fins. L'analyseur XML seul peut être floue à l'aide de diverses techniques - vous pouvez alimenter des fichiers informatiques générés par le FUZZER ou émettre des demandes HTTP, etc. Soyez à l'esprit que différentes approches devront être utilisées si vous avez besoin de fuzz votre application au lieu de l'analyseur à la place de l'analyseur. ; Les défenseurs permettront de sélectionner les différentes classes d'entrées souhaitées dans les entrées Fuzz, de sorte que vous puissiez cibler votre analyseur, votre application ou vos deux.

0 commentaires

3
votes

Cela pourrait être ce que vous considérez "générateur de déchets", mais je vous demanderai de vérifier de toute façon.

Radamsa de Université de l'Université d'Oulu est le flux de flûtisser gratuit général. Vous pouvez vous faire fuzzer avec cela vraiment facilement. Donnez-lui un exemple de fichiers et Radamsa génère des fichiers floues pour vous.

Les différents FUZZERS inclus peuvent faire de simples bits Flips à un apprentissage complexe de la structure et de le floues.

Le code peut être trouvé à partir de code Google .


1 commentaires

Pas vraiment XML lié, mais cela semble très agréable pour le flou général.



1
votes

American Fuzzy Lop pourrait être un bon choix ici. Il utilise un algorithme génétique qui apprendra à induire de nouveaux chemins de code dans votre programme et à proposer des cas de test qui optimisent la couverture.


3 commentaires

AFL dispose de stratégies de mutation qui conviennent parfaitement aux formats binaires, mais pas pour XML. Cependant, vous pouvez écrire un mutateur personnalisé pour XML comme décrit dans Recensement-labs.com /media/choronzon-zeronights-2015.pdf et branchez-le dans Libfuzzer, Honggfuzz ou Mozilla's Fork of AFL qui prend également en charge les mutateurs personnalisés.


@SHNATSEL Y a-t-il quelque chose de spécifique à propos de XML qui ne fonctionne pas bien avec AFL? IIRC SQLITE a été assez floue très bien avec AFL avant même que l'introduction de la fonctionnalité des jetons de langue. Avec la fonctionnalité, il devrait être encore plus facile de fuzz l'analyseur.


C'est un format textuel verbeux qui dépend de nombreux octets très spécifiques étant mis dans des endroits très spécifiques (par exemple une balise valide complète, voire une paire d'étiquettes d'ouverture et de fermeture). Les stratégies de mutation de l'AFL conviennent bien aux données binaires, mais ne gèrent pas de tels formats: des trucs comme des "bits à bascule" ne font pas grand chose, mais les attributs en mouvement entre les étiquettes auraient découvert de nouveaux États. Choronzon a prouvé cela expérimentalement. Toutefois, si vous souhaitez utiliser AFL vers Fuzz XML, vous pouvez écrire votre propre mutateur XML-Cawn-Aware, comme cela a été fait pour Choronzon.