Partager

Contrôle d’attaquant et priorisation de bugs

© CEA
La recherche automatique de bugs constitue un succès majeur de la recherche en cybersécurité des 15 dernières années, et en particulier de l’analyse automatique de code. Fuzzing, exécution symbolique et interprétation abstraite, entre autres techniques, permettent de découvrir des bugs dans nos programmes à un rythme sans précédent. Mais une question se pose alors : que faire de tous ces bugs ?

En observant les dizaines de milliers de bugs découverts par les plateformes publiques de fuzzing (test aléatoire) comme OSS-Fuzz (Google), il est clair que les capacités de correction de la plupart des équipes de développement ne sont plus à la hauteur. Hormis leur quantité, la clarté des rapports fournis par ces méthodes automatiques en matière d’impact sécuritaire laisse fortement à désirer, ce qui rend pratiquement impossible la priorisation des bugs les plus dangereux en vue de leur correction. La nécessité de développer des techniques automatiques d’évaluation de vulnérabilité et d’exploitabilité se fait donc plus que jamais sentir.

Nos travaux introduisent une formalisation du concept de contrôle de l’attaquant sur une vulnérabilité donnée : à quel degré un attaquant peut-il influencer le comportement d’un certain type de bug au travers des entrées du programme ? Intuitivement, un bug dont les effets peuvent être finement contrôlés par l’attaquant est plus dangereux qu’un bug qui offrirait des possibilités moindres à l’attaquant. Il s’agit donc d’évaluer pour un même bug la quantité de comportements uniques contrôlables par l’attaquant. Mais au-delà de cette simple dimension quantitative, il est également nécessaire de distinguer les différents niveaux de dangerosité de ces comportements et d’intégrer toutes ces informations en un score final unique. Là réside toute la nouveauté et la complexité du problème. Le choix d’employer des méthodes formelles dans ce but garantit la transparence et l’explicabilité des résultats, tout en ouvrant de nouvelles perspectives de recherche dans un domaine jusque-là peu abordé, et où les rares travaux préexistants se fondent toujours in fine soit sur le jugement préalable d’un expert, soit sur des classifications grossières a priori (assigner la même dangerosité à toute une classe de bugs).

Ces travaux ont donné lieu à une publication à Usenix Security 2025, une des conférences scientifiques majeures en sécurité (rang A*) ainsi qu’à un nouveau plugin de la plateforme d’analyse de code binaire BINSEC du CEA-List. Notre approche a été évaluée et validée sur des tâches d’évaluation de vulnérabilités réelles de type corruption de mémoire issues de bases de CVEs (liste de vulnérabilités logicielles) ainsi que d’un benchmark de référence composé de vulnérabilités découvertes par Google OSS-Fuzz. Les programmes ciblés varient de bibliothèques largement utilisées comme libxml2 ou libpng à des systèmes complexes de grande échelle comme openssl ou le bootloader universel u-boot, où notre approche a démontré sa capacité à proposer une classification pertinente de la dangerosité des bugs, au-delà de l’état de l’art actuel.


Évolution du nombre de bugs découverts par fuzzing (test aléatoire) dans Linux et toujours ouverts

Notre méthode de priorisation des bugs

Chiffres clés

1500+

Syzbot (Linux) : 1500+ bugs toujours ouverts

4000+

OSS fuzz (Google) : 4000+ bugs toujours ouverts

Il est impossible de corriger tous les bugs repérés par les outils de vérification. Par où commencer ?Nous utilisons les méthodes formelles pour les prioriser selon leur dangerosité.

Rebecca Cabean

Sébastien Bardin

Ingénieur-chercheur et expert fellow —

En savoir plus

Projet et/ou partenariat majeur

  • PEPR Cybersécurité/REV. Intérêt de l’ANSSI et de Schneider.

 

Publication majeure

 

L’évaluation du contrôle d’attaquant sur des bugs ne constitue qu’un premier pas vers l’évaluation automatique de vulnérabilités. De nombreuses problématiques restent en effet à traiter. Comment évaluer d’autres aspects de l’exploitabilité de bugs ? Comment recombiner des résultats d’analyses
disparates en un unique score et en valider la pertinence ? Enfin, comment déployer ces analyses à grande échelle avec un temps de calcul suffisant pour une évaluation à la volée ? Nos travaux marquent un premier pas fondateur, et nous explorons dans le cadre du PEPR Cybersécurité à la fois des extensions conceptuelles et une mise en application réelle.

À lire également

Environnements de développement logiciel

Détection de backdoors

ROSA, développé par le CEA-List, vise la détection de backdoors grâce à des techniques de fuzzing avancées, en particulier sur des protocoles de communications (routeurs ou composants logiciels ...
Lire la suite
Domaines applicatifs

Cybersécurité : garantir la sécurité et la confidentialité par conception

Au cœur des enjeux de souveraineté numérique, la cybersécurité constitue aujourd’hui un pan essentiel de nos sociétés. Garante de l’autonomie et de la paix dans le cyberespace, elle est un ...
Lire la suite