Le ver Mini Shai-Hulud a franchi un nouveau cap : après avoir frappé npm et GitHub, ses opérateurs visent désormais PyPI. Socket a identifié 37 artefacts malveillants répartis sur 19 paquets Python qui exploitent le mécanisme .pth au démarrage pour exécuter un voleur de credentials propulsé par Bun. Cible prioritaire : les secrets CI/CD, les jetons cloud et les variables d’environnement des développeurs en PME-ETI.
Mini Shai-Hulud sur PyPI : ce que change cette nouvelle vague
Jusqu’ici, les variantes Shai-Hulud frappaient surtout l’écosystème npm. La compromission PyPI élargit le périmètre d’attaque aux équipes Python — typiquement data science, machine learning et automatisation backend. Le mode opératoire reste cohérent avec les campagnes précédentes : publication de paquets typo-squattés ou usurpés, déclenchement automatique à l’installation, exfiltration silencieuse vers une infrastructure C2.
Le détournement du fichier .pth
L’innovation technique réside dans l’abus du démarrage Python via les fichiers .pth. Tout fichier .pth placé dans un répertoire site-packages est exécuté à chaque lancement de l’interpréteur. Les paquets malveillants déposent un .pth qui ne se contente pas d’ajouter un chemin : il exécute une charge utile Bun (runtime JavaScript), capable de scanner l’environnement, lire les fichiers .env, les configurations Docker et les jetons cloud, puis de les exfiltrer.
Pourquoi les PME-ETI : la chaîne CI/CD est devenue la couronne
Les pipelines GitHub Actions, GitLab CI et Bitbucket Pipelines stockent en clair, dans les variables d’exécution, les jetons AWS, Azure, GCP, Docker Hub, npm, PyPI eux-mêmes. Une seule installation d’un paquet Mini Shai-Hulud sur un runner de build, c’est une fuite multi-cloud que vos détections périmétriques ne verront jamais — le trafic sortant ressemble à du HTTPS légitime.
Sécuriser PyPI face à Mini Shai-Hulud : 6 actions immédiates
- Verrouiller les versions : passez à
pip install --require-hashesavec un fichierrequirements.txtcontenant les empreintes SHA-256. Aucun paquet typo-squatté ne passe. - Auditer les .pth en place : sur chaque runner et machine de développeur, listez les fichiers
.pthdanssite-packages/. Tout fichier non documenté est un drapeau rouge. - Isoler les runners CI/CD : exécutez les builds dans des conteneurs jetables avec accès réseau restreint et secrets injectés via OIDC plutôt qu’en variables persistantes.
- Activer le scanner de paquets : Socket, Snyk Open Source ou GitHub Dependabot détectent les indicateurs Mini Shai-Hulud connus.
- Rotation des secrets exposés : si vous avez installé un paquet PyPI publié récemment sans audit, partez du principe que vos jetons sont compromis et rotez-les.
- Surveiller les flux sortants Bun : un binaire
buntéléchargé en pleine session d’installation est anormal pour la plupart des stacks Python. Wazuh, Falcon ou votre EDR doit l’alerter.
Anticiper la suite : la supply chain comme nouveau périmètre
Mini Shai-Hulud sur PyPI confirme que les attaquants n’attendent plus la divulgation d’une CVE pour entrer : ils publient leurs propres dépendances. Côté défense, cela veut dire renforcer l’observabilité des installations de paquets, durcir les politiques de version et traiter chaque install comme une décision de confiance auditée. Pour aller plus loin sur la mécanique supply chain, consultez notre dossier sur Famous Chollima et l’écosystème Packagist ainsi que notre guide sur le durcissement npm avec staged publishing.