Mini ver Shai-Hulud

Le groupe de cybercriminels TeamPCP a été impliqué dans une campagne d'attaques sophistiquées ciblant la chaîne d'approvisionnement de logiciels. Cette campagne visait des packages npm et PyPI largement utilisés, notamment par TanStack, UiPath, Mistral AI, OpenSearch, Guardrails AI et plusieurs autres écosystèmes. Cette opération, liée à la campagne de logiciels malveillants Mini Shai-Hulud, témoigne d'une recrudescence significative des abus de la chaîne d'approvisionnement logicielle et des techniques de compromission basées sur l'usurpation d'identité.

Des chercheurs ont identifié des paquets npm malveillants modifiés pour inclure un composant JavaScript obfusqué nommé router_init.js. Ce code malveillant profile les environnements infectés et déploie un voleur d'identifiants sophistiqué ciblant les fournisseurs de cloud, les portefeuilles de cryptomonnaies, les outils de développement d'IA, les plateformes de messagerie, les systèmes CI/CD et les environnements GitHub Actions. Les données exfiltrées sont principalement transmises au domaine filev2.getsession.org.

L'utilisation de l'infrastructure du protocole de session révèle une tentative délibérée de contourner les contrôles de sécurité de l'entreprise. Le domaine appartenant à une plateforme de messagerie décentralisée axée sur la confidentialité, il est moins susceptible d'être bloqué par les défenses réseau traditionnelles. En guise de méthode d'exfiltration secondaire, des données chiffrées sont déposées dans des dépôts contrôlés par l'attaquant via l'API GraphQL de GitHub, à l'aide de jetons d'authentification GitHub volés et sous l'identité de l'auteur claude@users.noreply.github.com.

Mécanismes de persistance et expansion du vol d’identifiants

Le logiciel malveillant introduit plusieurs mécanismes de persistance et de surveillance conçus pour maintenir un accès prolongé aux environnements de développement compromis. Des points d'ancrage de persistance sont établis au sein de Claude Code et de Microsoft Visual Studio Code, permettant au logiciel malveillant de survivre aux redémarrages du système et de se relancer automatiquement à chaque ouverture des environnements de développement intégrés.

De plus, un service gh-token-monitor est déployé pour surveiller et exfiltrer en continu les jetons GitHub. Deux workflows GitHub Actions malveillants sont également injectés dans les dépôts compromis. Ces workflows sérialisent les secrets des dépôts au format JSON et téléchargent les données vers le point de terminaison externe api.masscan.cloud.

La dernière compromission de TanStack diffère sensiblement des incidents précédents affectant la chaîne d'approvisionnement. Au lieu d'utiliser un hook de préinstallation, les attaquants ont intégré un fichier JavaScript malveillant directement dans les archives tar des paquets, tout en introduisant une dépendance optionnelle liée à un paquet hébergé sur GitHub. Cette dépendance contient un hook de cycle de vie de préparation qui exécute la charge utile via l'environnement d'exécution Bun.

Les paquets Mistral AI infectés par un cheval de Troie utilisaient une ancienne stratégie d'infection : ils modifiaient le fichier package.json à l'aide d'un hook de préinstallation qui invoquait le fichier node setup.mjs. Ce processus téléchargeait Bun et exécutait le même logiciel malveillant de vol d'identifiants.

CVE-2026-45321 et l’abus de la publication de confiance

La faille de sécurité de TanStack a été officiellement répertoriée sous la référence CVE-2026-45321 et s'est vue attribuer un score CVSS critique de 9,6. Les enquêteurs ont confirmé que 42 paquets et 84 versions au sein de l'écosystème TanStack étaient affectés.

L'analyse a révélé que la compromission provenait d'une attaque en chaîne sur GitHub Actions, exploitant le déclencheur `pull_request_target`, l'empoisonnement du cache GitHub Actions et l'extraction à l'exécution de jetons OIDC depuis les exécuteurs GitHub Actions. Les attaquants auraient introduit des charges utiles malveillantes via des commits orphelins dans des forks GitHub avant de les injecter dans des archives tar de paquets npm. Ils ont ensuite détourné des flux de travail légitimes TanStack/router pour publier des paquets compromis avec des attestations de provenance SLSA valides.

Cette découverte marque une escalade historique dans les attaques ciblant la chaîne d'approvisionnement logicielle. Les paquets malveillants contenaient des signatures de provenance SLSA de niveau de compilation 3 valides, ce qui en fait le premier ver npm documenté capable de distribuer des paquets malveillants avec des attestations de compilation authentiques. La campagne de logiciels malveillants s'est ensuite étendue au-delà de TanStack et a touché les écosystèmes maintenus par UiPath, DraftLab et d'autres développeurs.

Cette opération exploite massivement les processus de publication sécurisés. Au lieu de voler directement les identifiants npm, un code contrôlé par l'attaquant et exécuté au sein de pipelines CI/CD de confiance a utilisé les permissions OIDC pour générer des jetons de publication éphémères lors du processus de compilation. Ceci a permis la publication de paquets malveillants via des pipelines de déploiement légitimes, tout en contournant les mesures d'authentification classiques.

Le comportement d’auto-reproduction des vers suscite l’inquiétude.

L'un des aspects les plus dangereux de la campagne Mini Shai-Hulud réside dans son modèle de propagation de type ver. Le logiciel malveillant recherche activement les jetons npm publiables configurés avec l'option `bypass_2fa=true`, recense les paquets gérés par le développeur compromis et échange les jetons OIDC de GitHub contre des jetons de publication spécifiques à chaque paquet. Ce mécanisme permet au logiciel malveillant de se propager latéralement au sein des écosystèmes de paquets sans recourir aux techniques traditionnelles de vol d'identifiants.

L'attaque a également exploité les configurations de confiance au niveau du dépôt dans le modèle d'éditeur de confiance OIDC de GitHub. La confiance étant accordée de manière générale au niveau du dépôt au lieu d'être limitée aux branches protégées et à des fichiers de workflow spécifiques, des exécutions de workflows malveillantes déclenchées par des commits orphelins ont pu demander des jetons de publication npm légitimes.

Une autre fonctionnalité inquiétante consiste à déployer un mécanisme de sécurité de type « homme mort ». Le logiciel malveillant installe un script shell qui interroge en continu le point de terminaison api.github.com/user toutes les 60 secondes afin de déterminer si les jetons npm créés par l'attaquant sont toujours actifs. Ces jetons portent la description menaçante : « Si vous révoquez ce jeton, le système de l'ordinateur du propriétaire sera effacé. »

Si les équipes de sécurité révoquent le jeton via le tableau de bord npm, le logiciel malveillant lance une routine destructrice exécutant la commande `rm -rf ~/`, transformant ainsi l'infection en un logiciel de type « wiper ». Ce comportement agressif témoigne d'une évolution significative des tactiques opérationnelles de TeamPCP et démontre une sophistication croissante des méthodes de persistance par coercition. Il est donc conseillé aux équipes de sécurité d'isoler et de sauvegarder les systèmes infectés avant de révoquer les identifiants npm compromis.

Colis concernés et impact croissant sur l’écosystème

La campagne a touché plus de 170 paquets sur npm et PyPI, représentant au total plus de 518 millions de téléchargements. Les enquêteurs ont également identifié au moins 400 dépôts créés à l'aide d'identifiants volés, contenant tous la phrase « Shai-Hulud : Here We Go Again ».

Les colis concernés sont les suivants :

guardrails-ai@0.10.1 (PyPI)
mistralai@2.4.6 (PyPI)
@opensearch-project/opensearch@3.5.3, 3.6.2, 3.7.0, 3.8.0
@squawk/mcp@0.9.5
@squawk/weather@0.5.10
@squawk/plan de vol@0.5.6
@tallyui/connector-medusa@1.0.1, 1.0.2, 1.0.3
@tallyui/connector-vendure@1.0.1, 1.0.2, 1.0.3

Le logiciel malveillant utilise également plusieurs canaux d'exfiltration redondants. Outre l'infrastructure du protocole de session et les boîtes de dépôt mortes de GitHub, les identifiants volés sont transmis via le domaine typosquatté git-tanstack.com.

Le malware PyPI introduit une logique destructrice géolocalisée

Les variantes de logiciels malveillants basées sur Python et associées aux paquets malveillants Mistral AI et Guardrails AI diffèrent sensiblement des charges utiles JavaScript distribuées via npm. Le paquet PyPI mistralai compromis télécharge un voleur d'identifiants depuis l'hôte distant 83.142.209.194.

Des chercheurs ont découvert que ce logiciel malveillant Python intègre une logique de géolocalisation conçue pour éviter son exécution dans les environnements russophones. Il comprend également un mécanisme destructeur géorepéré qui introduit une probabilité d'une chance sur six d'exécuter la commande `rm -rf /` si le système infecté semble se trouver en Israël ou en Iran.

Ce comportement témoigne d'une évolution inquiétante vers le déploiement de charges utiles destructives prenant en compte les régions au sein des écosystèmes de logiciels libres.

La menace croissante des attaques basées sur l’usurpation d’identité dans la chaîne d’approvisionnement

La campagne Mini Shai-Hulud illustre une transformation plus large des attaques modernes contre la chaîne d'approvisionnement. Plutôt que de se concentrer uniquement sur la compromission de colis, les acteurs malveillants ciblent de plus en plus les identités CI/CD de confiance, les flux de travail de publication et les pipelines d'automatisation basés sur le cloud.

Une fois que les attaquants ont accès à l'infrastructure de publication de logiciels, le processus de développement lui-même devient un mécanisme de distribution de logiciels malveillants. Comme de nombreuses actions malveillantes se déroulent via des flux de travail légitimes, des attestations fiables et des systèmes de publication authentiques, les contrôles de sécurité traditionnels peuvent ne pas détecter les comportements malveillants.

Les principales caractéristiques définissant cette nouvelle génération d'attaques contre la chaîne d'approvisionnement sont les suivantes :

  • Abus des mécanismes de publication de confiance et d'échange de jetons OIDC
  • Propagation via des flux de travail CI/CD et des systèmes de construction légitimes
  • Utilisation d'attestations SLSA valides pour dissimuler des paquets malveillants
  • Opérations d'exfiltration et de persistance d'identifiants multicanaux
  • Mécanismes de représailles destructeurs conçus pour intimider les défenseurs

L'extension de cette campagne aux outils d'IA, à l'automatisation d'entreprise, à l'infrastructure de recherche, au développement front-end, aux outils liés à l'aéronautique et aux écosystèmes CI/CD témoigne de l'interconnexion profonde des chaînes d'approvisionnement logicielles. La surveillance comportementale lors de l'installation des packages et de l'exécution des compilations est désormais cruciale pour détecter les menaces qui paraissent légitimes au premier abord.

Tendance

Le plus regardé

Chargement...