Ouvrir le menu Fermer le menu

Qu'est-ce que le fuzzing ?

trait de séparation
Temps de lecture : 5 minutes

Renforcez la robustesse de vos logiciels embarqués grâce au fuzzing


La sécurité et la robustesse des logiciels embarqués sont des enjeux cruciaux, notamment face à l'essor des objets connectés et des protocoles industriels. L'une des méthodes les plus préconisées (ex. par le NIST, OWASP…) pour détecter des failles et garantir la résilience des systèmes est le fuzzing, une technique de test automatisée qui permet d'identifier des failles exploitables avant qu'elles ne deviennent des problèmes en production.

Alors, comment tirer parti du fuzzing pour renforcer la robustesse de vos logiciels embarqués ?

Découvrez notre série de trois articles pour maîtriser cette technique essentielle :
  • Qu'est-ce que le fuzzing ? 
  • Intégrer le fuzzing dans vos tests de robustesse*
  • Vers un fuzzing en profondeur et plus efficace*
(*Diffusion dans les prochaines semaines : suivez-nous ou demandez les)


Démarrons par le commencement ...

Qu'est-ce que le fuzzing ?

Le fuzzing (ou fuzz testing) est une technique de test de sécurité et de robustesse utilisée notamment en cybersécurité des logiciels pour identifier des vulnérabilités dans un programme, dans le test de protocole pour valider la robustesse des applications réseau face à des données non conformes ou encore durant le développement logiciel pour identifier des failles avant la mise en production du produit ou système.

Cet article vous propose une plongée au cœur du fuzzing, en explorant :

Fuzzing : le principe

L’idée est d’envoyer une grande quantité de données semi-aléatoires, malformées ou inattendues en entrée d’un programme afin d'observer son comportement. Si le programme crashe, se bloque, ou se comporte de manière anormale, cela révèle une faille exploitable par un attaquant. L'objectif est donc de détecter les vulnérabilités difficiles à trouver par des tests de logiciels conventionnels.

Types de Fuzzing
  • Fuzzing Générique (Dumb Fuzzing) : envoie des données aléatoires sans connaissance préalable du format attendu.
  • Fuzzing Intelligent (Smart Fuzzing) : génère des entrées basées sur une compréhension du format des données (ex : structure d’un fichier PDF, trames réseau, etc.).
  • Mutation-based Fuzzing : modifie légèrement des entrées valides pour voir si des erreurs surviennent.
  • Generation-based Fuzzing : génère entièrement de nouvelles entrées basées sur un modèle du format attendu.

Cas d'utilisation
  • Tests de robustesse des logiciels embarqués.
  • Sécurité des protocoles de communication (CANopen, J1939, TCP/IP, SSL, etc.).
  • Test de fiabilité des operating systems, firmware et drivers…
  • Analyses des logiciels de type parser, (ex. parser de fichier, filtre de Kalman…).
  • Analyse de vulnérabilités dans les applications web, les API et les systèmes critiques.

Pourquoi utiliser le fuzzing pour tester la robustesse des logiciels embarqués ?

Tout d’abord, le fuzzing est une technique puissante pour identifier les vulnérabilités de type ‘zero-day’ dans les logiciels.

Deuxièmement, la plupart des outils de fuzzing sont relativement simples à utiliser.

Troisièmement, le fuzzing permet d'accélérer le déploiement des campagnes de test. Il permet d'augmenter rapidement et facilement la portée de vos tests. Il étend rapidement la couverture du code, la variété des vecteurs de test, et peut être utilisé à la fois pour les tests unitaires et les tests d'intégration.

Enfin, le fuzzing peut être facilement mis à l'échelle, parallélisé et combiné à d'autres techniques, telles que l'analyse statique, l'analyse dynamique et les tests dynamique.

Dans les logiciels embarqués, cette technique est particulièrement utile car :
  • Les ressources sont limitées, ce qui rend difficile l'utilisation de contre-mesures lourdes.
  • Les mises à jour sont complexes et coûteuse, il est donc primordial d'identifier et corriger les failles avant d'expédier le produit.
  • Les protocoles de communication sont souvent critiques (CANopen, J1939, SSL, etc.).
  • Les systèmes doivent fonctionner en environnement hostile, où les perturbations peuvent impacter la fiabilité.

Nous avons exploré les bases du fuzzing, ses différents types et les avantages qu'il offre pour la détection de failles. Il est clair que le fuzzing est un outil puissant pour renforcer la robustesse de vos logiciels embarqués.

Cependant, la théorie ne suffit pas. Il est temps de passer à la pratique et d'intégrer le fuzzing dans vos tests de robustesse. Dans le prochain article, nous vous guiderons à travers les étapes clés pour mettre en œuvre efficacement le fuzzing dans votre processus de développement.

Rendez-vous dans notre prochaine article : "Intégrer le fuzzing dans vos tests de robustesse" pour découvrir comment appliquer concrètement cette technique et améliorer la sécurité de vos systèmes embarqués.

Article rédigé par Jean-François POUILLY - ISIT : pour en savoir plus contactez-le !
0

Ces articles peuvent vous intéresser

image blog article

Accélérer l’analyse SAST

Pourquoi équilibrer les résultats et les ressources des tests de sécurité des applications est-ce important ?

image blog article

ROI de SAST dans DevSecOps

Quel retour sur investissement de la mise en place d'un outil SAST dans votre développement DevSecOps pour les logiciels embarqués ?

image blog article

SAST et SCA dans ISO/SAE 21434

Que dit la norme ISO/SAE 21434 sur les domaines clés de la sécurité et quels outils SAST et SCA s'appliquent.

image blog article

SAST vs SCA

7 différences clés pour choisir la solution qui répondra à votre besoin !