Le registre npm pour l’environnement d’exécution JavaScript Node.js est sensible à ce qu’on appelle un confusion manifeste attaque qui pourrait potentiellement permettre aux acteurs de la menace de dissimuler des logiciels malveillants dans les dépendances du projet ou d’exécuter des scripts arbitraires lors de l’installation.
« Le manifeste d’un package npm est publié indépendamment de son archive tar », Darcy Clarke, ancien responsable de l’ingénierie GitHub et npm, a dit dans un article technique publié la semaine dernière. « Les manifestes ne sont jamais entièrement validés par rapport au contenu de l’archive. »
« L’écosystème a largement supposé que le contenu du manifeste et de l’archive tar était cohérent », a ajouté Clarke.
Le problème, à la base, provient du fait que les métadonnées du manifeste et du package sont découplées et qu’elles ne sont jamais référencées les unes par rapport aux autres, ce qui entraîne un comportement inattendu et une mauvaise utilisation en cas de non-concordance.
En conséquence, un acteur malveillant pourrait exploiter cette faille pour publier un module avec un fichier manifeste (package.json) contenant des dépendances cachées ainsi que pour exécuter des scripts d’installation, ce qui pourrait alors ouvrir la voie à une attaque de la chaîne d’approvisionnement et à l’empoisonnement de l’environnement d’un développeur.
« La confusion manifeste devient problématique dans les environnements de développement sans workflows et outils DevSecOps efficaces en place, en particulier lorsque les applications font aveuglément confiance aux manifestes d’application plutôt qu’aux fichiers réels (vulnérables ou malveillants) contenus dans les packages open source », a déclaré Ax Sharma, chercheur et journaliste à Sonatype. a dit.
La découverte souligne le fait que les métadonnées contenues dans les fichiers manifestes de package seuls ne peuvent pas être invoquées lors du téléchargement d’un package à partir du référentiel open source, ce qui oblige les utilisateurs à prendre des mesures pour analyser les packages pour toutes les fonctionnalités et exploits anormaux.
GitHub, selon Clarke, serait au courant du problème depuis au moins début novembre 2022, la filiale de Microsoft déclarant qu’elle prévoyait de le résoudre en interne à partir de mars 2023. Le problème, cependant, reste non résolu à ce jour.
En l’absence de correctif officiel, le chercheur en sécurité Felix Pankratz a mis à disposition un Script Python qui peut être utilisé pour tester les incompatibilités entre les manifestes dans les modules npm.
Le développement intervient également alors que la société de sécurité des développeurs Snyk, en partenariat avec Redhunt Labs, a examiné 11 900 référentiels du 1 000 principales organisations GitHub pour les dépendances non sécurisées, découverte de 1 229 601 failles dans 15 584 fichiers de dépendances vulnérables.
« Désérialisation des données non fiables était le type de vulnérabilité le plus répandu avec 130 831 occurrences dans les référentiels Java, ce qui en fait 40 % du total des vulnérabilités identifiées », selon l’étude a dit.
Dans les projets basés sur JavaScript, pollution prototype est apparu comme la principale lacune avec 343 332 occurrences. Déni de service (DoS) ont contribué le plus aux projets Python et Ruby avec respectivement 19 652 et 56 331 occurrences.
« La menace de dépendances vulnérables perturbant l’état de sécurité des chaînes d’approvisionnement logicielles est là pour rester », ont déclaré les chercheurs en sécurité Umair Nehri et Vandana Verma Sehgal. « Ainsi, les développeurs doivent être prudents avec les dépendances qu’ils utilisent dans leurs projets et les tenir à jour pour les protéger de toute vulnérabilité connue. »