Tutoriel Fuzz Testing (Fuzzing): Qu'est-ce que c'est, types, outils & Exemple

Table des matières:

Anonim

Test de Fuzz

Le test Fuzz ou Fuzzing est une technique de test logiciel qui consiste à insérer des données invalides ou aléatoires appelées FUZZ dans un système logiciel pour découvrir les erreurs de codage et les failles de sécurité. Le but du test fuzz est d'insérer des données à l'aide de techniques automatisées ou semi-automatisées et de tester le système pour diverses exceptions telles que la panne du système ou l'échec du code intégré, etc.

Le test Fuzz a été développé à l'origine par Barton Miller à l'Université du Wisconsin en 1989. Le test Fuzz ou Fuzzing est une technique de test logiciel, et c'est un type de test de sécurité .

Pourquoi faire des tests Fuzz?

  • Habituellement, les tests flous détectent le défaut ou le défaut de sécurité le plus grave.
  • Les tests Fuzz donnent des résultats plus efficaces lorsqu'ils sont utilisés avec les tests Black Box, les tests bêta et d'autres méthodes de débogage.
  • Le test Fuzz est utilisé pour vérifier la vulnérabilité du logiciel. Ce sont des techniques de test très rentables.
  • Le test Fuzz est l'une des techniques de test de la boîte noire. Le fuzzing est l'une des méthodes les plus couramment utilisées par les pirates pour trouver la vulnérabilité du système.

Comment faire des tests Fuzz

Les étapes du test flou comprennent les étapes de test de base:

Étape 1) Identifiez le système cible

Étape 2) Identifiez les entrées

Étape 3) Générer des données floues

Étape 4) Exécutez le test en utilisant des données floues

Étape 5) Surveiller le comportement du système

Étape 6) Enregistrer les défauts

Exemples de Fuzzers

  • Les Fuzzers basés sur les mutations modifient les échantillons de données existants pour créer de nouvelles données de test. C'est l'approche très simple et directe, cela commence avec des échantillons valides de protocole et continue de modifier chaque octet ou fichier.

  • Les Fuzzers basés sur la génération définissent de nouvelles données en fonction de l'entrée du modèle. Il commence à générer une entrée à partir de zéro en fonction de la spécification.

  • Fuzzer PROTOCOL-BASED , le fuzzer le plus efficace est d'avoir une connaissance détaillée du format de protocole testé. La compréhension dépend de la spécification. Il s'agit d'écrire un tableau de la spécification dans l'outil puis, en utilisant une technique de génération de test basée sur un modèle, de passer par la spécification et d'ajouter une irrégularité dans le contenu des données, la séquence, etc. Ceci est également connu sous le nom de test de syntaxe, de test de grammaire, de test de robustesse, etc. Fuzzer peut générer des cas de test à partir d'un cas existant, ou utiliser des entrées valides ou non valides.

Il existe deux limitations du fuzzing basé sur un protocole:

  1. Les tests ne peuvent pas continuer tant que la spécification n'est pas arrivée à maturité.
  2. De nombreux protocoles utiles sont une extension des protocoles publiés. Si le test fuzz est basé sur des spécifications publiées, la couverture des tests pour les nouveaux protocoles sera limitée.

La forme la plus simple de technique de fuzzing consiste à envoyer une entrée aléatoire au logiciel sous forme de paquets de protocole ou d'événement. Cette technique de passage des entrées aléatoires est très puissante pour trouver des bogues dans de nombreuses applications et services. D'autres techniques sont également disponibles, et il est très facile à mettre en œuvre. Pour mettre en œuvre ces techniques, il suffit de modifier les entrées existantes. Nous pouvons changer d'entrée simplement en interchangeant les bits d'entrée.

Types de bogues détectés par Fuzz Testing

  • Échecs d'assertions et fuites de mémoire cette méthodologie est largement utilisée pour les grandes applications où des bogues affectent la sécurité de la mémoire, ce qui est une vulnérabilité grave.

  • Entrée invalide

    Dans les tests de fuzz, les fuzzers sont utilisés pour générer une entrée invalide qui est utilisée pour tester les routines de gestion des erreurs, et ceci est important pour le logiciel qui ne contrôle pas son entrée. Le fuzzing simple peut être connu comme un moyen d'automatiser les tests négatifs.

  • Bogues d'exactitude

    Le fuzzing peut également être utilisé pour détecter certains types de bogues de "correction". Comme une base de données corrompue, des résultats de recherche médiocres, etc.

    Outils de test Fuzz

    Les outils qui sont utilisés dans la sécurité Web peuvent être largement utilisés dans les tests fuzz tels que Burp Suite, Peach Fuzzer, etc.

  • Fuzzer pêche

    Peach Fuzzer offre une couverture plus robuste et plus sécurisée qu'un scanner. D'autres outils de test peuvent rechercher uniquement des threads connus, tandis que Peach Fuzzer permet aux utilisateurs de trouver des threads connus et inconnus.

  • Proxy Spike

    Il s'agit d'un outil de qualité professionnelle recherchant les vulnérabilités au niveau des applications dans les applications Web. SPIKE Proxy couvre les bases, telles que l'injection SQL et les scripts intersites, mais c'est une infrastructure Python complètement ouverte. SPIKE Proxy est disponible pour Linux et Windows.

  • Webscarab

    Webscarab est écrit en Java donc portable sur de nombreuses plates-formes. Pour analyser l'application, le framework Webscarab est utilisé qui communique en utilisant les protocoles HTTP et HTTPS.

    Ex: Webscarab fonctionne comme un proxy d'interception, il permet à l'opérateur de revoir et de modifier les requêtes créées par le navigateur avant qu'elles ne soient reçues par le serveur. Et permet de revoir et de mettre à jour la réponse générée par le serveur avant d'être reçue par le navigateur. De cette façon, si web scarab trouve une faille, il fera la liste des problèmes signalés.

  • OWASP WSFuzzer

    WSFuzzer est un programme GPL écrit en Python. Un programme sous GPL cible actuellement les services Web. Dans la version actuelle d'OWASPWSFuzzer, les services SOAP basés sur HTTP sont la cible principale.

Avantages du test Fuzz

  • Les tests Fuzz améliorent les tests de sécurité des logiciels.
  • Les bogues trouvés dans le fuzzing sont parfois graves et la plupart du temps utilisés par les pirates informatiques, y compris les plantages, les fuites de mémoire, les exceptions non gérées, etc.
  • Si l'un des bogues ne parvient pas à être remarqué par les testeurs en raison de la limitation du temps et des ressources, ces bogues se trouvent également dans les tests Fuzz.

Inconvénients du test Fuzz

  • Les tests Fuzz à eux seuls ne peuvent pas fournir une image complète d'une menace de sécurité globale ou des bogues.
  • Les tests Fuzz sont moins efficaces pour traiter les menaces de sécurité qui ne provoquent pas de pannes de programme, telles que certains virus, vers, chevaux de Troie, etc.
  • Les tests Fuzz ne peuvent détecter que de simples défauts ou menaces.
  • Pour fonctionner efficacement, il faudra beaucoup de temps.
  • La définition d'une condition de valeur limite avec des entrées aléatoires est très problématique, mais maintenant, en utilisant des algorithmes déterministes basés sur les entrées des utilisateurs, la plupart des testeurs résolvent ce problème.

Résumé:

En génie logiciel, les tests Fuzz montrent la présence de bogues dans une application. Le fuzzing ne peut garantir une détection complète des bogues dans une application. Mais en utilisant la technique Fuzz, cela garantit que l'application est robuste et sécurisée, car cette technique permet d'exposer la plupart des vulnérabilités courantes.

Cet article est contribué par Priyanka Kothe