Les vulnérabilités logicielles sont un problème important en matière de cybersécurité. Ils permettent aux produits logiciels d'être attaqués et lorsque ces produits sont connectés à des réseaux autrement sécurisés, ils peuvent fournir un point d'entrée pour les pirates.
Tous les produits logiciels professionnels sont minutieusement testés avant leur sortie. Malheureusement, les vulnérabilités sont encore monnaie courante. Une façon de trouver des vulnérabilités supplémentaires consiste à utiliser une technique de test logiciel connue sous le nom de fuzzing.
Alors qu'est-ce que le fuzzing et comment ça marche ?
Qu'est-ce que le fuzz ?
Le fuzzing est une technique de test de logiciel automatisé qui tente de trouver des vulnérabilités à l'aide d'entrées aléatoires.
Le logiciel se comporte souvent de manière imprévisible lorsque l'utilisateur saisit une entrée autre que celle demandée. Le fuzzing est la pratique consistant à entrer de grandes quantités d'entrées inattendues et à enregistrer ce qui se passe. L'idée est que l'utilisateur peut alors surveiller le logiciel et déterminer si des vulnérabilités sont présentes ou non.
Le fuzzing est utilisé pour tester les produits logiciels et par les professionnels de la sécurité pour déterminer si un réseau est sécurisé. Il est également utilisé par les pirates qui pratiquent le fuzzing pour trouver des vulnérabilités qu'ils peuvent eux-mêmes exploiter.
Les vulnérabilités découvertes par le fuzzing varient considérablement. Une entrée inattendue peut entraîner le blocage du logiciel. Mais il peut également renvoyer des informations privées ou permettre à l'utilisateur d'accéder à des parties du logiciel qui seraient autrement interdites.
Quels sont les avantages du fuzz ?
Le fuzzing n'est qu'une des nombreuses façons dont les produits logiciels peuvent être testés pour détecter les vulnérabilités. C'est populaire parce que :
- Le fuzzing est entièrement automatisé. Une fois qu'un programme de fuzzing est mis en place, il peut continuer à rechercher des vulnérabilités sans intervention humaine.
- Le fuzzing peut trouver des vulnérabilités que d'autres techniques de test de logiciels ne trouvent pas. De ce fait, elle est souvent utilisée en complément des techniques manuelles.
- Le fuzzing est souvent utilisé par les pirates pour trouver les vulnérabilités zero-day. L'utilisation des mêmes techniques que les pirates permet aux développeurs de trouver les vulnérabilités du jour zéro avant eux.
Comment fonctionne le fuzz ?
Un outil utilisé pour le fuzzing comporte généralement trois composants. Ils sont souvent qualifiés de poète, de courrier et d'oracle.
Le poète
Le poète démarre le processus et est chargé de générer un cas de test. Un cas de test est une longue liste d'entrées potentielles.
Le Courrier
Le coursier insère toutes les entrées aléatoires dans le logiciel ciblé. Les fuzzers sont conçus pour le faire automatiquement, permettant à de grandes quantités d'entrées d'être testées en masse.
L'oracle
L'oracle vérifie si l'une des entrées amène le logiciel à faire autre chose que ce pour quoi il a été conçu. Si le fuzzing est effectué à des fins légitimes, le comportement peut alors être reproduit et corrigé. Ou si le fuzzing est effectué par un pirate informatique et que le comportement inattendu est utile, il peut être utilisé à des fins malveillantes.
Comment les attaquants utilisent-ils le fuzzing ?
Le fuzzing est une technique populaire parmi les pirates car elle leur permet de trouver des vulnérabilités dans les logiciels sans avoir accès au code source. Parce que le fuzzing est automatisé, il est également facile à réaliser. Si un pirate découvre une vulnérabilité, il peut être en mesure d'effectuer les attaques suivantes.
Attaques DDoS
Si le fuzzing découvre que certaines entrées nécessitent un long temps de traitement, ces informations peuvent être utilisées pour lancer une attaque DDoS. Une attaque DDoS consiste à envoyer tellement de requêtes à un système qu'il cesse de fonctionner. Le fuzzing permet d'adapter les demandes de manière à ce qu'elles nécessitent le plus de ressources système pour y répondre.
Injection SQL
Une attaque par injection SQL c'est lorsque des instructions SQL malveillantes sont envoyées à une application. Si ces instructions ne sont pas correctement filtrées, elles peuvent permettre à un attaquant d'interagir avec la base de données. Cela peut leur permettre de voler des données ou de les modifier. Le fuzzing est un outil efficace pour tenter de grandes quantités d'instructions SQL et déterminer si certaines produisent une réponse favorable.
Débordement de tampon
Une attaque par débordement de tampon c'est quand plus de données sont ajoutées au tampon d'un programme qu'il ne peut en gérer. Dans ce scénario, il est possible qu'un pirate informatique fasse en sorte que ce programme exécute un code malveillant. Cela peut être utilisé pour voler des données ou pour obtenir un accès non autorisé. Le fuzzing est utilisé pour trouver les entrées qui peuvent provoquer un débordement de tampon.
Types de fuzz
Les outils de fuzzing peuvent être classés en fonction à la fois de la manière dont les cas de test sont générés et de ce que l'on sait du système.
Muet vs. Intelligent
Le fuzzing muet ajoute simplement de grandes quantités d'entrées aléatoires. Il ne choisit pas les entrées les plus susceptibles d'être acceptées par l'application. Cela facilite la mise en œuvre sans rien connaître du logiciel; cependant, il est également très inefficace car la plupart des entrées seront rejetées.
Le fuzzing intelligent génère des entrées que l'application est susceptible d'accepter. Cela nécessite que l'utilisateur comprenne quel format d'entrée est acceptable, puis génère de grandes quantités d'entrées dans ce format. Le fuzzing intelligent nécessite plus d'efforts et de connaissances du produit à mettre en œuvre, mais il est nettement plus efficace.
Mutationnel vs. Générationnel
Les fuzzers mutationnels prennent une entrée qui était précédemment acceptée et y apportent des modifications mineures. Cela permet de générer des entrées susceptibles d'être acceptées sans connaître le format accepté.
Les fuzzers générationnels créent des entrées entièrement nouvelles basées sur ce que l'on sait du format accepté.
Boîte blanche contre Boîte noire
Le fuzzing en boîte noire est utilisé sans aucune information sur l'application testée. Il est moins efficace que le fuzzing en boîte blanche mais peut être appliqué à n'importe quelle application sans accès au code source. Cela le rend populaire parmi les pirates.
Le fuzzing en boîte blanche utilise des informations sur l'application testée pour créer des entrées qui sont les plus susceptibles d'être acceptées et de produire des vulnérabilités. Il est principalement utilisé par les développeurs de logiciels car il est plus efficace que le fuzzing de la boîte noire.
Le fuzzing est une puissante méthode de test de logiciels utilisée par les développeurs de logiciels, les professionnels de la sécurité et les pirates. Sa mise en œuvre nécessite un minimum d'efforts et est capable de détecter des vulnérabilités que d'autres techniques de test de logiciels ne détectent pas.
Il est particulièrement important du point de vue de la sécurité car il est souvent utilisé pour découvrir des vulnérabilités zero-day. Ces vulnérabilités peuvent être soit découvertes et corrigées par des professionnels de la sécurité, soit découvertes et exploitées par des pirates.