Des pirates nord-coréens détournent la bibliothèque Axios dans une attaque sophistiquée contre la chaîne d’approvisionnement visant les cryptomonnaies

15 min de lecture
Des pirates nord-coréens détournent la bibliothèque Axios dans une attaque sophistiquée contre la chaîne d’approvisionnement visant les cryptomonnaies

Des millions de développeurs exposés après l’empoisonnement d’un dépôt de code populaire par des pirates

Des pirates informatiques soupçonnés d’être nord-coréens ont mené l’une des attaques contre la chaîne d’approvisionnement les plus sophistiquées sur le plan opérationnel de ces dernières années, en compromettant Axios, une bibliothèque JavaScript téléchargée environ 100 millions de fois par semaine. L’attaque, qui a duré environ trois heures au petit matin du 31 mars, a injecté du code malveillant dans des logiciels utilisés par des milliers d’entreprises des secteurs de la santé, de la finance, des plateformes d’échange de cryptomonnaies et de la technologie. Les chercheurs en sécurité estiment que les versions piégées ont été téléchargées par environ 3 % des utilisateurs de la bibliothèque, exposant potentiellement des centaines de milliers de systèmes à des chevaux de Troie d’accès à distance conçus pour dérober des cryptomonnaies et des identifiants d’entreprise.

Sommaire
  1. Des millions de développeurs exposés après l’empoisonnement d’un dépôt de code populaire par des pirates
  2. Le mécanisme d’une compromission de la chaîne d’approvisionnement
  3. Un logiciel malveillant multiplateforme installe une porte dérobée persistante
  4. La machine à revenus numériques de Pyongyang
  5. Une cascade de vulnérabilités dans la chaîne d’approvisionnement
  6. Techniques d’évasion et contre-mesures forensiques
  7. Sécuriser la chaîne d’approvisionnement logicielle
  8. À retenir

Axios est un client HTTP fondé sur les promesses, qui permet d’effectuer des requêtes API asynchrones depuis Node.js et les navigateurs. Il constitue ainsi un composant essentiel des applications web modernes. Des entreprises allant des prestataires de soins aux institutions financières s’appuient sur cette bibliothèque pour simplifier la création de sites web et les échanges de données. Certaines sociétés de cryptomonnaies et entreprises technologiques actives dans le secteur des actifs numériques utilisent également ce logiciel, ce qui en fait des cibles particulièrement intéressantes pour les opérations cybercriminelles de Pyongyang destinées à générer des revenus. L’adoption massive d’Axios dans les environnements d’entreprise fait peser des risques en cascade sur les dépendances en aval et les services intégrés.

Le Threat Intelligence Group de Google a officiellement attribué l’incident à UNC1069, un acteur nord-coréen motivé par l’appât du gain et actif depuis au moins 2018. Le groupe s’est fait connaître en ciblant des plateformes d’échange de cryptomonnaies, des plateformes de finance décentralisée et des sociétés de capital-risque afin de financer les programmes nucléaires et balistiques de Pyongyang. Selon Mandiant, la société de renseignement détenue par Google, cet incident marque une nouvelle escalade dans la campagne menée par la Corée du Nord pour transformer la chaîne d’approvisionnement logicielle mondiale en arme contre des cibles économiques de premier plan.

Publicité

Charles Carmakal, directeur technique de Mandiant, a expliqué que la menace s’inscrirait dans la durée.

Nous pensons qu’ils tenteront d’utiliser les identifiants et l’accès aux systèmes obtenus récemment lors de cette attaque contre la chaîne d’approvisionnement logicielle pour cibler des entreprises et leur dérober des cryptomonnaies. Il faudra probablement plusieurs mois pour évaluer les conséquences de cette campagne en aval.

John Hammond, chercheur en sécurité chez Huntress, a indiqué que son entreprise avait déjà repéré environ 135 appareils compromis appartenant à une douzaine d’entreprises, mais s’attend à ce qu’il ne s’agisse que des premières découvertes, à mesure que les organisations achèveront leurs audits forensiques.

Le mécanisme d’une compromission de la chaîne d’approvisionnement

L’attaque a débuté lorsque les pirates ont pris le contrôle du compte npm de @jasonsaayman, le principal mainteneur de la bibliothèque Axios. Plutôt que d’exploiter des vulnérabilités zero-day sophistiquées, les auteurs de la menace ont utilisé un jeton d’accès à longue durée de vie pour contourner les contrôles de sécurité modernes, notamment les processus d’authentification fondés sur OpenID Connect. Ils ont ainsi pu publier directement dans le registre Node Package Manager deux versions piégées du logiciel, 1.14.1 et 0.30.4, sans déclencher les alertes de sécurité habituelles ni avoir à contourner l’authentification multifacteur.

Hammond a relevé une faille de configuration déterminante dans le déroulement de l’attaque. Même sur la branche v1.x, où la publication de confiance OIDC était configurée, le processus de publication transmettait toujours NPM_TOKEN comme variable d’environnement, en plus des identifiants OIDC. Lorsque les deux sont présents, npm utilise le jeton. Le jeton à longue durée de vie constituait donc, dans les faits, le moyen d’authentification de tous les éditeurs, quelle que soit la configuration OIDC. Cette erreur d’architecture a permis aux attaquants de contourner les protections, bien que le mainteneur ait activé l’authentification multifacteur sur ses comptes. Elle montre comment des mécanismes d’authentification anciens peuvent compromettre les cadres de sécurité modernes.

Les attaquants ont fait preuve de préparation et de patience. Dix-huit heures avant l’assaut principal, ils ont publié une version saine d’une dépendance fantôme appelée plain-crypto-js afin de se constituer un historique de publication et de ne pas éveiller les soupçons avec un compte sans historique. Vingt minutes avant la première version malveillante d’Axios, ils ont publié la version piégée de cette dépendance, qui contenait un script post-installation conçu pour s’exécuter automatiquement lors de l’installation ou de la mise à jour de la bibliothèque compromise par les développeurs. La deuxième version piégée a suivi seulement 39 minutes plus tard, signe que le groupe avait automatisé son processus de déploiement pour maximiser la diffusion pendant cette fenêtre d’opportunité limitée.

Pendant l’attaque, les mainteneurs ont eu beaucoup de mal à reprendre le contrôle. Dans une discussion publique sur GitHub, un collaborateur a indiqué qu’il ne pouvait pas révoquer les accès du compte responsable de la publication malveillante, précisant que les permissions de l’attaquant dépassaient les siennes. Une course contre la montre s’est alors engagée : les pirates conservaient leurs droits de publication tandis que la communauté des développeurs s’efforçait de contenir les dégâts. NPM a finalement retiré les versions malveillantes trois heures après leur publication initiale et placé le paquet plain-crypto-js en quarantaine de sécurité. Une heure plus tard, il l’a remplacé par un paquet de remplacement réservé à la sécurité.

Publicité

Un logiciel malveillant multiplateforme installe une porte dérobée persistante

Une fois installée, la dépendance malveillante a déployé un téléchargeur JavaScript obfusqué, baptisé SILKBELL, qui récupérait des charges utiles adaptées à chaque plateforme depuis un serveur distant de commande et de contrôle, à l’adresse sfrclak.com. Sur les systèmes Windows, le logiciel malveillant livrait des outils basés sur PowerShell capables d’exécuter des commandes arbitraires. Les utilisateurs de macOS recevaient un binaire Mach-O en C++, tandis que les installations Linux étaient ciblées par une porte dérobée en Python. Les chercheurs en sécurité ont identifié ce logiciel malveillant de deuxième étape sous le nom de WAVESHAPER.V2, une évolution d’une porte dérobée précédemment attribuée à UNC1069 dans le cadre d’attaques visant le secteur des cryptomonnaies remontant à 2023.

L’architecture technique de l’attaque révèle une volonté délibérée de rester furtif et de s’adapter aux différentes plateformes. Au lieu de modifier directement le code source d’Axios, ce qui aurait été visible dans les dépôts publics et aurait déclenché des alertes lors de la revue de code, les pirates ont introduit leurs fonctionnalités malveillantes par le biais d’une chaîne de dépendances. « Il n’y a pas une seule ligne de code malveillant dans axios, et c’est précisément ce qui rend cette attaque si dangereuse », ont relevé les chercheurs de StepSecurity. Le paquet plain-crypto-js s’exécutait grâce à un hook postinstall dans son fichier package.json, ce qui permettait au logiciel malveillant de s’exécuter discrètement pendant l’installation, avant d’effacer ses propres traces et de remplacer les métadonnées du paquet par une version saine.

WAVESHAPER.V2 envoie un signal à son infrastructure de commande et de contrôle toutes les 60 secondes et accepte des URL C2 dynamiques transmises en arguments de ligne de commande. Cette conception permet aux attaquants de renouveler leur infrastructure sans redéployer le logiciel malveillant. La porte dérobée offre quatre fonctions principales : interrompre les processus en cours, énumérer les répertoires en recueillant des métadonnées détaillées sur les fichiers, notamment leurs horodatages et leur taille, exécuter des commandes système au moyen de langages de script natifs tels qu’AppleScript sur macOS ou les commandes shell sur Linux, et injecter des binaires arbitraires dans des processus en cours. L’analyse d’Elastic Security Labs a révélé que le binaire macOS faisait référence à des chemins de compilation de développeur directement associés au module webT de BlueNoroff, utilisé dans les campagnes antérieures de logiciels malveillants RustBucket et Hidden Risk, ce qui renforce l’attribution à la Corée du Nord.

Publicité

La machine à revenus numériques de Pyongyang

Les opérations de piratage de la Corée du Nord sont devenues une source de financement essentielle pour son programme d’armement nucléaire soumis à des sanctions. Selon des rapports des Nations unies et des estimations de la Maison-Blanche publiées en 2023, environ la moitié du financement du développement des missiles de Pyongyang provient de cybervols. Ces dernières années, des pirates ont dérobé des milliards de dollars à des banques et à des sociétés de cryptomonnaies. Rien que l’an dernier, des agents nord-coréens ont volé 1,5 milliard de dollars en cryptomonnaies lors d’un seul casse record, démontrant leur capacité à compromettre des cibles de grande valeur à grande échelle.

Ben Read, directeur du renseignement stratégique chez Wiz, a expliqué que la Corée du Nord agissait différemment des autres acteurs étatiques.

La Corée du Nord ne se soucie pas de sa réputation ni du fait d’être finalement identifiée. Ainsi, même si ce type d’opérations fait beaucoup de bruit et attire fortement l’attention, c’est un prix qu’elle est prête à payer.

Cette tolérance au risque permet à Pyongyang de mener des attaques audacieuses contre la chaîne d’approvisionnement, auxquelles d’autres pays pourraient renoncer par crainte de conséquences diplomatiques ou d’être attribués. La compromission d’Axios s’inscrit dans une tendance amorcée il y a trois ans, lorsque des agents nord-coréens auraient infiltré 3CX, un éditeur de logiciels utilisé par des entreprises de santé et des chaînes hôtelières pour leurs appels vocaux et vidéo.

John Hultquist, analyste en chef au Threat Intelligence Group de Google, a souligné que le groupe s’intéressait tout particulièrement aux actifs numériques.

Les pirates nord-coréens ont une solide expérience des attaques contre la chaîne d’approvisionnement, qu’ils ont historiquement utilisées pour voler des cryptomonnaies. L’ampleur exacte de cet incident n’est pas encore claire, mais compte tenu de la popularité du paquet compromis, nous nous attendons à ce que ses répercussions soient considérables.

UNC1069 a déjà ciblé des entreprises de technologie financière au moyen de fausses réunions Zoom, de techniques d’ingénierie sociale et de plusieurs familles de logiciels malveillants distinctes, témoignant d’un intérêt persistant et évolutif pour l’écosystème des cryptomonnaies.

Une cascade de vulnérabilités dans la chaîne d’approvisionnement

L’incident Axios survient dans un contexte de forte hausse préoccupante des attaques contre la chaîne d’approvisionnement de l’écosystème des logiciels open source. Au cours du mois écoulé, les équipes de sécurité ont dû réagir à une série de compromissions en cascade, notamment des attaques contre Trivy, un outil d’analyse de sécurité populaire, LiteLLM, une bibliothèque Python largement utilisée pour intégrer des modèles d’IA, et Telnyx, une plateforme de communication. Google a confirmé que l’attaque contre Axios n’était pas liée aux récents problèmes touchant la chaîne d’approvisionnement de TeamPCP. Toutefois, chaque compromission réussie fournit aux attaquants de nouveaux identifiants et un premier point d’accès à d’autres dépôts, créant un cycle de compromissions qui s’autoalimente.

Carmakal a averti que la récente série d’attaques avait permis de constituer un immense stock de secrets dérobés. « Les secrets volés au cours des deux dernières semaines permettront de mener d’autres attaques contre la chaîne d’approvisionnement logicielle, de compromettre des environnements SaaS et, en aval, les clients concernés, de lancer des attaques par rançongiciel et des opérations d’extorsion, ainsi que de réaliser des casses de cryptomonnaies dans les prochains jours, semaines et mois », a-t-il expliqué. « Nous avons connaissance de centaines de milliers d’identifiants volés. Ces attaques sont l’œuvre d’acteurs aux motivations diverses. L’impact potentiel de l’attaque d’hier contre la chaîne d’approvisionnement npm d’axios est vaste et touche également d’autres paquets populaires qui en dépendent. »

Tom Hegel, chercheur principal chez SentinelOne, a souligné le caractère invisible de la menace.

Chaque fois que vous chargez un site web, consultez le solde de votre compte bancaire ou ouvrez une application sur votre téléphone, il y a de fortes chances qu’Axios fonctionne en arrière-plan. Vous n’avez rien à cliquer et aucune erreur à commettre. Le logiciel auquel vous faites déjà confiance l’a fait pour vous.

Cette remarque souligne la manière dont les attaques contre la chaîne d’approvisionnement exploitent la confiance implicite accordée aux composants logiciels établis, contournant ainsi les formations classiques de sensibilisation à la sécurité et les protections des terminaux.

Publicité

Techniques d’évasion et contre-mesures forensiques

Les attaquants ont mis en œuvre des mesures anti-forensiques sophistiquées, qui compliquent la réponse aux incidents et la détection. Après son exécution, le logiciel malveillant a non seulement supprimé ses propres fichiers d’installation, mais aussi manipulé les informations de version pour tromper les défenseurs. Le paquet malveillant plain-crypto-js s’identifiait comme la version 4.2.0 au lieu de 4.2.1, semant le doute parmi les équipes de sécurité qui vérifiaient l’intégrité des paquets. Cette usurpation de version visait à faire croire aux administrateurs que leurs systèmes exécutaient un logiciel légitime, alors qu’ils avaient en réalité installé la version compromise.

Tomislav Pericin, architecte logiciel en chef chez ReversingLabs, a décrit l’attaque comme un modèle pour de futures opérations plutôt que comme un incident isolé.

Le niveau de sophistication opérationnelle constaté ici, avec des identifiants de mainteneur compromis, des charges utiles préparées pour trois systèmes d’exploitation, les deux branches de publication touchées en moins de 40 minutes et une autodestruction intégrée des traces forensiques, révèle un acteur de la menace qui a conçu cette opération pour la déployer à grande échelle. Si cette campagne apparaît maintenant dans PyPI et NuGet, cela correspond à ce que suggèrent déjà les mécanismes de l’attaque : l’objectif était de toucher le plus grand nombre possible de développeurs.

Les organisations doivent désormais auditer non seulement leurs dépendances npm, mais aussi tous les gestionnaires de paquets alimentant leurs processus de compilation. Hammond a jugé le calendrier particulièrement inquiétant au vu de l’automatisation croissante du développement. Il a souligné que l’attaque tombait à point nommé, compte tenu de l’adoption rapide d’agents d’IA qui génèrent du code dans des organisations sans contrôle ni garde-fou. Le risque ne concerne pas uniquement les utilisateurs directs d’Axios, mais aussi toute organisation dont les outils de développement résolvent automatiquement les dépendances. Isaac Evans, fondateur de Semgrep, a fait remarquer que même les développeurs ayant figé leurs versions, conservé des fichiers de verrouillage et respecté les règles élémentaires de sécurité pouvaient avoir été touchés, car leur environnement de développement intégré avait récupéré la dépendance en arrière-plan.

Sécuriser la chaîne d’approvisionnement logicielle

Les équipes de sécurité de tous les secteurs s’efforcent désormais d’évaluer leur exposition et de remédier aux compromissions. Les organisations utilisant Axios doivent immédiatement examiner leurs arbres de dépendances pour repérer les versions 1.14.1 et 0.30.4, revenir à des versions vérifiées comme sûres, telles que 1.14.0 ou 0.30.3, et renouveler tous les identifiants accessibles pendant la période d’installation. Les indicateurs techniques de compromission comprennent la présence de plain-crypto-js dans les répertoires node_modules, des connexions réseau à sfrclak.com (adresse IP 142.11.206.73) et des processus suspects dans des répertoires temporaires tels que /Library/Caches/com.apple.act.mond sur les systèmes macOS.

Les mesures immédiates d’atténuation consistent notamment à figer Axios sur des versions connues comme sûres dans les fichiers package-lock.json afin d’éviter les mises à niveau accidentelles, à vérifier la présence de la dépendance malveillante, à arrêter tout processus malveillant détecté, à bloquer le domaine de commande et de contrôle identifié aux frontières du réseau, à isoler les systèmes touchés des réseaux de production et à renouveler tous les secrets et identifiants susceptibles d’avoir été exposés pendant la période de compromission. Les organisations devraient également examiner les journaux d’accès afin de repérer toute utilisation non autorisée de clés API ou de comptes de service susceptibles d’avoir été dérobés par le logiciel malveillant.

Ilkka Turunen, directeur technique pour les équipes de terrain chez Sonatype, a souligné les problèmes fondamentaux de confiance mis en évidence par cet incident. « Cette attaque montre que les pirates exploitent désormais la confiance que les gens accordent au code, et non au code lui-même », a-t-il expliqué. « La capacité malveillante a été introduite au moyen d’une dépendance mise en scène et conçue pour effacer ses propres traces, ce qui a rendu l’attaque plus difficile à repérer et à comprendre. Ce n’est pas simplement un logiciel malveillant : cela révèle une stratégie bien plus réfléchie et aboutie. » Mike Puglia, responsable de la sécurité chez Kaseya, a souligné que ces incidents apportaient une nouvelle preuve de la fragilité de l’écosystème logiciel mondial, où la compromission d’un seul compte peut exposer des dizaines de milliers d’organisations en quelques heures.

Publicité

À retenir

  • Le groupe nord-coréen UNC1069 a compromis la bibliothèque JavaScript Axios, téléchargée 100 millions de fois par semaine et présente dans environ 80 % des environnements cloud
  • Les versions malveillantes 1.14.1 et 0.30.4 ont été disponibles pendant environ trois heures le 31 mars. Elles ont été téléchargées par quelque 3 % des utilisateurs, soit potentiellement 600 000 téléchargements
  • L’attaque a utilisé une dépendance fantôme appelée plain-crypto-js pour déployer WAVESHAPER.V2, une porte dérobée multiplateforme capable d’infecter les systèmes Windows, macOS et Linux
  • Google Mandiant s’attend à ce que le groupe utilise les identifiants volés pour mener des opérations de vol de cryptomonnaies sur le long terme et financer les programmes nucléaires et balistiques de la Corée du Nord
  • Le logiciel malveillant disposait de capacités anti-forensiques avancées, dont l’autosuppression et l’usurpation de version : il se déclarait en version 4.2.0 au lieu de 4.2.1 pour échapper à la détection
  • Les organisations doivent auditer leurs arbres de dépendances, renouveler tous leurs identifiants, bloquer le domaine C2 sfrclak.com et l’adresse IP 142.11.206.73, et revenir immédiatement à des versions sûres d’Axios
  • La compromission a été rendue possible par un jeton d’accès à longue durée de vie qui a contourné les contrôles d’authentification OIDC, soulignant la nécessité de supprimer les anciens identifiants
Partager cet article

À lire aussi