đ§© Une librairie npm qui nâen est pas une
Il y a des jours oĂč lâon regrette presque dâaimer lâopen source.
Les chercheurs en cybersécurité viennent de débusquer un nouveau paquet npm malveillant : nodejs-smtp.
DerriĂšre ce nom Ă lâapparence lĂ©gitime se cache en rĂ©alitĂ© une copie trompeuse de la librairie bien connue nodemailer, indispensable pour envoyer des emails dans les projets Node.js.
La manĆuvre est simple et redoutablement efficace :
- MĂȘme tagline que le projet officiel.
- Page npm mimant fidĂšlement lâoriginal.
- README copié-collé pour inspirer confiance.
RĂ©sultat : plus de 347 tĂ©lĂ©chargements avant que lâarnaque ne soit repĂ©rĂ©e. 347 dĂ©veloppeurs qui pensaient installer un outil fiable⊠et qui ont importĂ© du code toxique.
đŻ La cible : vos wallets crypto
Mais la finalitĂ© ne sâarrĂȘte pas Ă un petit troll.
Le package embarquait des scripts furtifs conçus pour injecter du code malveillant dans des applications desktop Windows.
Objectif : voler les données sensibles des portefeuilles de cryptomonnaies.
Deux victimes privilégiées :
- Atomic Wallet â rĂ©guliĂšrement ciblĂ© par des campagnes de piratage.
- Exodus Wallet â populaire pour sa simplicitĂ© et donc attractif pour les cybercriminels.
Une fois installĂ©, nodejs-smtp tentait dâintercepter ou dâaltĂ©rer certains processus internes des apps, ouvrant la porte au pillage des clĂ©s privĂ©es et des fonds.
đ”ïž DĂ©cryptage technique : comment ça marche ?
En fouillant le code de nodejs-smtp, les analystes ont trouvé plusieurs techniques intéressantes (ou terrifiantes, selon le point de vue) :
- Scripts dâinstallation dĂ©tournĂ©s
Lors duÂnpm install, un script postinstall dĂ©clenchait un tĂ©lĂ©chargement depuis un serveur tiers. Un grand classique pour ramener du code externe non vĂ©rifiĂ©."scripts": { "postinstall": "node install.js" }DerriĂšre,Âinstall.js rĂ©cupĂ©rait discrĂštement un binaire et lâinjectait dans le systĂšme de lâutilisateur. - Injection dans Electron / apps desktop
Le malware scannait les rĂ©pertoires connus (AppData/Roaming) pour y chercher les installations dâAtomic ou Exodus.
DĂšs quâil en trouvait, il modifiait les fichiers de configuration ou insĂ©rait du code JavaScript dans les modules Electron. - Exfiltration silencieuse
Les donnĂ©es (mots de passe, seeds, clĂ©s privĂ©es) Ă©taient ensuite chiffrĂ©es basiquement et envoyĂ©es vers un serveur command & control via HTTPS, rendant le trafic difficile Ă distinguer dâune communication normale.
Bref : une supply chain attack taillée sur mesure pour siphonner vos cryptos.
đ ïž La supply chain en ligne de mire
Ce nâest pas un cas isolĂ©. LâĂ©cosystĂšme npm est devenu une vĂ©ritable jungle :
- En 2022, un paquet piĂ©gĂ©Â
ua-parser-js avait infectĂ© des milliers de projets. - En 2023,Â
colors etÂfaker.js avaient provoquĂ© la panique en intĂ©grant volontairement du code perturbateur. - Aujourdâhui, câestÂ
nodejs-smtp qui tente sa chance.
Pourquoi ça marche ? Parce que la supply chain logicielle repose sur la confiance aveugle. On installe des dĂ©pendances comme on achĂšte du pain : vite, sans vĂ©rifier lâĂ©tiquette.
Mais dans lâopen source, le boulanger peut ĂȘtre un cybercriminel en hoodie.
đ Comment Ă©viter de tomber dans le piĂšge ?
Quelques rĂšgles dâhygiĂšne simples :
- â
 VĂ©rifier les noms exacts :Â
nodemailer â Ânodejs-smtp. - â  Surveiller la popularité : un projet critique avec 300 tĂ©lĂ©chargements, ça sent le sapin.
- â  Checker les mainteneurs : si le compte est nouveau, mĂ©fiance.
- â
 Analyser le code source (au moins leÂ
package.json et les scripts dâinstall). - â  Mettre en place des scanners de dĂ©pendances (npm audit, Snyk, Dependabot).
- â
 Limiter la prolifĂ©ration des dĂ©pendances : chaqueÂ
npm install est une porte dâentrĂ©e potentielle.
đ§ Leçon Ă retenir
Lâaffaire nodejs-smtp nâest pas quâune anecdote de plus.
Elle nous rappelle une vérité inconfortable : les développeurs sont devenus des gardiens de la supply chain numérique.
Chaque dĂ©pendance installĂ©e est une boĂźte noire qui peut contenir aussi bien du code utile que du poison. Les attaquants lâont compris et multiplient les paquets clonĂ©s ou typosquattĂ©s.
Alors oui, vĂ©rifier son package.json nâest pas aussi sexy que coder une nouvelle feature. Mais mieux vaut perdre 5 minutes Ă lire un README que perdre tous ses bitcoins Ă cause dâune dĂ©pendance pourrie.
đŹ Et toi, tu vĂ©rifies toujours tes paquets npm avant dâinstaller, ou tu fais confiance les yeux fermĂ©s ?
