Attaque sur la chaîne d’approvisionnement npm frappe @antv : Les secrets de développement blockchain maintenant exposés
Crypto Scams

Attaque sur la chaîne d’approvisionnement npm frappe @antv : Les secrets de développement blockchain maintenant exposés

Par frenchlbn

Campagne Mini Shai-Hulud dans npm : compromission des paquets @antv ciblant les jetons GitHub, clés AWS et secrets CI/CD des développeurs blockchain dans une attaque coordonnée de la chaîne d’approvisionnement.

Les publications malveillantes ont commencé juste avant 2 h UTC le 19 mai. Au moment où la plupart des développeurs de la côte Est avaient leur premier café, les dégâts étaient déjà faits.

L’équipe de recherche des menaces de Socket suit une attaque active de la chaîne d’approvisionnement npm compromettant des paquets de la suite de visualisation antv. Le compte mainteneur npm concerné, atool, contrôle une vaste gamme de paquets de visualisation de données et de graphiques largement utilisés dans les outils de développement blockchain. Parmi les paquets signalés : antv/g2, antv/g6, antv/x6, antv/l7, antv/s2, antv/f2, et des outils connexes hors de l’espace de noms antv, notamment timeago.js, size-sensor et canvas-nest.js.

echarts-for-react est au cœur de l’exposition. Ce paquet totalise environ 1,1 million de téléchargements hebdomadaires. Socket a signalé une version malveillante, la 3.2.7, comme étant un logiciel malveillant connu, l’artefact compromis ayant été publié seulement 19 minutes avant sa détection selon les données du registre de paquets de Socket.

639 versions. Une nuit. Et ce n’est pas fini.

La fenêtre d’activité était courte. Les publications malveillantes ont commencé vers 01 h 56 UTC et se sont arrêtées vers 02 h 56 UTC. Les systèmes de détection de Socket ont détecté la majeure partie dans les six à douze minutes suivant la publication. Le temps de détection médian s’établissait à environ 6,7 minutes, selon l’examen interne de l’entreprise publié sur socket.dev.

Dans l’ensemble de la campagne Mini Shai-Hulud, Socket a désormais recensé 1 055 versions compromises réparties sur 502 paquets uniques. La campagne couvre npm, PyPI et Composer. npm représente la quasi-totalité : 1 048 versions sur 498 paquets uniques, PyPI et Composer ne contribuant qu’à une poignée.

Les paquets concernés cette nuit-là comprenaient également des espaces de noms en dehors d’antv. Des paquets sous lint-md, openclaw-cn et starmind ont reçu des mises à jour malveillantes lors de la même vague. Les données CSV examinées par ce journaliste montrent des paquets comme antv/x6 versions 3.2.7 et 3.3.7, antv/g2 versions 5.5.8 et 5.6.8, antv/g6, antv/g2plot, antv/s2, et des dizaines d’autres, tous publiés dans la même fenêtre d’une heure.

Source : socket.dev.

Ce que fait réellement la charge utile

Le code injecté n’est pas subtil quant à ses objectifs. Un fichier index.js de niveau racine modifie package.json pour s’exécuter au moment de l’installation via un hook preinstall : bun run index.js.

Les couches d’obscurcissement des chaînes sont profondes. La charge utile utilise une grande table de correspondance, un décodage de chaîne à l’exécution et un déchiffreur personnalisé enregistré dans globalThis sous le nom fc2edea72. Le décodage révèle le point de terminaison d’exfiltration : https://t[.]m-kosche[.]com:443/api/public/otel/v1/traces. Les données collectées sont compressées avec gzip, chiffrées à l’aide d’AES-256-GCM, et la clé AES elle-même est encapsulée dans RSA-OAEP avec SHA-256 avant la transmission. Intercepter ce trafic à partir de la télémétrie réseau n’est pas simple.

La charge utile cible spécifiquement les secrets d’environnement des développeurs. Les jetons GitHub, les jetons npm, les informations d’identification AWS, les documents de compte de service Kubernetes, les jetons Vault, les clés SSH privées, les fichiers d’authentification Docker et les chaînes de connexion aux bases de données figurent tous dans la liste des cibles. Elle contient également une logique explicite pour 19 plateformes CI/CD, notamment GitHub Actions, GitLab CI, CircleCI, Jenkins, Azure DevOps, AWS CodeBuild, Buildkite, Vercel et Netlify.

Cette liste ressemble à un caddie. Pas à un outil de surveillance.

Dépôts GitHub, noms Dune et un ver aux ambitions

Un chemin d’exfiltration de secours via GitHub existe pour les cas où le point de terminaison HTTPS principal est bloqué. Si la charge utile obtient un jeton GitHub utilisable, elle crée un dépôts sous le compte de la victime et valide les données volées dans un répertoire results/. Les noms de fichiers suivent un motif results-timestamp-counter.json. Socket a précédemment documenté ce comportement lors des vagues précédentes de Mini Shai-Hulud.

Les résultats de recherche publique GitHub pour la phrase marqueur inversée montrent actuellement environ 1 800 dépôts, selon les captures d’écran consultées dans le rapport de Socket. Les noms de dépôts suivent des motifs inspirés de Dune : sayyadina-stillsuit-852, atreides-ornithopter-112, harkonnen-phibian-552. Un dépôt observé, Zaynex/sayyadina-stillsuit-852, contient un répertoire results/ cohérent avec une exfiltration active.

Une logique de ver est également intégrée. Le paquet valide les jetons npm via les API du registre, énumère les paquets maintenables, injecte le hook preinstall, incrémente les numéros de version, puis republie sous l’identité du mainteneur compromis. Conçu pour se propager, pas seulement pour voler.

Des variantes précédentes de Mini Shai-Hulud ont touché les paquets TanStack et les outils liés à Intercom. Des noms de fichiers différents, des points de terminaison C2 différents. Cette vague utilise un index.js de niveau racine et un corps de charge utile plus petit. Le comportement principal correspond aux variantes. Socket considère cela comme la même famille de campagne.

La menace n’est pas théorique pour l’infrastructure crypto. Les développeurs blockchain construisant des outils DeFi ou des tableaux de bord Web3 utilisent fréquemment les bibliothèques de graphiques antv pour la visualisation des données on-chain. Un pipeline CI/CD compromis dans un projet DeFi pourrait exposer les identifiants du déployeur ou l’accès administrateur du protocole. Socket indique que l’enquête reste ouverte.

frenchlbn

À propos de l'auteur

frenchlbn

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *