Les schémas de tampons de protocole exposent le risque d’exécution de code à distance

Lucas Morel

Les chercheurs de Cyera ont découvert six vulnérabilités dans protobuf.js, dont une faille qui peut transformer les données de schéma contrôlées par un attaquant en code exécutable et exposer les chaînes d’approvisionnement logicielles en aval.

Une implémentation JavaScript largement utilisée du format Protocol Buffers de Google accorde trop de confiance à des données non fiables, exposant les applications concernées à l’exécution de code à distance et à d’autres attaques.

Les chercheurs de Cyera ont révélé six vulnérabilités affectant « protobuf.js », toutes issues de la gestion des schémas et des métadonnées par la bibliothèque. Les attaquants pourraient exploiter un oubli de validation des entrées pour insérer des données malveillantes et influencer le comportement d’une application.

Protocol Buffers est une technologie permettant de regrouper les données dans un format compact et structuré afin de rationaliser l’échange d’informations entre différentes applications. La bibliothèque protobuf.js recevrait plus de 50 millions de téléchargements hebdomadaires. Il est généralement intégré indirectement aux applications via des dépendances telles que les outils gRPC, les bibliothèques Google Cloud et d’autres frameworks, ce qui rend leur suivi difficile pour les organisations.

Les chercheurs ont divulgué six CVE couvrant l’exécution de code à distance, les conditions de déni de service (DoS), la pollution des prototypes, l’injection de prototypes et les problèmes de génération de code.

« Bien que l’exploitation de ces vulnérabilités nécessite généralement des conditions spécifiques, ces conditions sont de plus en plus courantes dans les écosystèmes de données et d’IA qui échangent régulièrement des données, des schémas et des fichiers de configuration entre services, référentiels, plateformes cloud et intégrations tierces », ont déclaré les chercheurs de Cyera Assaf Morag et Vladimir Tokarev dans un article de blog.

Des correctifs sont disponibles pour protobuf.js et protonufjs-cli, les outils de génération de code en ligne de commande du projet.

Métadonnées capables d’écrire du code

Le plus important des bugs est une faille de génération de code identifiée comme CVE-2026-44291.

Selon Cyera, protobuf.js génère dynamiquement des fonctions d’encodeur et de décodeur et les compile à l’aide du constructeur Function () de JavaScript. Dans des conditions spécifiques, un attaquant peut manipuler les informations dérivées du schéma afin que les données destinées à décrire un message deviennent du code exécutable.

Les chercheurs ont démontré une chaîne d’attaque dans laquelle un prototype de pollution est utilisé pour inciter protobuf.js à accepter les valeurs contrôlées par l’attaquant comme types de protobuf légitimes. Ces valeurs sont ensuite incorporées au code généré et exécutées dans le processus Node.js.

L’impact s’étend au-delà des applications d’exécution. Un problème distinct d’injection de code, suivi comme CVE-2026-44295, affecte l’outil de ligne de commande pbjs, où des noms de schéma contrefaits peuvent être intégrés dans des fichiers JavaScript générés et exécutés lorsque ces fichiers sont importés ultérieurement.

Bien qu’une exploitation réussie nécessite des conditions préalables spécifiques, telles que la capacité d’influencer les schémas ou les descripteurs de Protobuf, les chercheurs ont noté que les logiciels modernes échangent de plus en plus de schémas, de descripteurs et de fichiers de configuration entre des référentiels, des environnements cloud, des API et des intégrations tierces, ce qui rend ces hypothèses moins restrictives qu’elles ne l’étaient autrefois.

Les vulnérabilités restantes sont moins graves. Les chercheurs ont identifié une faille d’injection de prototype (CVE-2026-44292) qui peut modifier le comportement de l’application en altérant les propriétés des objets héritées, ainsi que des bogues de déni de service (DoS) (CVE-2026-44289, CVE-2026-44290 et CVE-2026-44294) qui peuvent planter ou épuiser les ressources de l’application en utilisant des entrées malveillantes.

Patch conseillé alors que le risque de chaîne d’approvisionnement se profile

Les chercheurs ont noté que protobuf.js est souvent consommé comme une dépendance transitive, ce qui signifie que les organisations peuvent être exposées sans se rendre compte que la bibliothèque est présente dans leur pile logicielle. À mesure que les schémas transitent par des pipelines de développement automatisés et des chaînes d’approvisionnement logicielles, les composants traditionnellement considérés comme des données passives peuvent devenir une voie d’accès aux attaques.

« Les équipes de développement acceptent régulièrement les contributions de code, intègrent des composants tiers et traitent automatiquement les fichiers via des pipelines CI/CD », ont-ils expliqué. « Nous avons constaté que dans certaines conditions, un schéma protobuf malveillant pouvait être introduit dans ce flux de travail et finalement exécuté dans des environnements de construction fiables. »

Un compromis à ce stade pourrait avoir des impacts en aval sur les produits, les clients et les opérations commerciales, ont-ils ajouté.

Les vulnérabilités affectent les versions 7.5.5 et antérieures de protobuf.js, ainsi que les versions 8.0.0 et 8.0.1, ainsi que les versions vulnérables de protobuf.js-cli. Les correctifs sont disponibles dans protobuf.js 7.5.6 et 8.0.2, tandis qu’il est conseillé aux utilisateurs de protobuf.js-cli de passer aux versions 1.2.1 ou 2.0.2.

VulnérabilitésSécurité