Google a réalisé un projet pilote utilisant Gemini pour réécrire des bibliothèques C largement déployées dans Rust – et l'expérience a porté ses fruits comme personne ne l'avait prévu. Peu de temps après que la société a migré ses systèmes de production vers une réécriture générée par l'IA et sécurisée en mémoire de la bibliothèque de traitement GIF giflib, une nouvelle vulnérabilité d'écriture de tas hors limites a été divulguée dans le code C d'origine, attribuée CVE-2026-26740. Les systèmes de Google étaient déjà immunisés.
L'entreprise a efficacement neutralisé une vulnérabilité Zero Day grâce à l'architecture plutôt qu'à l'application de correctifs. Comme l'a expliqué l'équipe d'ingénierie de sécurité de Google dans un article sur son blog Bug Hunters, l'équipe n'avait aucune connaissance de la divulgation en cours lors de la réécriture – la protection était un effet secondaire structurel de l'élimination du code non sécurisé pour la mémoire. Pour en savoir plus sur la façon dont l'IA remodèle la recherche et ingénierie en IA, suivez AI Buzz Wire.
Pourquoi la sécurité de la mémoire est importante maintenant
Les vulnérabilités liées à la sécurité de la mémoire représentent environ 70 % des vulnérabilités des bases de code C et C++, selon les propres recherches de Google. Les bibliothèques tierces constituent un point faible particulier car elles analysent régulièrement des données non fiables. Dans le même temps, l’intervalle entre la découverte d’une vulnérabilité et sa militarisation ne cesse de se réduire : les attaquants, de plus en plus assistés par l’IA eux-mêmes, progressent plus rapidement que les cycles de correctifs traditionnels.
Google préconise depuis longtemps une stratégie de « codage sécurisé » qui donne la priorité aux langages sécurisés en mémoire comme Rust. Le problème non résolu est la vaste base installée de dépendances C et C++ qui ne peut pas être simplement supprimée. Le pilote a posé une question directe : un LLM peut-il convertir rapidement ces dépendances en Rust sans rien casser ?
La cible : giflib
Google a choisi giflib, une bibliothèque de traitement d'images GIF largement utilisée, initialement développée par Eric S. Raymond. La bibliothèque offrait un profil de complexité idéal pour une première tentative : environ 3 000 lignes de code, aucune optimisation SIMD ou assembly et une base de code stable. Il est important de noter que giflib traite souvent des données non fiables dans des environnements non sandbox – exactement le type de surface d’attaque qui inquiète le plus les équipes de sécurité.
L'objectif était ambitieux : produire un remplacement immédiat, sécurisé pour la mémoire et compatible ABI, qui pourrait être déployé sur l'infrastructure de production de Google sans interruption des services dépendants. La traduction initiale de la logique de la bibliothèque a été réalisée rapidement avec l'aide de LLM, mais l'équipe a identifié deux exigences qui se sont révélées décisives : une gestion minutieuse de la limite FFI - le cycle de vie du pointeur et la sémantique de propriété de Rust à l'interface avec les appelants C existants - et ce que Google appelle "la composante sociale de la sécurité", la confiance humaine requise pour déployer les réécritures générées par l'IA dans les services critiques.
Le gant de validation
Pour gagner la confiance de la production, l'implémentation de Rust a été soumise à des tests exhaustifs :
- Tests de régression à grande échelle : Validés sur un ensemble de données de plus de 30 millions de GIF réels, confirmant des résultats identiques à l'implémentation d'origine
- Fuzzing différentiel : Un fuzzer original contre Rust a fonctionné en continu pendant plus de six jours et plus de 200 millions d'itérations sans trouver d'écarts logiques.
- Examen de l'IA contradictoire : Des invites LLM spécialisées ont été utilisées pour rechercher des différences de comportement subtiles entre les deux bases de code que les tests traditionnels pourraient manquer
Le pipeline a fait ses preuves avant son déploiement. Il a identifié un cas limite dans le décodeur LZW et, plus particulièrement, a découvert une vulnérabilité d'écriture hors limites préexistante qui avait été introduite par un correctif hérité interne à Google dans la source C d'origine, que l'équipe a corrigée dans la réécriture de Rust.
Les performances n'ont pas souffert
Une objection courante aux langages sécurisés en mémoire est le coût de la vérification des limites d’exécution. La surveillance de Google sur ses services mondiaux de traitement d'images a montré que l'implémentation de Rust était neutre en termes de performances par rapport à l'original C – un résultat que la société dit avoir observé à plusieurs reprises dans les migrations Rust.
Il y avait un bonus inattendu. Étant donné que la bibliothèque Rust est par construction sécurisée pour la mémoire, Google a pu mettre hors service le sandboxing gourmand en ressources dont certains services de production avaient auparavant besoin pour isoler la bibliothèque C. Cette simplification architecturale a produit une réduction significative de la latence de queue pour les tâches de décodage d'images.
Open Source – Avec des mises en garde honnêtes
Google a publié la réécriture de Rust sur github.com/google/giflib-rs et partage ses conclusions avec la communauté. La société attribue également des efforts complémentaires menés par l'homme, tels que la réécriture manuelle de zlib dans Rust par la Trifecta Tech Foundation, avec des gains de performances substantiels, dans le cadre d'un écosystème plus large de solutions.
Les mises en garde méritent d’être notées. Les réécritures nécessitent de grandes quantités de données du monde réel ou de solides suites de tests existantes pour valider l'équivalence comportementale, et s'écarter d'un projet en amont en changeant de langue entraîne un coût de maintenance réel, en particulier pour les dépendances en cours de développement actif. En d’autres termes, la traduction assistée par l’IA accélère mais ne remplace pas le jugement technique.
Vue d'ensemble
Ce projet pilote est l'une des démonstrations les plus claires à ce jour que les LLM peuvent apporter des améliorations structurelles en matière de sécurité à grande échelle, et pas seulement des suggestions de code. Selon Google, en combinant la vitesse de traduction basée sur LLM avec des tests différentiels et un examen par des experts humains des limites de sécurité, des classes entières de vulnérabilités peuvent être retirées de l'infrastructure de production – avant que quiconque sache quel CVE spécifique sera le prochain.
Source : blog Google Bug Hunters, « Mise à l'échelle de la sécurité de la mémoire : réécritures assistées par l'IA des dépendances C/C++ vers Rust ».
---
Gardez une longueur d'avance sur l'IARecevez les dernières actualités, analyses et avancées en matière d'IA, le tout en un seul endroit.
Lire plus d'actualités sur l'IA →