Vulnérabilité critique RCE découverte dans la bibliothèque protobuf.js largement utilisée
Une vulnérabilité critique d'exécution de code à distance (RCE) a été identifiée dans **protobuf.js**, une implémentation JavaScript populaire des Protocol Buffers de **Google**. Du code d'exploit proof-of-concept est déjà disponible, suscitant des inquiétudes pour les applications s'appuyant sur cette bibliothèque pour la communication inter-services et la gestion des données.

**protobuf.js**, avec près de 50 millions de téléchargements hebdomadaires sur le registre **Node Package Manager (npm)**, fait l'objet d'un examen minutieux en raison d'une faille d'exécution de code à distance (RCE) récemment divulguée. La vulnérabilité découle d'une génération de code dynamique non sécurisée, comme l'a rapporté **Endor Labs**.
### La Vulnérabilité : GHSA-xq3m-2v4x-88gg
Actuellement suivie sous la référence GHSA-xq3m-2v4x-88gg (sans identifiant **CVE** officiel), la vulnérabilité permet aux attaquants d'injecter du code arbitraire dans les fonctions générées en fournissant des schémas malveillants. Ceci est dû à la méthode de la bibliothèque qui consiste à construire des fonctions JavaScript à partir de schémas protobuf en concaténant des chaînes de caractères et en les exécutant via le constructeur `Function()` sans validation appropriée des identifiants dérivés des schémas.
**Endor Labs** explique que cette faille permet une RCE sur les serveurs ou les applications qui chargent des schémas influencés par l'attaquant. Une exploitation réussie pourrait accorder l'accès à des informations sensibles telles que les variables d'environnement, les identifiants et les bases de données, conduisant potentiellement à un mouvement latéral au sein de l'infrastructure compromise. Les machines des développeurs sont également menacées si elles traitent des schémas non fiables localement.
### Impact et Atténuation
La vulnérabilité affecte les versions 8.0.0/7.5.4 et inférieures de **protobuf.js**. Pour atténuer le risque, **Endor Labs** recommande fortement de mettre à niveau vers les versions 8.0.1 et 7.5.5, qui incluent un correctif qui assainit les noms de types en supprimant les caractères non alphanumériques. Bien que ce correctif offre un soulagement immédiat, **Endor Labs** suggère qu'une solution plus robuste et à long terme serait d'éliminer complètement l'utilisation de `Function` pour les identifiants accessibles par l'attaquant.
"L'exploitation est simple", prévient **Endor Labs**, faisant référence au proof-of-concept (PoC) minimal inclus dans le [conseil de sécurité](https://github.com/protobufjs/protobuf.js/security/advisories/GHSA-xq3m-2v4x-88gg). À l'heure actuelle, aucune exploitation active dans la nature n'a été signalée.
### Chronologie de la Divulgation
La vulnérabilité a été signalée par le chercheur **Cristian Staicu** d'**Endor Labs** le 2 mars. Les mainteneurs de **protobuf.js** ont publié un correctif sur GitHub le 11 mars. Les packages **npm** mis à jour ont été mis à disposition le 4 avril pour la branche 8.x et le 15 avril pour la branche 7.x.
### Recommandations
En plus de la mise à niveau, **Endor Labs** recommande :
* Auditer les dépendances transitives.
* Traiter le chargement des schémas comme une entrée non fiable.
* Privilégier les schémas précompilés/statiques dans les environnements de production.
