Un outil de fuzzing open source développé par des chercheurs du Software Reliability Group de l’Imperial College de Londres vise à résoudre certains des problèmes épineux des tests d’applications réseau.
SnapFuzz utilise une série de techniques pour accélérer le test des protocoles réseau et surmonter les contraintes de temps et autres limitations qui rendent difficile le fuzz des applications réseau.
Bien que SnapFuzz en soit encore à ses débuts, il montre des résultats prometteurs et ses développeurs espèrent qu’il deviendra bientôt un pilier de la boîte à outils pour tester les applications réseau.
Les enjeux du fuzzing des applications réseau
Le fuzzing est un moyen populaire de tester et de découvrir des bogues dans un logiciel. Cependant, les applications réseau peuvent être difficiles à fuzzer correctement, disent Anastasios Andronidis et Cristian Cadar, les auteurs de l’article SnapFuzz.
« La plupart des applications réseau sont avec état », ont déclaré les chercheurs La gorgée quotidienne. « Les applications avec état ont des effets secondaires, c’est-à-dire qu’elles effectuent des opérations qui modifient l’environnement de l’application, et ces changements peuvent interférer avec le processus de fuzzing. »
EN RELATION Un nouvel outil de fuzzing différentiel révèle de nouvelles techniques de contrebande de requêtes HTTP
Par exemple, les applications réseau nécessitent d’écrire des données dans le système de fichiers ou d’échanger des messages sur le réseau avec d’autres applications.
« Personne ne veut que des e-mails aléatoires soient envoyés à vos collègues à cause d’une campagne de fuzzing. Un isolement approprié est donc obligatoire », ont déclaré les auteurs.
De plus, selon les chercheurs, ces effets secondaires peuvent interférer avec le processus de fuzzing, ce qui pourrait déduire à tort qu’un échange de messages donné atteint une certaine partie du code, alors qu’en fait ce sont les effets secondaires d’une itération de fuzzing précédente qui déclenchent le comportement. .
« Il est important de réinitialiser efficacement l’état entre les itérations fuzzing », ont déclaré Andronidis et Cadar.
Architecture SnapFuzz
Fuzzers de pointe pour les applications réseau, telles que AFLNetnécessitent des harnais de test spécialisés qui réinitialisent manuellement l’état entre les itérations, ajoutent des délais pour synchroniser l’application réseau avec le fuzzer et spécifient le point dans le code où l’application a terminé son initialisation.
« Celles-ci prennent du temps à écrire et peuvent être assez fragiles. Par exemple, nous avons dû réajuster certains délais lors du passage à une autre machine », ont déclaré les chercheurs.
Les chercheurs ont également remarqué que les développeurs d’applications ajoutent souvent des retards, comme l’arrêt gracieux d’un serveur. « Ceux-ci conviennent dans un environnement de production mais ne sont pas compatibles avec le débit haute performance requis par les fuzzers », ont déclaré Andronidis et Cadar.
Le framework de fuzzing SnapFuzz pour les applications réseau
SnapFuzz s’appuie sur AFLNet et ajoute plusieurs fonctionnalités qui traitent des problèmes de configuration manuelle et de performances rencontrés dans d’autres outils de fuzzing.
Le protocole SnapFuzz transforme automatiquement toutes les communications réseau asynchrones en une communication synchrone beaucoup plus efficace basée sur les sockets de domaine UNIX.
En savoir plus sur les dernières nouvelles sur le piratage
Un système de fichiers copie sur écriture en mémoire réinitialise automatiquement l’état du système de fichiers sans nécessiter l’intervention de l’utilisateur. Et les chercheurs ont également développé une méthode pour déduire automatiquement le point où l’application a terminé l’initialisation, ce qui accélère considérablement le fuzzing.
« Pour réaliser tout cela, SnapFuzz exploite la réécriture binaire. Cette technique intercepte efficacement tous les appels système de l’application sous fuzzing et donne le contrôle total à SnapFuzz pour dicter comment l’application doit interagir avec son environnement, et en particulier le fuzzer », ont déclaré Andronidis et Cadar.
Fuzzing à grande vitesse
Les chercheurs ont utilisé SnapFuzz pour tester cinq applications réseau populaires : LightFTP, TinyDTLS, Dnsmasq, LIVE555 et Dcmqrscp. Ils ont pu réaliser des améliorations de vitesse impressionnantes de 60x, 40x, 30x, 25x et 8x, respectivement.
« En ce qui concerne la facilité d’utilisation, nous avons pu éliminer le besoin de scripts de nettoyage personnalisés et de délais spécifiés manuellement, ce qui peut être difficile à obtenir correctement », ont déclaré Andronidis et Cadar.
Pour le moment, SnapFuzz est un nouveau projet et un work in progress qui n’a été testé que sur des benchmarks bien établis.
« Notre priorité absolue est d’étendre notre travail à davantage de références et aux dernières versions de projets de réseau populaires tels que Redis et Memcached, et de pousser à l’adoption dans l’industrie, en commençant par les entreprises qui fuzzent déjà leurs applications réseau », ont déclaré Andronidis et Cadar.