Attaque Massive de la Chaîne d’Approvisionnement PyPI : Extraction des Identifiants Cloud via des Hooks de Démarrage Python
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Une opération coordonnée de chaîne d’approvisionnement connue sous le nom de campagne Hades a compromis 26 packages PyPI pour voler des informations d’identification cloud. L’attaque abuse des fichiers Python .pth pour déclencher du code malveillant lors du démarrage de l’interprète, utilisant le runtime JavaScript Bun pour exécuter la charge utile. Il est conçu pour collecter des secrets liés à AWS, GCP, Azure, Kubernetes et GitHub sur plusieurs systèmes d’exploitation.
Enquête
Orca Security a identifié 37 fichiers wheel malveillants répartis dans les écosystèmes de bioinformatique et de développement d’outils. Leur analyse a révélé une technique inter-runtime dans laquelle le malware télécharge Bun pour exécuter des charges utiles JavaScript obscurcies. La campagne génère également du trafic de diversion vers des services Anthropic AI et utilise des techniques d’injection de prompt pour réduire l’efficacité de l’évaluation de sécurité basée sur les LLM.
Atténuation
Les organisations doivent immédiatement retirer les packages affectés ou épingler des versions sûres et faire tourner tous les identifiants potentiellement exposés. Cela inclut les jetons d’accès cloud, les jetons d’accès personnel GitHub, les clés SSH et les identifiants de registre Docker. Les équipes de sécurité doivent également rechercher les artefacts de persistance connus sur les hôtes Linux, macOS et Windows.
Réponse
En cas de suspicion de compromission, l’isolation du système affecté doit être effectuée avant de faire tourner les informations d’identification pour réduire le risque d’extorsion via le démon gh-token-monitor . Reconstruisez tous les postes de travail des développeurs et les coureurs CI/CD ayant exécuté les packages empoisonnés. Passez en revue les dépôts GitHub pour les commits non autorisés et pour les nouveaux dépôts créés qui correspondent aux modèles de nommage des attaquants.
Flux d’attaque
Détections
Création de fichiers Plist suspects dans LaunchAgents ou LaunchDaemons (via file_event)
Voir
Processus enfant NodeJS suspects [Linux] (via cmdline)
Voir
Création de fichier de service dans le dossier Systemd (via file_event)
Voir
Un fichier de configuration de hook spécifique au site a peut-être été créé (via file_event)
Voir
Un script Linux a été créé dans des dossiers temporaires (via file_event)
Voir
IOCs de paquets Python malveillants (via cmdline)
Voir
Détection du scraping de jetons d’authentification GCP par la campagne Hades [Google Cloud Platform]
Voir
Campagne Hades – Exfiltration de jetons d’authentification Azure [Logs d’activité Azure]
Voir
Collecte des informations d’identification AWS via une attaque de chaîne d’approvisionnement PyPI [AWS Cloudtrail]
Voir
Exécution de la simulation
Prérequis : Le contrôle préalable télémetrie et baseline doit être réussi.
Rationale : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTPs identifiés et visent à générer la télémétrie exacte attendue par la logique de détection. Les exemples abstraits ou non liés mèneront à un mauvais diagnostic.
-
Narration d’attaque et commandes : L’adversaire a compromis avec succès le poste de travail d’un développeur via un package PyPI malveillant (campagne Hades). Un hook de démarrage Python a été exécuté, extrayant avec succès un jeton d’authentification Azure de la mémoire/cache local. Pour simuler la détection de cette activité dans les journaux d’audit Azure, nous simulerons la génération d’une entrée de journal d’audit contenant la chaîne spécifique « jetons d’authentification Azure » dans le champ de description, imitant la télémétrie de l’événement qu’un système automatisé pourrait signaler lors de la détection de cette exfiltration.
-
Script de test de régression : Puisque nous ne pouvons pas facilement forcer le backend Azure réel à générer une chaîne de description malveillante spécifique sans une véritable brèche, nous simulons la présence du journal dans le flux de télémétrie (souvent réalisé dans BAS en injectant un journal synthétique dans l’espace de travail).
# Injection de journal synthétique pour simuler la détection d'exfiltration de jetons # Cela simule le champ 'Description' étant peuplé avec la chaîne cible. $LogEntry = @{ TimeGenerated = (Get-Date).ToString("yyyy-MM-ddTHH:mm:ssZ") OperationName = "TokenExfiltrationDetected" Result = "Success" Description = "Activité de malware détectée : des jetons d'authentification Azure ont été exfiltrés d'un processus local." Identity = "malicious-python-hook@attacker.com" } Write-Host "Injection de télémétrie synthétique pour valider la règle de détection ..." # Dans un BAS réel, cela appellerait l'API Data Collector de Log Analytics # À des fins de simulation, nous représentons l'entrée de journal résultante : $LogEntry | ConvertTo-Json -
Commandes de nettoyage :
# Si des journaux synthétiques ont été injectés via API, supprimez l'ID de corrélation spécifique # Pour cette simulation, aucun changement persistant n'a été fait au locataire Azure. Write-Host "Nettoyage terminé. Aucun artefact persistant d'adversaire ne reste."