Proto6 : Six vulnérabilités critiques découvertes dans Protobuf.js, menaçant les données et les systèmes d'IA
Des chercheurs en cybersécurité ont identifié six vulnérabilités critiques, collectivement baptisées **Proto6**, dans **protobuf.js**, une implémentation populaire de **Protocol Buffers** en JavaScript et TypeScript. Ces failles pourraient permettre des attaques d'exécution de code à distance (RCE) et de déni de service (DoS), affectant un large éventail d'applications Node.js, de bibliothèques clientes Google Cloud, et même les écosystèmes d'IA.
Des chercheurs en cybersécurité de **Cyera** ont dévoilé une demi-douzaine de vulnérabilités au sein de **protobuf.js**, l'implémentation JavaScript et TypeScript largement utilisée de **Protocol Buffers** (**Protobuf**). L'exploitation réussie de ces failles, collectivement nommées **Proto6**, pourrait entraîner des conséquences graves, notamment des attaques d'exécution de code à distance (RCE) et de déni de service (DoS).
**Assaf Morag**, chercheur en sécurité chez **Cyera**, a souligné l'impact potentiel : « Dans les environnements affectés, un seul schéma protobuf malveillant, un descripteur ou un payload spécialement conçu pourrait suffire à déclencher des plantages, une corruption d'exécution ou même une exécution de code. »
**Protobuf** est un mécanisme open-source et indépendant du langage pour sérialiser des données structurées, initialement développé et utilisé en interne par **Google** avant sa publication en 2008.
### Impact généralisé sur les environnements Node.js et Cloud
Les vulnérabilités identifiées affectent principalement les applications **Node.js** utilisant **protobuf.js**, ainsi que les bibliothèques clientes **Google Cloud**, les frameworks de messagerie tels que **Baileys**, et les pipelines CI/CD. **Cyera** avertit que tout service **Node.js** qui désérialise des données **Protobuf** ou génère du code à partir de schémas avec **protobuf.js** est probablement à risque.
### Les vulnérabilités Proto6 expliquées
Les six vulnérabilités sont détaillées comme suit :
* **CVE-2026-44289** (score CVSS : 7.5) : DoS par récursion protobuf illimitée.
* **CVE-2026-44290** (score CVSS : 7.5) : DoS à l'échelle du processus lors du chargement de schémas avec des chemins d'options non sécurisés.
* **CVE-2026-44291** (score CVSS : 8.1) : Gadget de génération de code après pollution de prototype.
* **CVE-2026-44292** (score CVSS : 5.3) : Injection de prototype dans les constructeurs de messages générés.
* **CVE-2026-44294** (score CVSS : 5.3) : DoS à partir de noms de champs spécialement conçus dans le code généré.
* **CVE-2026-44295** (score CVSS : 8.7) : Injection de code dans la sortie statique de pbjs à partir de noms de schémas spécialement conçus.
**Cyera** attribue ces vulnérabilités à l'hypothèse par défaut de la bibliothèque selon laquelle les entrées de schéma et de métadonnées sont fiables. Ce défaut de validation critique peut manipuler le comportement de l'application, conduisant potentiellement à l'exécution de code.
### Scénarios d'attaque
**Morag** a souligné que si l'exploitation nécessite des conditions spécifiques, celles-ci sont de plus en plus courantes dans les écosystèmes modernes de données et d'IA qui échangent fréquemment des données, des schémas et des fichiers de configuration entre divers services et plateformes.
Un attaquant pourrait injecter un schéma **protobuf** malveillant pour compromettre les flux de travail CI/CD, entraînant la fuite de secrets de build (**CVE-2026-44295**). Alternativement, un message spécialement conçu pourrait faire planter des services **Node.js**, tels que les bots **WhatsApp** construits avec **Baileys** (**CVE-2026-44292**).
### La faille la plus grave : CVE-2026-44291
La vulnérabilité la plus critique, **CVE-2026-44291**, permet l'exécution de code lorsqu'une application **Node.js** traite une entrée contrôlée par l'attaquant.
**Vladimir Tokarev**, un autre chercheur en sécurité, a expliqué le mécanisme : « Cette entrée atteint un gadget de pollution de prototype. Plus tard, le même processus utilise **protobuf.js** pour encoder ou décoder un message. Comme **protobuf.js** résout les noms de types par des recherches de propriétés simples, un **Object.prototype** pollué peut faire en sorte qu'une chaîne contrôlée par l'attaquant ressemble à une primitive **protobuf** valide. »
Il a ajouté : « **Protobuf.js** insère ensuite cette chaîne dans une fonction d'encodage ou de décodage générée et la compile avec **Function()**. L'attaquant obtient une exécution JavaScript arbitraire à l'intérieur du processus **Node.js**. »
### Versions affectées et correctifs
Les versions suivantes de l'outil sont vulnérables :
* **protobuf.js** : versions <= 7.5.5 et >= 8.0.0 <= 8.0.1
* **protobufjs-cli** : versions <= 1.2.0 et >= 2.0.0 <= 2.0.1
Des correctifs sont disponibles dans les versions 7.5.6 et 8.0.2 de **protobufjs**, et dans les versions 1.2.1 et 2.0.2 de **protobufjs-cli**. Il est fortement conseillé aux utilisateurs d'appliquer ces mises à jour immédiatement pour atténuer les menaces potentielles.
### Une nouvelle surface d'attaque pour les charges de travail d'IA
**Cyera** a conclu en soulignant les implications générales : « Comme **protobuf.js** est largement utilisé dans les bases de données, les magasins vectoriels, les pipelines d'inférence, les systèmes d'orchestration, les outils CI/CD et les SDK cloud, une exploitation réussie pourrait impacter à grande échelle les charges de travail d'entreprise et d'IA sensibles. »
Cet incident met en évidence une tendance croissante où « les logiciels modernes traitent de plus en plus les schémas, les métadonnées et les fichiers de configuration comme des entrées fiables qui pilotent l'automatisation, l'orchestration et la génération de code. Lorsque ces hypothèses de confiance échouent, les données peuvent devenir un comportement. Ce changement crée de nouvelles surfaces d'attaque que les équipes de sécurité doivent apprendre à identifier et à gérer. »