Nous avons vraiment évité une menace majeure
(xeiaso.net)- La récente attaque de la chaîne d’approvisionnement survenue dans l’écosystème des paquets NPM aurait en réalité pu provoquer des dégâts bien plus importants
- Les attaquants n’ont utilisé le code malveillant que pour modifier des adresses de portefeuilles de cryptomonnaies en exploitant des bibliothèques populaires
- Cette attaque a été menée en volant les informations de double authentification de développeurs via des e-mails de phishing sophistiqués
- Si elle avait été utilisée sous une forme plus destructrice (par exemple le vol de clés API), elle aurait pu entraîner des dommages massifs
- Le texte souligne que toute dépendance est potentiellement risquée et insiste sur l’importance de comprendre l’ensemble de l’arbre des dépendances
Vue d’ensemble de l’attaque et inquiétudes
- Récemment, des paquets populaires de NPM, l’un des plus grands écosystèmes de paquets, ont été exposés à une attaque
- Exemples de fonctions : gestion des couleurs dans le terminal, correspondance entre noms de couleurs et RGB, décorateurs de débogage de fonctions, utilitaires de détection de valeurs de type tableau, etc.
- Ces dépendances courantes sont largement utilisées et, une fois le code introduit, il a de fortes chances d’être déployé immédiatement en production
- Si l’attaque avait inclus un proxy malveillant, le vol de clés API ou d’autres actions graves, les conséquences auraient pu être bien pires
- En pratique, ce malware se contentait de modifier les adresses de paiement en cryptomonnaie dans des portefeuilles en ligne (comme MetaMask)
La sophistication de l’attaque de phishing
- Le point de départ de l’attaque a été un e-mail de phishing extrêmement bien conçu
- Il donnait une impression personnalisée en utilisant le nom d’utilisateur NPM
- Il cherchait à inspirer confiance avec un message demandant de « changer le mot de passe et les identifiants de double authentification pour des raisons de sécurité »
- Combiné au mode de fonctionnement particulier de NPM, le contenu était suffisamment crédible pour tromper facilement un utilisateur ordinaire
- Une date limite précise ajoutait un sentiment d’urgence et poussait à cliquer sur le lien de phishing dans un moment d’inattention ou de surcharge
- Il utilisait un domaine en
.helpressemblant au domaine officiel de NPM
- L’élément le plus visible était essentiellement l’utilisation de « npmjs.help » à la place du domaine officiel
- De nos jours, de nombreux nouveaux gTLD (Generic Top Level Domain) sont largement utilisés pour des blogs, de la documentation, etc., ce qui peut aussi paraître naturel
Les dommages potentiels de l’attaque
- L’e-mail de phishing permettait, après vol des informations de double authentification, d’injecter du code d’attaque puis de publier de nouveaux paquets
- Des bibliothèques très largement utilisées comme is-arrayish, color-string, color-name ont été visées
- Si le code malveillant avait dépassé le simple détournement de cryptomonnaies pour aller jusqu’au vol de clés API, les conséquences auraient pu être catastrophiques
- Par exemple, une exposition massive de clés API OpenAI ou AWS aurait pu causer des dégâts durables et à grande échelle
- En réalité, la plupart des bibliothèques infectées sont surtout utilisées dans des outils en ligne de commande, ce qui limitait d’autant l’intérêt d’un vol de cryptomonnaies
Un ciblage de l’écosystème Web3 et la stratégie des attaquants
- Cette attaque semble avoir principalement visé les utilisateurs Web3 (paiement via navigateur, etc.)
- En choisissant comme cibles des bibliothèques génériques sans lien direct avec le Web3, les attaquants ont évité une détection et un blocage rapides par l’écosystème Web3
- Exemple : même en surveillant de près les bibliothèques liées à MetaMask, il est difficile de prévoir qu’une attaque surgira dans un utilitaire lié aux couleurs de texte
Les enseignements pour l’écosystème de développement
- Ce cas rappelle avec force que tous les paquets de dépendance peuvent en réalité être malveillants
- Il existe des limites pratiques au fait de contrôler ou surveiller en permanence l’intégralité de l’arbre des dépendances
- Cela montre aussi que, sous la pression du temps et des déploiements rapides en production, les vérifications de sécurité risquent inévitablement d’être reléguées au second plan
- À l’avenir, la compréhension de l’ensemble des dépendances d’un projet et une gestion prudente gagneront encore en importance
Conclusion et avertissement
- Ce contenu ne cherche ni à blâmer ni à tenir quiconque pour responsable ; il est important de reconnaître que tout le monde peut être exposé à une attaque de phishing
- La situation ayant pu évoluer depuis la publication de ce billet, il convient de vérifier directement en cas d’erreur ou de doute sur son contenu
Tags:
1 commentaires
Commentaire Hacker News
L’attaque sur la supply chain de
nxvia npm a été une balle que beaucoup d’entreprises n’auraient pas pu éviter : il suffisait d’installer le pluginnxde VS Code pour qu’il vérifie automatiquement la dernière version denxsur npm, et si vous aviez une session GitHub active (par exemple avec un compte d’entreprise connecté via GH CLI) ou des informations sensibles dans un fichier.env, tout aurait pu être exfiltré ; ce n’était pas quelque chose qu’on pouvait éviter simplement en figeant les dépendances ou en gérant correctement les mises à jour de sécurité ; il faut un changement bien plus profond dans cet écosystème ; voir l’avis de sécurité officiel pour plus de détailsgit pushOn est vraiment passés à un cheveu de la catastrophe ; j’ai du mal à croire qu’un attaquant ayant obtenu l’accès à ce type de paquets n’ait mis en ligne qu’un simple outil de vol de crypto ; à leur place, j’aurais l’impression qu’il valait le coup d’investir une semaine de plus pour y intégrer un exploit plus sophistiqué : clés API, ajout de clés publiques SSH, fuite d’IP de serveurs, profils navigateur ou jetons de session sur les machines des développeurs, voire les informations de carte Amazon sur mon desktop ; il y a énormément de choses à voler, et même sans les utiliser soi-même, ça se revend facilement sur des forums du dark web ; je me demande parfois si les cybercriminels vraiment compétents ont déjà des jobs stables et très bien payés dans la tech, et qu’il ne reste plus que ce genre d’attaques basiques
Ma tendance à procrastiner est une technique de survie ; j’attends que les autres fassent les bêta-tests à ma place ; autrefois, au bureau, j’ai utilisé Microsoft Office 2000 pendant 12 ans, ce qui m’a offert 10 années de tranquillité sans problèmes de montée de version ni besoin de reformation ; et je ne clique jamais sur les liens présents dans les e-mails
Ce serait difficile pour une petite startup, mais pour un acteur majeur comme npm, je pense qu’il faudrait réserver toutes les variantes de domaine dans tous les TLD, comme
npm.io,npm.sh,npm.help, etc. ; le fait qu’un attaquant ait obtenu le domainenpm.helpa rendu cette attaque encore plus efficaceno-reply-aws@amazon.comàno-reply@tax-and-invoicing.us-east-1.amazonaws.com; quand on voit ça pour la première fois, ça ressemble presque à un e-mail de phishing, mais on vous dit que c’est officiel, donc ça crée de la confusion ; même l’e-mail d’annonce préalable avait l’air d’un phishing, au point que je n’ai pas ouvert le PDF joint avant d’avoir reçu une vraie facture ; les entreprises disent aux clients de se méfier du phishing, tout en créant elles-mêmes une confusion inutilenpmjs.helpseront quand même cliqués par erreurEt si quelqu’un combinait une très grande minutie à la Jia Tan avec la faiblesse de notre sécurité actuelle, côté plugins d’éditeur, shell userland, etc. ? Les outils pour développeurs tournent avec des privilèges de superutilisateur, alors que ce sont souvent les moins vérifiés ; moi non plus, je ne peux pas auditer un par un
elisp,neovim,vscode, ni même les petits outils userland ; dans le meilleur des cas, je les prends vianixpkgs; il suffirait qu’un jour apparaisse un plugin VSCode un peu meilleur, puis d’attendre 1 ou 2 ans, et c’est terminé ; GGDes wallets comme MetaMask étaient ciblés, mais j’ai entendu dire que MetaMask était plutôt bien protégé contre ce genre d’attaque grâce à son module d’isolation LavaMoat ; j’aimerais vraiment lire une analyse détaillée du niveau de protection réel ; je n’ai pas de lien direct avec MetaMask, mais je suis curieux de l’efficacité de ce type de réponse sécurité, qui arrive souvent lentement par rapport aux attaques ; j’ajoute à titre de référence cet article lié
À l’affirmation « la vérité, c’est qu’avec ce genre d’attaque de phishing on finit forcément par se faire avoir un jour », je répondrais que, personnellement, probablement pas ; j’ai pour règle de ne jamais saisir d’informations d’authentification via un lien reçu par e-mail que je n’ai pas explicitement demandé moi-même, par exemple pour une réinitialisation de mot de passe ; en 2025, c’est à mon avis une compétence de sécurité que tout le monde devrait avoir
Contrairement à ce qu’indique l’article en disant que « tout le malware s’est contenté de remplacer les adresses de wallets crypto », la raison pour laquelle MetaMask n’a pas été affecté est la suivante :
Les grands dépôts de paquets open source ont besoin de solutions de sécurité bien plus solides, ou au moins d’un ensemble central de paquets fiables et audités ; c’est pareil dans les écosystèmes Python, Rust, etc., qui fonctionnent eux aussi largement sur la confiance
POM xmlest certes pénible, mais sa gestion conservatrice du changement inspire confiance ; article lié : Pourquoi les namespaces comptent dans les dépôts open source publicsL’affirmation « il n’y a aucun moyen d’empêcher ça » n’apparaît que dans les écosystèmes où les compromissions sont les plus fréquentes