Depuis quelques annes, les attaques de type « supply chain » ou chane d’approvisionnement sont devenues un sujet de proccupation croissant pour les dveloppeurs et les responsables de la scurit informatique. Une nouvelle vague de logiciels malveillants a rcemment cibl le registre Node Package Manager (NPM), qui est largement utilis dans l’cosystme JavaScript. Dans ce cadre, des centaines de bibliothques (ou « packages ») ont t publies avec un seul objectif : infecter les machines des dveloppeurs et propager des logiciels malveillants.
Les logiciels malveillants distribus sur NPM emploient diverses mthodes pour infecter les systmes cibles
NPM est l’un des plus grands dpts de packages JavaScript au monde, avec des millions de bibliothques disponibles. Il permet aux dveloppeurs de partager et de tlcharger des modules pour rutiliser du code, simplifiant ainsi le dveloppement d’applications en leur offrant un accs rapide des fonctionnalits prtes l’emploi. Cependant, ce vaste dpt est aussi devenu un terrain fertile pour les attaquants, qui peuvent y publier des packages malveillants se faisant passer pour des bibliothques lgitimes.
La vulnrabilit principale de NPM rside dans son accessibilit ouverte : tout dveloppeur peut y publier une bibliothque sans vrification pralable stricte. Bien que des processus d’audit et de vrification soient en place, ils ne suffisent souvent pas dtecter les logiciels malveillants avant leur propagation, car les attaques de type « typosquatting » et l’utilisation de noms similaires permettent aux packages malveillants de passer sous le radar.
Les logiciels malveillants distribus sur NPM emploient diverses mthodes pour infecter les systmes cibles. Voici quelques-unes des techniques les plus courantes :
- Typosquatting : Cette mthode consiste publier des paquets aux noms trs similaires des bibliothques populaires en esprant que les dveloppeurs feront des fautes de frappe lorsqu’ils cherchent les installer. Par exemple, une bibliothque lgitime comme lodash pourrait tre imite par une bibliothque nomme lodas, qui contient du code malveillant. Cette technique repose sur lerreur humaine et profite de la ngligence pour sinstaller facilement sur les machines.
- Injection de scripts malveillants : Les attaquants introduisent des scripts directement dans les bibliothques qui, une fois installes, excutent des commandes malveillantes sur la machine cible. Ces scripts peuvent tre utiliss pour des actions varies, allant du vol de donnes didentification laccs non autoris des serveurs critiques.
- Obfuscation du code : Pour viter d’tre dtects, les dveloppeurs de logiciels malveillants utilisent des techniques d’obfuscation, rendant leur code difficile lire et analyser. Les lignes de code sont souvent dlibrment complexes, cachant la vritable nature du paquet jusqu’ ce qu’il soit excut.
- Chanes d’approvisionnement compromises : Les dveloppeurs malveillants peuvent galement cibler des paquets populaires et tenter de compromettre leurs chanes d’approvisionnement. Cela signifie quun attaquant pourrait obtenir un accs non autoris au compte de dveloppeur d’une bibliothque lgitime et y ajouter du code malveillant. Les utilisateurs qui mettront ensuite jour cette bibliothque se retrouveront infects par le malware.
Une attaque en cours
Selon des chercheurs, une attaque en cours tlcharge des centaines de paquets malveillants sur le dpt du gestionnaire de paquets node (NPM) en open source afin d’infecter les appareils des dveloppeurs qui s’appuient sur les bibliothques de code qui s’y trouvent.
Les paquets malveillants portent des noms similaires aux noms lgitimes des bibliothques de code Puppeteer et Bignum.js, ainsi que de diverses bibliothques permettant de travailler avec des crypto-monnaies. La campagne a t signale par des chercheurs de l’entreprise de scurit Phylum. Cette dcouverte fait suite une campagne similaire mene il y a quelques semaines et visant les dveloppeurs utilisant des forks de la bibliothque Ethers.js.
Attention l’attaque de la chane d’approvisionnement
Par ncessit, les auteurs de logiciels malveillants ont d s’efforcer de trouver de nouveaux moyens de dissimuler leurs intentions et d’obscurcir les serveurs distants qu’ils contrlent , crivent les chercheurs de Phylum. Il s’agit, une fois de plus, d’un rappel persistant que les attaques de la chane d’approvisionnement sont bien vivantes .
Une fois installs, les paquets malveillants utilisent une nouvelle mthode pour dissimuler l’adresse IP que les appareils contactent pour recevoir les charges utiles malveillantes de la deuxime tape. L’adresse IP n’apparat pas du tout dans le code de la premire tape. Au lieu de cela, le code accde un contrat intelligent Ethereum pour rcuprer une chane, dans ce cas une adresse IP, associe une adresse de contrat spcifique sur le rseau principal Ethereum . Le mainnet, abrviation de main network , est le rseau principal de la blockchain qui soutient une crypto-monnaie telle qu’Ethereum et o les transactions ont lieu.
L’adresse IP renvoye par un paquet analys par Phylum tait : hxxp://193.233.201[.]21:3001.
Alors que cette mthode tait probablement destine dissimuler la source des infections de deuxime stade, elle a ironiquement eu pour effet de laisser une trace des adresses prcdentes que les attaquants avaient utilises dans le pass. Les chercheurs expliquent :
Le stockage de ces donnes sur la blockchain Ethereum prsente l’intrt de stocker un historique immuable de toutes les valeurs qu’il a jamais vues. Ainsi, nous pouvons voir toutes les adresses IP que cet acteur malveillant a jamais utilises.
Le 2024-09-23 00:55:23Z il s’agissait de hxxp://localhost:3001
Le 2024-09-24 06:18:11Z c’tait hxxp://45.125.67[.]172:1228
Le 2024-10-21 05:01:35Z, il s’agissait de hxxp://45.125.67[.]172:1337
Du 2024-10-22 14:54:23Z il s’agissait de hxxp://193.233[.]201.21:3001
Depuis le 2024-10-26 17:44:23Z il s’agit de hxxp://194.53.54[.]188:3001
Une fois installs, les paquets malveillants se prsentent sous la forme d’un paquet Vercel emball. La charge utile s’excute en mmoire, se charge chaque redmarrage et se connecte l’adresse IP du contrat ethereum. Elle excute ensuite une poigne de requtes pour rcuprer des fichiers Javascript supplmentaires, puis renvoie des informations sur le systme au mme serveur demandeur , crivent les chercheurs de Phylum. Ces informations comprennent des informations sur le GPU, le CPU, la quantit de mmoire sur la machine, le nom d’utilisateur et la version du systme d’exploitation .
Les attaques de ce type s’appuient sur le typosquattage, un terme qui dsigne l’utilisation de noms qui imitent troitement ceux de paquets lgitimes, mais qui contiennent de petites diffrences, comme celles qui pourraient survenir si le paquet tait mal orthographi par inadvertance. Le typosquattage est depuis longtemps une tactique pour attirer les internautes vers des sites web malveillants. Au cours des cinq dernires annes, le typosquattage a t adopt pour inciter les dveloppeurs tlcharger des bibliothques de codes malveillants.
Les dveloppeurs devraient toujours vrifier les noms avant d’excuter les paquets tlchargs. Le billet de blog de Phylum fournit les noms, les adresses IP et les hachages cryptographiques associs aux paquets malveillants utiliss dans cette campagne.
Impact sur les dveloppeurs et les entreprises
Linstallation de bibliothques malveillantes sur les machines de dveloppement naffecte pas seulement les dveloppeurs individuels ; elle peut galement compromettre les projets entiers et les chanes de production des entreprises. Les consquences peuvent inclure :
- Fuites de donnes : Les informations sensibles stockes sur les machines compromises peuvent tre extraites, y compris les identifiants dAPI, les mots de passe et les informations confidentielles des clients.
- Dtournement de ressources : Certains logiciels malveillants cherchent dtourner les ressources des machines infectes, souvent pour miner des cryptomonnaies, ce qui alourdit la charge des serveurs et ralentit les processus de dveloppement.
- Perte de confiance : Lorsqu’une entreprise est compromise, cela peut affecter sa rputation et sa crdibilit auprs de ses clients, partenaires et investisseurs, causant des dommages long terme.
- Propagation de logiciels malveillants : Si les logiciels malveillants ne sont pas dtects et limins rapidement, ils peuvent tre intgrs dans le produit final, qui, une fois distribu aux clients, propagera l’infection un plus grand nombre dutilisateurs.
Mesures de protection et pratiques scuritaires
Pour contrer cette menace, les dveloppeurs et entreprises doivent adopter plusieurs mesures de protection et de bonnes pratiques :
- Vrification des dpendances : Avant dinstaller une bibliothque, il est essentiel de vrifier sa source, la rputation de ses auteurs et ses dpendances. Les outils de vrification de paquets, comme npm audit, peuvent aider dtecter les failles de scurit potentielles.
- Utilisation de solutions de scurit automatises : Des outils de scurit peuvent analyser le code source des bibliothques et dtecter des modles malveillants avant que les paquets ne soient installs. Ces outils analysent galement les mises jour pour s’assurer que le code n’a pas t compromis.
- Mises jour rgulires des bibliothques de confiance : Il est souvent prfrable de sen tenir aux versions les plus rcentes et testes de bibliothques populaires, car elles sont plus susceptibles dtre scurises et bien surveilles par leurs mainteneurs.
- Contrle d’accs strict : Les entreprises doivent surveiller l’accs aux comptes de dveloppeurs et adopter l’authentification deux facteurs (2FA) pour viter les compromissions de comptes.
- Formation et sensibilisation : Les dveloppeurs doivent tre forms aux bonnes pratiques de scurit, et des sessions de sensibilisation doivent tre organises rgulirement pour les informer des nouvelles menaces.
Les dfis dune protection totale sur NPM
Malgr les mesures de scurit en place, NPM reste un environnement difficile protger totalement, en raison de son caractre ouvert et de la nature mme de l’cosystme JavaScript. Tout le monde peut publier un paquet sur NPM, et bien que des mcanismes de vrification existent, ils ne sont pas toujours suffisants pour empcher la distribution de logiciels malveillants. Les audits de scurit automatiss sont loin dtre parfaits et peuvent facilement manquer des techniques d’obfuscation avances.
Par ailleurs, l’approche mme de la communaut JavaScript, qui valorise la modularit et l’intgration de nombreux paquets dans les projets, contribue cette vulnrabilit. En dpendant de centaines de bibliothques, chaque projet expose son code de multiples points de dfaillance potentiels, rendant la tche de scurisation encore plus complexe. La gestion de dpendances dans le dveloppement JavaScript exige donc une vigilance constante, mais il est clair que des approches plus strictes devront tre adoptes l’avenir pour protger l’intgrit des projets.
La responsabilit de la scurit sur NPM ne repose pas uniquement sur les paules des utilisateurs, mais galement sur celles de la plateforme elle-mme, qui devrait renforcer ses politiques de vrification et mieux encadrer la publication de paquets. En parallle, ladoption doutils comme les sandbox pour isoler lexcution de nouveaux paquets avant leur installation pourrait galement rduire les risques.
Conclusion
La communaut JavaScript est-elle trop dpendante de bibliothques externes ? Existe-t-il des moyens dencourager davantage lautosuffisance en dveloppement, ou est-ce invitable dans lcosystme actuel ? Les entreprises devraient-elles intgrer des quipes ddies la surveillance et la scurit des dpendances dans leurs flux de travail, ou est-ce une mesure excessive ?
En attendant de rpondre ces questions, les chercheurs ont conclu en disant : Par ncessit, les auteurs de logiciels malveillants ont d s’efforcer de trouver de nouveaux moyens de dissimuler leurs intentions et d’obnubiler les serveurs distants qu’ils contrlent. Cela nous rappelle une fois de plus que les attaques contre la chane d’approvisionnement existent bel et bien. Elles voluent en permanence et ciblent souvent la vaste communaut des dveloppeurs de logiciels avec des progiciels malveillants .
Sources : Phylum (1,2), documentation (npm-audit), Ethereum
Et vous ?
Quelle est la responsabilit de la plateforme NPM dans la diffusion de ces logiciels malveillants ? Devrait-elle tre davantage rglemente pour protger les utilisateurs ?
quel point les dveloppeurs sont-ils eux-mmes responsables de la scurit lorsquils choisissent dutiliser des bibliothques open source ? O placer la limite entre vigilance individuelle et protection institutionnelle ?
Les outils comme npm audit sont-ils suffisants pour dtecter ces menaces ? Que pourrait-on ajouter pour mieux scuriser les dpendances des projets ?
La mise en place de « sandbox » pour tester lexcution des bibliothques avant leur intgration est-elle raliste ? Quelles pourraient en tre les limitations et les dfis techniques ?
Quel pourrait tre limpact de ces infections long terme pour les entreprises ? Est-il possible de mesurer le cot rel de ce type de cyberattaque sur les projets de dveloppement ?
En cas dattaque russie par une bibliothque malveillante, quelles sont les actions immdiates qu’une entreprise peut prendre pour limiter les dgts ?