Google OSS-Fuzz - L'IA qui traque les bugs de sécurité

par Korben -

La sécurité informatique ressemble parfois à une partie de cache-cache géante entre les développeurs et les bugs, et forcement comme l’erreur est humaine, certains bugs de sécurité, peuvent rester longtemps cachés.

Heureusement, Google vient de sortir l’artillerie lourde avec son projet OSS-Fuzz dopé à l’intelligence artificielle. Et ça marche bien puisque le programme vient de dénicher pas moins de 26 vulnérabilités critiques qui se cachaient depuis des années dans des projets open source majeurs.

Le fuzzing pour ceux qui ne seraient pas familiers avec ce concept, c’est comme si vous donniez à manger n’importe quoi à un programme pour voir s’il fait une indigestion. Plus sérieusement, le fuzzing consiste à bombarder un logiciel avec des données aléatoires ou malformées pour tester sa résistance et détecter d’éventuelles failles.

Il existe principalement deux approches : le fuzzing par mutation, qui modifie des échantillons de données existants, et le fuzzing par génération, qui crée de nouvelles données de test basées sur des modèles d’entrée. Une technique redoutable, donc, mais qui demande traditionnellement beaucoup de temps et d’expertise humaine.

Et c’est là qu’OSS-Fuzz entre en scène. Au lieu de se contenter de tests aléatoires, l’outil utilise des modèles de langage avancés pour générer des tests intelligents et ciblés. Le projet est compatible avec une impressionnante collection de modèles, de GPT-3.5 à Gemini Ultra, en passant par Claude, ce qui offre une flexibilité maximale aux développeurs.

Ce qui le rend particulièrement puissant aussi, c’est sa capacité de fuzzing guidé : l’outil utilise une boucle de rétroaction pour évaluer les nouvelles entrées mutées. Ainsi, si une entrée génère un nouveau signal (comme une augmentation de la couverture du code), elle est définitivement ajoutée au corpus de test, permettant ainsi une amélioration continue de la couverture.

Prenons l’exemple d’OpenSSL, cette bibliothèque crypto utilisée sur des millions de serveurs dans le monde. L’équipe de Google a découvert une faille référencée sous le doux nom de CVE-2024-9143, qui aurait probablement continué à se cacher pendant encore 20 ans avec les méthodes d’analyse traditionnelles.

Et OSS-Fuzz a également mis au jour d’autres vulnérabilités dans une foule d’autres outils populaires : cJSON, SQLite3, libplist… La liste est longue et diverse. Et le plus impressionnant, c’est sa capacité à améliorer significativement la couverture de code : Sur certains projets, l’outil a quand même réussi à augmenter jusqu’à 29% le nombre de lignes de code testées par rapport aux tests manuels !

Cette efficacité n’est pas surprenante quand on sait que le fuzzing est particulièrement efficace pour détecter des bugs critiques comme les débordements de tampon, les utilisations après libération, les fuites de mémoire, ou encore les bugs arithmétiques comme les divisions par zéro.

L’outil excelle particulièrement dans sa capacité à générer des cibles de fuzzing pertinentes. En gros, il sait exactement où et comment taper pour faire craquer les défenses d’un programme.

Le processus est désormais presque entièrement automatisé, depuis la création initiale des tests jusqu’à l’analyse des crashes détectés, et Google travaille déjà sur la prochaine étape à savoir la correction automatique des vulnérabilités découvertes.

Évidemment, cette ✨ POUISSANCE ✨ vient avec son lot de responsabilités. Google a donc mis en place tout un protocole pour gérer la divulgation responsable des vulnérabilités découvertes. Les failles sont d’abord signalées aux mainteneurs des projets concernés, qui ont un délai raisonnable pour corriger le tir avant que l’information ne soit rendue publique.

Et si OSS-Fuzz est capable de trouver ces vulnérabilités, on peut parier que les acteurs malveillants du game disposent déjà d’outils similaires. C’est pourquoi intégrer l’IA dans les processus de tests n’est plus vraiment une option, mais une nécessité car les méthodes traditionnelles de détection de bugs, aussi rigoureuses soient-elles, ne suffisent plus face à la complexité croissante des systèmes modernes.

Bref, si vous gérez des projets open source ou travaillez dans la sécurité informatique, je ne peux que vous conseiller d’aller jeter un œil à OSS-Fuzz. L’outil prend en charge plusieurs langages de programmation (C, C++, Python, Java) et s’intègre parfaitement dans les workflows de développement existants. De plus, il est particulièrement pertinent pour tout ce qui est projets traitant des entrées non fiables ou complexes, comme les parseurs, les codecs média, les protocoles réseau, les bibliothèques cryptographiques, ou encore les compilateurs et interpréteurs.

A vous de jouer maintenant !

En savoir plus sur le blog de sécurité de Google

Que faire après le bac quand on est passionné de cybersécurité ?
Contenu partenaire
Logo de l'école de Cybersécurité Guardia
Tracking Matomo Guardia

Entièrement dédiée à la cybersécurité, l'école Guardia est accessible soit directement après le bac (post-bac), soit après un bac+2 ou bac+3. En rejoignant l'école Guardia, vous deviendrez développeur informatique option cybersécurité (Bac+3) ou expert en cybersécurité (Bac+5).

Cliquez ici pour en savoir plus