De nouvelles découvertes de la société de cybersécurité JFrog montrent que les logiciels malveillants ciblant l’écosystème npm peuvent échapper aux contrôles de sécurité en profitant d’un « comportement inattendu » dans l’outil d’interface de ligne de commande (CLI) npm.
npm CLI installer et Audit commandes ont des capacités intégrées pour vérifier un package et toutes ses dépendances pour les vulnérabilités connues, agissant efficacement comme un mécanisme d’avertissement pour les développeurs en mettant en évidence les failles.
Mais comme JFrog l’a établi, les avis de sécurité ne sont pas affichés lorsque les packages suivent certains formats de version, créant un scénario dans lequel des failles critiques pourraient être introduites dans leurs systèmes soit directement, soit via les dépendances du package.
Plus précisément, le problème survient uniquement lorsque la version du package installé contient un trait d’union (par exemple, 1.2.3-a), qui est inclus pour indiquer un version préliminaire d’un module npm.
Bien que les responsables du projet traitent l’écart entre les versions de package npm standard et les versions préliminaires comme une fonctionnalité prévue, cela le rend également propice aux abus par les attaquants cherchant à empoisonner l’écosystème open source.
« Les acteurs de la menace pourraient exploiter ce comportement en plantant intentionnellement du code vulnérable ou malveillant dans leurs packages d’apparence innocente qui seront inclus par d’autres développeurs en raison de fonctionnalités précieuses ou d’une erreur due à des techniques d’infection telles que le typosquattage ou la confusion des dépendances », Or Peles a dit.
En d’autres termes, un adversaire pourrait publier un package apparemment bénin au format de version préliminaire, qui pourrait alors être potentiellement repris par d’autres développeurs et ne pas être alerté du fait que le package est malveillant malgré les preuves du contraire.
Le développement réitère une fois de plus comment la chaîne d’approvisionnement logicielle est construite comme une chaîne de confiance entre différentes parties, et comment la compromission d’un lien peut affecter toutes les applications en aval qui consomment la dépendance tierce non autorisée.
Pour contrer de telles menaces, il est recommandé aux développeurs d’éviter d’installer des packages npm avec une version préliminaire, à moins que la source ne soit connue pour être totalement fiable.