Un exploit de code concept publié met en lumière une vulnérabilité critique de remote code execution (RCE) dans protobuf.js, une bibliothèque JavaScript très utilisée pour les Protocol Buffers de Google.
Cette bibliothèque, qui figure parmi les plus téléchargées du registre Node Package Manager (npm) avec près de 50 millions de téléchargements hebdomadaires, est essentielle pour la communication inter-services, les applications en temps réel et le stockage structuré de données dans des environnements de bases de données et cloud.
Dans un rapport publié récemment, la société Endor Labs indique que cette vulnérabilité découle d’une génération dynamique de code non sécurisée.
Pour l’instant, l’incident n’a pas reçu de numéro CVE officiel et est suivi sous l’identifiant GHSA-xq3m-2v4x-88gg, attribué par GitHub.
Selon Endor Labs, cette bibliothèque construit des fonctions JavaScript à partir de schémas protobuf en concaténant des chaînes et en les exécutant via le constructeur Function(), sans valider correctement les identifiants dérivés des schémas, tels que les noms de messages.
Un attaquant peut ainsi fournir un schéma malveillant, injectant du code arbitraire dans la fonction générée, qui sera ensuite exécutée lorsque l’application traitera un message basé sur ce schéma.
Cette situation permettrait une exploitation RCE sur des serveurs ou applications chargant des schémas influencés par des attaquants, donnant accès à des variables d’environnement, des identifiants, des bases de données, et systèmes internes, tout en permettant un mouvement latéral dans l’infrastructure.
Les machines des développeurs pourraient également être affectées si elles chargent et déchiffrent des schémas non fiables en local.
Les versions de protobuf.js concernées incluent 8.0.0/7.5.4 et antérieures. Endor Labs conseille de mettre à jour vers les versions 8.0.1 et 7.5.5, qui corrigent cette vulnérabilité.
Le correctif sanitize les noms de types en supprimant les caractères non alphanumériques, empêchant ainsi l’attaquant de clore la fonction synthétique. Cependant, Endor suggère qu’un correctif à long terme devrait consister à éviter la transmission d’identifiants accessibles aux attaquants via Function.
Endor Labs alerte sur la facilité d’exploitation, comme le montre le minimal proof-of-concept (PoC) fourni dans l’avis de sécurité. Toutefois, aucune exploitation active n’a été observée jusqu’à maintenant.
La vulnérabilité a été signalée par Cristian Staicu, chercheur chez Endor Labs et chasseur de bogues de sécurité, le 2 mars. Les mainteneurs de protobuf.js ont publié un correctif sur GitHub le 11 mars, tandis que les corrections pour les packages npm ont été mises à disposition le 4 avril pour la branche 8.x et le 15 avril pour la branche 7.x.
Outre la mise à jour vers les versions corrigées, Endor Labs recommande également aux administrateurs système de vérifier les dépendances transitoires, de traiter le chargement de schémas comme une entrée non fiable, et de privilégier les schémas précompilés ou statiques en production.
