SOC Prime Bias: Critique

12 Jun 2026 18:43 UTC

Attaque Massive de la Chaîne d’Approvisionnement PyPI : Extraction des Identifiants Cloud via des Hooks de Démarrage Python

Author Photo
SOC Prime Team linkedin icon Suivre
Attaque Massive de la Chaîne d’Approvisionnement PyPI : Extraction des Identifiants Cloud via des Hooks de Démarrage Python
shield icon

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

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."