Un guide complet des tests fuzz

Publié: 2021-05-17

Les tests de sécurité sont l'une des étapes les plus vitales pour s'assurer que votre logiciel est prêt pour sa sortie officielle, que ce soit à des fins professionnelles ou commerciales. Il vous permet de détecter les éventuelles vulnérabilités de votre logiciel et de développer une contre-mesure si un pirate informatique profite d'une telle faille.

Si vous êtes intéressé par les tests de sécurité, vous pouvez apprendre les faits ici maintenant, mais une chose que vous devez savoir est qu'il existe toutes sortes de façons d'effectuer des tests de sécurité, tels que l'évaluation des risques, les tests de pénétration et l'analyse des vulnérabilités. Et si vous êtes déjà un peu familiarisé avec les tests de sécurité, vous avez probablement entendu parler du terme « test fuzz ».

Les tests fuzz sont une technique de test relativement courante dans l'industrie de nos jours, d'autant plus que des géants comme Microsoft et Google l'utilisent depuis plus d'une décennie. Mais ce qui est surprenant, c'est qu'en dépit d'être une technique standard, peu de gens la connaissent. Cela dit, ce guide vise à expliquer ce qu'est le fuzz testing, en commençant par sa définition.

Qu'est-ce que le test fuzz ?

Les tests fuzz, ou ce que d'autres appellent le "fuzzing", consistent à entrer des données invalides ou aléatoires dans un programme pour détecter toute vulnérabilité pouvant entraîner des erreurs exploitables. Cette entrée peut être sous la forme d'un fichier ou d'une entrée directe de l'utilisateur. Ainsi, par exemple, si vous construisez une sorte de programme de calcul, vous devez généralement entrer des nombres ou des opérations mathématiques. Mais si vous effectuez des tests fuzz, vous devrez entrer une entrée invalide telle que des lettres ou même des caractères spéciaux.

Si cela plante le programme ou provoque tout autre type d'erreur, le programmeur suppose qu'il existe une vulnérabilité et peut donc modifier le codage dans l'espoir de résoudre le problème. À première vue, on pourrait penser que les tests fuzz sont les mêmes que d'autres techniques comme l'analyse des vulnérabilités ou les tests de pénétration, mais il y a une raison à sa popularité.

Pourquoi les entreprises utilisent-elles les tests fuzz ?

Il n'existe pas de solution unique en matière de tests de sécurité. Chaque méthode peut détecter des problèmes que d'autres ne peuvent pas détecter ; certains nécessitent des coûts d'exploitation inférieurs, tandis que d'autres sont plus faciles à réaliser. Comme toutes les techniques de test de sécurité, les tests fuzz sont uniques à leur manière. Vous trouverez ci-dessous quelques avantages qui poussent les entreprises à utiliser les tests fuzz.

  • Simplicité : vous savez déjà comment fonctionnent les tests fuzz ; il s'agit d'entrer une entrée invalide dans un programme. La simplicité du processus en général est un grand avantage pour les individus ou les organisations qui manquent de compétences et d'expérience en termes de tests de sécurité.
  • Automatisation : les tests de sécurité peuvent être une étape cruciale dans le développement de logiciels et d'applications, mais il y a souvent d'autres choses à faire en plus de tester constamment le programme. Cependant, c'est une autre histoire avec les tests fuzz puisque vous pouvez automatiser l'ensemble du processus à l'aide de fuzzers.

Les fuzzers sont des outils chargés d'entrer automatiquement des données dans le programme si on leur donne la commande et les conditions nécessaires. Le fait que les tests fuzz permettent l'automatisation des activités en font une technique de test idéale pour les entreprises.

  • Pratique : Habituellement, lors des tests, il faut utiliser autant d'outils que possible pour réduire la probabilité de bogues et maximiser la sécurité du programme. Étant donné que les tests fuzz sont automatisables et simples, c'est un moyen pratique d'améliorer la sécurité du logiciel.

Le fuzzing, en général, est simple et facile à mettre en œuvre, mais il convient de noter qu'il existe toutes sortes d'approches pour tester le fuzz. Selon le type que vous utilisez, la difficulté et la complexité du processus de test peuvent varier. Sur cette note, cela pourrait être le bon moment pour parler des différents types de tests fuzz.

Différentes approches des tests fuzz

Bien qu'il existe plusieurs types de tests fuzz, ils sont pour la plupart similaires les uns aux autres, sauf qu'ils génèrent des entrées différemment. Quoi qu'il en soit, il existe quatre approches pour les tests fuzz :

  • Dumb Fuzzing : Lorsque l'on veut générer une entrée de manière complètement aléatoire, on utilise généralement un dumb fuzzer. Un fuzzer muet est un outil qui produit des entrées sans connaissance préalable ni intelligence du programme, d'où son nom.

Par exemple, si vous construisez un programme de vérification grammaticale, un fuzzer stupide peut finir par générer une image, ce qui est loin de ce que le programme attend. Le fuzzing muet est l'approche la plus simple des tests de fuzz.

  • Fuzzing intelligent : De l'autre côté de la médaille se trouve le fuzzing intelligent. Contrairement au fuzzing muet, le fuzzing intelligent génère une entrée sachant ce que le programme s'attend à recevoir. De plus, un fuzzer intelligent ne générera pas d'entrée qui plantera inévitablement le programme. Au lieu de cela, il proposera une entrée qui peut provoquer un comportement inattendu.

Ainsi, dans l'exemple précédent, un fuzzer intelligent peut générer des caractères spéciaux mais jamais une image ou toute autre entrée inappropriée. Bien que les fuzzers intelligents soient plus difficiles à mettre en œuvre que les fuzzers stupides, ils sont plus précis la plupart du temps.

  • Fuzzing mutationnel : le fuzzing mutationnel implique la génération d'une entrée en modifiant ou, plus précisément, en "mutant" une entrée valide existante. Dans notre exemple avec le programme calculateur, un fuzzer mutationnel peut choisir une entrée valide existante.

Supposons que l'entrée sélectionnée est '10+9.' Un fuzzer mutationnel essaiera de modifier cette entrée en ajoutant, en supprimant ou en modifiant une partie de cette entrée, comme en augmentant la valeur et en la transformant en '180 + 129' ou en changeant l'opération pour aboutir à '10/9.'

  • Fuzzing générationnel : Enfin, le fuzzing générationnel génère des entrées à partir de zéro, ce qui est le contraire du fuzzing mutationnel qui génère des entrées à partir de celles existantes. Comme il n'y a pas de références, les fuzzers générationnels sont beaucoup plus difficiles à mettre en œuvre que les fuzzers mutationnels, mais ils peuvent conduire à plus de données pour le testeur.

Ce qui rend les tests fuzz un peu plus intéressants que d'autres techniques, c'est que vous pouvez combiner différents types pour améliorer l'outil de test. Par exemple, vous pouvez créer un fuzzer à mutation intelligente ou un fuzzer à génération muette, selon les besoins de votre programme. Peut-être que les innombrables combinaisons que vous pouvez effectuer avec les tests fuzz sont une autre raison pour laquelle les entreprises préfèrent les tests fuzz aux autres méthodes.

Emballer

Une fois que vous en savez plus sur les tests fuzz, il est facile de comprendre pourquoi ils sont devenus aussi populaires qu'aujourd'hui. Cependant, il convient également de noter que, comme toute autre technique, le test fuzz présente certains inconvénients. Ainsi, il est essentiel de déterminer si les tests fuzz peuvent faire plus de bien que de mal à votre application ou logiciel. Comme indiqué précédemment, il n'existe pas de solution unique pour les tests de sécurité logicielle, et les tests fuzz ne seront certainement pas cette solution.

Avez-vous des idées à ce sujet? Faites-le nous savoir ci-dessous dans les commentaires ou transférez la discussion sur notre Twitter ou Facebook.

Recommandations des éditeurs :