00:00:00Il s'agit peut-être de l'une des plus grandes failles de la chaîne d'approvisionnement NPM
00:00:03que nous ayons jamais vues, et non, ce n'est pas un poisson d'avril, c'est juste un mauvais timing.
00:00:07Cela s'est produit dans le package Axios ; ce client HTTP a été installé 101 millions de fois cette semaine
00:00:13et compte plus de 174 000 dépendances. Il a donc déjà impacté des packages comme Datadog,
00:00:18OpenClaw et WordPress, et il a également été lié à des hackers nord-coréens.
00:00:22Alors, plongeons dedans et voyons ce qui s'est passé.
00:00:29Voici l'histoire : le 31 mars 2026, un attaquant a compromis le compte NPM
00:00:34du mainteneur principal d'Axios et a publié deux versions vérolées, la version 1.14.1 qui
00:00:39était marquée comme la dernière version, ainsi que la version 0.30.4 marquée comme héritée.
00:00:44Dans ces packages, ils ont introduit une dépendance fantôme appelée « plaincryptojs »
00:00:48qui n'était en fait que le package crypto.js normal mais avec une petite modification :
00:00:52il contenait un script post-installation nommé setup.js. Cela signifie que chaque utilisateur et chaque CI
00:00:58installant ces packages compromis exécutait également ce script. Le script lui-même contenait
00:01:02du code obfusqué qui vérifiait votre système d'exploitation, puis se connectait à un serveur
00:01:07pour télécharger une seconde charge utile correspondant à votre OS. Personne
00:01:12n'était donc à l'abri de cette attaque, et ils sont même allés jusqu'à s'assurer que la charge macOS
00:01:16fonctionnait sur les Mac Intel et Apple Silicon. Et c'est cette deuxième charge qui est vraiment redoutable :
00:01:20il s'agit d'un RAT, ou cheval de Troie d'accès à distance, qui fonctionne de la même manière sur tous les OS.
00:01:25D'abord, il analysait vos fichiers en parcourant vos documents, votre bureau
00:01:29et vos dossiers de configuration. La version Windows scannait même OneDrive, AppData et chaque
00:01:33lecteur présent sur votre système, avant d'envoyer cette liste de fichiers au serveur,
00:01:38probablement pour vérifier s'il y avait quelque chose à voler. Ensuite, il commençait
00:01:42à émettre des balises : toutes les 60 secondes, il communiquait votre nom d'hôte, nom d'utilisateur, OS,
00:01:47fuseau horaire, modèle matériel et la liste complète des processus en cours pour que l'attaquant voie
00:01:52quels logiciels vous utilisez et si vous êtes actif. Et si tout cela ne semble pas assez grave,
00:01:56le pire est à venir : à tout moment, l'attaquant pouvait envoyer à distance quatre commandes
00:02:00lui permettant de parcourir n'importe quel répertoire, d'exécuter des commandes shell ou des scripts,
00:02:05d'installer d'autres malwares ou même de tuer tout le processus pour effacer ses traces. En fait,
00:02:10ils ont même fait en sorte que le script d'installation original s'autodétruise, puis supprime le package.json
00:02:15contenant le post-install pour le remplacer par une version propre afin d'être le plus indétectable possible.
00:02:19Comme vous le voyez, ce hack était très sophistiqué et conçu pour
00:02:23cibler les postes de travail des développeurs et les exécuteurs CI/CD à la recherche de secrets comme les fichiers .env,
00:02:28les jetons NPM, les clés SSH et bien d'autres choses. Tout système ayant exécuté ces charges utiles
00:02:34doit être considéré comme victime d'un vol complet d'identifiants. En plus de tout cela,
00:02:38le mystère demeure sur la façon dont le compte NPM a été compromis. Le mainteneur a précisé que l'A2F est activée
00:02:43et que ses pipelines GitHub Actions sont également authentifiés. Il semble donc que
00:02:47les packages aient été publiés via l'interface CLI de NPM en utilisant un jeton d'accès NPM à longue durée de vie.
00:02:53La question suivante est de savoir comment ils ont obtenu ce jeton. Le mainteneur pense même
00:02:56que quelqu'un a pu récupérer ses codes de secours, mais la manière reste un mystère total. Si vous voulez
00:03:01savoir si vous êtes affecté, assurez-vous de rechercher dans vos fichiers lock les versions d'Axios
00:03:04impactées ainsi que le package plaincryptojs, et vérifiez également vos dossiers node_modules.
00:03:09Si vous en trouvez un, c'est malheureusement une mauvaise nouvelle. Vous pouvez aussi vérifier
00:03:14votre système pour des traces du RAT ; je laisserai des rapports complets en lien ci-dessous
00:03:18pour que vous puissiez suivre les étapes et savoir quoi faire en cas de compromission. Pour l'avenir,
00:03:22quelques mesures peuvent aider à prévenir ces attaques. D'abord, committez toujours vos fichiers lock
00:03:26et utilisez la commande « npm ci » au lieu de « npm install » dans vos pipelines.
00:03:31Il est aussi conseillé de définir un âge minimum pour les packages dans votre gestionnaire,
00:03:35en s'assurant qu'ils ont au moins 48 heures avant d'être installés, dans l'espoir que les malveillants
00:03:39soient détectés à temps. Cette faille Axios a été découverte et supprimée trois heures plus tard.
00:03:44Enfin, si possible, utilisez le flag --ignore-scripts lors du npm install, ou utilisez un outil
00:03:48comme Bun qui bloque par défaut tous les scripts post-install et ne les exécute
00:03:53que pour les dépendances explicitement approuvées. J'espère que c'est la plus grosse attaque
00:03:57que nous verrons cette année, mais elles sont de plus en plus fréquentes, alors restez vigilants
00:04:01et dites-moi ce que vous en pensez dans les commentaires ci-dessous.
00:04:04N'oubliez pas de vous abonner, et comme toujours, on se voit dans la prochaine vidéo.