Philip - stock.adobe.com

Chaîne logistique du logiciel : l'offensive Miasma

Une nouvelle vague de compromissions s'étend à PyPI et utilise des extensions natives et des hooks de démarrage pour déployer un extracteur de secrets piloté par Bun.

La campagne de compromission de la chaîne d'approvisionnement liée à Mini Shai-Hulud, Miasma et Hades démontre une itération rapide des mécanismes de livraison. Initialement, les attaquants utilisaient des fichiers de démarrage `.pth` contenant une charge utile JavaScript intégrée. Les nouvelles variantes diversifient ces méthodes pour contourner les détections établies, expliquent les équipes de Socket.

Leur analyse identifie trois branches de livraison distinctes sur PyPI. La première repose sur le hook de démarrage `.pth` qui télécharge le runtime Bun si nécessaire. La seconde utilise des extensions natives compilées, tandis que la troisième, observée dans le package `langchain-core-mcp`, sépare le loader de la charge utile. Ce dernier parcours le chemin de recherche des modules pour localiser le fichier `_index.js`, rendant l'artefact moins autonome mais plus flexible dans son déploiement.

L'exploitation des extensions natives et du runtime Bun

Une stratégie notable consiste à utiliser des extensions natives `.abi3.so` pour déclencher l'exécution du code malveillant. Dans ce scénario, le code source Python peut paraître légitime lors d'une analyse statique, car le chemin d'exécution malveillant est encapsulé dans l'extension compilée. L'exécution de la charge utile survient lors de l'initialisation du module.

Le runtime Bun est systématiquement utilisé pour exécuter la charge utile JavaScript. Le processus suit un schéma précis : le hook de démarrage identifie ou télécharge Bun dans un répertoire temporaire, puis exécute le script malveillant. Cette combinaison permet d'exploiter la flexibilité de JavaScript tout en utilisant les mécanismes d'initialisation de Python.

Stratégies d'évasion et déconnexion des composants

Les attaquants emploient des techniques sophistiquées pour neutraliser les outils de triage automatisés. La charge utile `_index.js` commence par un bloc de commentaires JavaScript volumineux contenant de fausses instructions système. Selon les recherches de Socket, ce bloc est conçu pour « dérailler les scanners ou les copilotes d'analyse qui transmettent le début d'un fichier à un modèle de langage sans isoler clairement le contenu comme étant non fiable ».

Cette technique vise spécifiquement les pipelines de sécurité basés sur l'IA, provoquant des refus de traitement, des confusions de prompt ou des classifications prématurées. Parallèlement, la déconnexion du chargeur et de la charge utile (comme dans le cas de `langchain-core-mcp`) complique la détection par les scanners qui s'attendent à trouver les deux composants au sein du même fichier `wheel`.

Ciblage sectoriel et exfiltration de secrets

La campagne cible spécifiquement des domaines à haute valeur ajoutée, notamment la bioinformatique et l'intelligence artificielle. Des packages utilisés dans l'apprentissage par graphes, le phénotypage des patients et les workflows scientifiques ont été compromis. D'autres artefacts ciblent les développeurs utilisant des outils populaires tels que LangChain, OpenAI et Flask.

L'objectif principal est l'exfiltration de secrets critiques dans les environnements de développement et les pipelines CI/CD. Les cibles incluent les jetons GitHub, npm, PyPI, les identifiants de services Kubernetes, les clés SSH, les configurations Docker et les fichiers `.env`. L'accès à ces secrets permet aux attaquants de propager la compromission en publiant de nouveaux packages malveillants ou en accédant aux infrastructures de production.

Pour approfondir sur Menaces, Ransomwares, DDoS