Secrets de développeurs en danger : le malware Shai-Hulud s'infiltre dans PyPI via 19 packages scientifiques
Une nouvelle vague d'attaques de la chaîne d'approvisionnement **Shai-Hulud** a compromis 19 packages scientifiques populaires sur **PyPI**, téléchargés collectivement des centaines de milliers de fois. Découverte par la société de sécurité applicative **Socket**, cette campagne sophistiquée déploie un malware conçu pour voler un large éventail de secrets et d'identifiants de développeurs, représentant une menace importante pour les flux de travail de développement logiciel.

Des pirates ont lancé une nouvelle attaque de la chaîne d'approvisionnement **Shai-Hulud**, compromettant avec succès 19 packages sur le **PyPI** (Python Package Index). Ces packages, téléchargés des centaines de milliers de fois, ont été trojanisés pour délivrer un malware visant à voler des secrets sensibles de développeurs.
Plusieurs des packages affectés sont des outils de bioinformatique populaires, notamment **Dynamo**, **Spateo**, **CoolBox**, **U-FISH**, et **Napari-UFISH**.
### Découverte et Mécanisme Technique
La nouvelle campagne a été mise en lumière par la société de sécurité applicative **Socket**. Leur analyse a révélé 37 versions malveillantes réparties sur les 19 packages, toutes semblant provenir d'un seul mainteneur.
Les artefacts malveillants intégraient un fichier `*-setup.pth` et une charge utile JavaScript obfusquée nommée `_index.js`. L'exécution du fichier `PTH` est déclenchée simplement par le démarrage de Python, qui tente ensuite de télécharger le runtime JavaScript **Bun** depuis **GitHub** pour exécuter le script groupé.
Les chercheurs de **Socket** ont expliqué la nature insidieuse de ce mécanisme : « Cela signifie qu'une roue compromise peut transformer une installation de dépendance autrement passive en un déclencheur d'exécution retardée : la prochaine exécution de Python, pip, de tests, le noyau d'un notebook, un job CI, ou une commande de gestion de packages qui démarre Python peut traiter le .pth malveillant. »
### Connexion à la Campagne Shai-Hulud plus large
**Socket** pense que cette attaque est une extension de la campagne plus large **« Shai-Hulud »**, citant plusieurs similitudes dans les techniques employées. La société suit cet incident aux côtés d'attaques précédentes, portant le nombre total d'artefacts malveillants attribués aux activités **Shai-Hulud** à 453.
### Secrets ciblés et Exfiltration
Une analyse approfondie de la charge utile JavaScript a révélé son ciblage étendu des secrets de développeurs, notamment :
* Tokens **GitHub** et secrets **GitHub Actions**
* Tokens de publication **npm**, **PyPI**, **RubyGems**, **JFrog**
* Identifiants **AWS**, **GCP**, **Azure**, **Kubernetes**, et **Vault**
* Clés **SSH**
* Identifiants **Docker**
* Fichiers `.env`, `.npmrc`, `.pypirc`
* Historiques de shell
* Fichiers de configuration **Claude/MCP**
* Autres secrets de postes de travail de développeurs et de CI/CD
Conformément aux opérations précédentes de **Shai-Hulud**, l'objectif principal semble être de compromettre les flux de travail de développement logiciel pour faciliter une propagation ultérieure de malware.
L'exfiltration des données reflète largement les méthodes passées de **Shai-Hulud**, utilisant des dépôts **GitHub** créés automatiquement pour héberger les secrets volés via **GitHub Actions**. Une méthode d'exfiltration secondaire utilise la communication HTTPS directe, pointant vers un point d'extrémité API **Anthropic** légitime mais invalide (api[.]anthropic[.]com/v1/api), que **Socket** suggère avoir été probablement utilisé pour le camouflage.
### Évasion et Persistance
Le malware intègre plusieurs mécanismes d'évasion, tels que la vérification des locales/environnements russes et la présence d'outils de sécurité comme **StepSecurity Harden-Runner**.
Pour la persistance, le malware s'établit via des services **systemd** sur les systèmes **Linux** et des **LaunchAgents** sur **macOS**. Il exploite également les fichiers de configuration de flux de travail **GitHub** et **Claude/MCP** pour maintenir son emprise.
### Recommandations pour les Défenseurs
Le rapport de **Socket** fournit une liste complète de tous les packages et versions affectés. Il est fortement conseillé aux organisations qui ont installé ces packages de :
* Rotation immédiate de tous les secrets de développeurs.
* Restauration des environnements affectés à partir de sauvegardes sûres connues.
Les défenseurs devraient également surveiller activement les indicateurs de compromission spécifiques, notamment :
* Packages **Python** contenant des hooks de démarrage `.pth` exécutables.
* Téléchargements inattendus du runtime JavaScript **Bun** depuis **GitHub**.
* Chaînes de processus où **Python** lance **Bun** pour exécuter `_index.js`.