SOC Prime Bias: Critique

12 Jun 2026 18:47 UTC

Solana FakeFix : 25 packages npm et PyPI malveillants se font passer pour des versions stables

Author Photo
SOC Prime Team linkedin icon Suivre
Solana FakeFix : 25 packages npm et PyPI malveillants se font passer pour des versions stables
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Une campagne de paquets malveillants cible les développeurs Solana à travers des bibliothèques npm et PyPI typosquattées, promues comme des correctifs de construction stable. Le malware exploite l’exécution du cycle de vie des paquets et les hooks d’importation pour voler les secrets des portefeuilles, les identifiants de cloud, et les clés SSH des environnements infectés. Certains échantillons vont au-delà du vol en agissant comme des portes dérobées complètes via un commandement et un contrôle basé sur Telegram ou en déployant des chargeurs axés sur Windows construits autour de Deno.

Enquête

Des chercheurs en sécurité de JFrog ont découvert deux opérations distinctes mais liées. La première, suivie sous le nom de Solana FakeFix, utilisait des paquets de style SDK contrefaits pour collecter des secrets sensibles auprès des développeurs et des systèmes de construction. La seconde utilisait des paquets npm thématiques CMS pour charger des exécutables Windows. Leur analyse a montré que le code malveillant était souvent ajouté à des bibliothèques qui semblaient fonctionnelles pour aider les paquets à paraître légitimes tout en récupérant discrètement des charges utiles de deuxième étape de manière dynamique via Deno.

Atténuation

Les organisations devraient supprimer tous les paquets affectés des stations de travail des développeurs, des pipelines CI/CD et des caches de paquets internes. Toute identification potentiellement exposée devrait être immédiatement renouvelée, y compris les clés de portefeuilles Solana, les clés SSH, les identifiants AWS, et les jetons GitHub. Les équipes de sécurité devraient également auditer les hôtes pour les méthodes de persistance telles que les clés de registre Run, les tâches planifiées et les modifications des profils shell.

Réponse

Les défenseurs devraient désinstaller les paquets malveillants identifiés et examiner les fichiers de verrouillage des dépendances pour des bibliothèques non autorisées ou inattendues. Tous les secrets exposés doivent être renouvelés immédiatement, et toute cryptomonnaie stockée dans des portefeuilles potentiellement compromis doit être transférée vers de nouvelles adresses de confiance. Les systèmes de CI et ceux des développeurs doivent ensuite être reconstruits à partir d’images propres pour s’assurer qu’aucune porte dérobée cachée ou mécanisme de persistance ne subsiste.

"graph TB %% Class Definitions Section classDef technique fill:#99ccff classDef persistence fill:#ff99cc classDef command_control fill:#cc99ff classDef exfiltration fill:#ffcc99 classDef credential_access fill:#ffff99 %% Initial Access and Execution Phase attack_supply_chain["<b>Technique</b> – <b>T1195.001 Compromission de la chaîne d’approvisionnement : <br/>Compromission des dépendances logicielles et des outils de développement</b><br/><b>Description</b> : Utilisation de typosquatting et de spam de problèmes GitHub pour inciter les développeurs à installer des paquets npm et PyPI malveillants se faisant passer pour des SDK Solana légitimes.<br/><b>Cibles</b> : @solana-labs/web3.js et outils similaires."] class attack_supply_chain technique attack_user_exec_copy["<b>Technique</b> – <b>T1204.004 Exécution par l’utilisateur : Copie et collage malveillants</b><br/><b>Description</b> : Les développeurs exécutent des commandes suggérées par des attaquants via des problèmes GitHub ou des instructions de paquets."] class attack_user_exec_copy technique attack_user_exec_lib["<b>Technique</b> – <b>T1204.005 Exécution par l’utilisateur : Bibliothèque malveillante</b><br/><b>Description</b> : Les développeurs importent des bibliothèques malveillantes dans leurs projets."] class attack_user_exec_lib technique op_exec_trigger(("AND")) class op_exec_trigger technique attack_event_trigger["<b>Technique</b> – <b>T1546.016 Exécution déclenchée par un événement : Paquets d’installation</b><br/><b>Description</b> : Exécution de code contrôlé par un attaquant via des scripts de cycle de vie post-installation npm ou des importations PyPI __init__.py."] class attack_event_trigger technique attack_drive_by["<b>Technique</b> – <b>T1189 Compromission en passant</b><br/><b>Description</b> : Téléchargement de charges utiles secondaires telles que des exécutables Windows ou des chargeurs basés sur Deno."] class attack_drive_by technique %% Persistence Phase persist_active_setup["<b>Technique</b> – <b>T1547.014 Exécution automatique au démarrage ou à la connexion : Configuration active</b><br/><b>Description</b> : Création de clés de registre Run pour lancer des charges utiles malveillantes."] class persist_active_setup persistence persist_windows_service["<b>Technique</b> – <b>T1543.003 Créer ou modifier un processus système : Service Windows</b><br/><b>Description</b> : Établir une persistance en créant des services Windows."] class persist_windows_service persistence payload_deno["<b>Malware</b> – <b>Campagne CMS basée sur Deno</b><br/><b>Description</b> : Charge utile JavaScript malveillante exécutée en mode sans tête via conhost.exe."] class payload_deno technique %% Command and Control Phase c2_web_service["<b>Technique</b> – <b>T1102.003 Service Web : Communication à sens unique</b><br/><b>Description</b> : Utilisation de jetons de bot Telegram pour recevoir des commandes et exfiltrer des données."] class c2_web_service command_control c2_dynamic_res["<b>Technique</b> – <b>T1568 Résolution dynamique</b><br/><b>Description</b> : Utilisation de méthodes dynamiques pour communiquer avec l’infrastructure C2."] class c2_dynamic_res command_control %% Credential Access and Exfiltration Phase cred_files["<b>Technique</b> – <b>T1552.001 Informations d’identification non sécurisées : Informations d’identification dans les fichiers</b><br/><b>Description</b> : Analyse du système de fichiers local pour des fichiers JSON de portefeuilles Solana id.json, des clés SSH id_rsa, des identifiants AWS, et des fichiers .env."] class cred_files credential_access exfil_c2["<b>Technique</b> – <b>T1041 Exfiltration sur le canal C2</b><br/><b>Description</b> : Envoi de données sensibles volées via l’API Telegram."] class exfil_c2 exfiltration %% Connections attack_supply_chain –>|mène à| op_exec_trigger op_exec_trigger –>|nécessite| attack_user_exec_copy op_exec_trigger –>|nécessite| attack_user_exec_lib attack_user_exec_copy –>|déclenche| attack_event_trigger attack_user_exec_lib –>|déclenche| attack_event_trigger attack_event_trigger –>|télécharge_via| attack_drive_by attack_drive_by –>|installe| payload_deno payload_deno –>|établit| persist_active_setup payload_deno –>|établit| persist_windows_service persist_active_setup –>|communique_via| c2_web_service persist_windows_service –>|communique_via| c2_web_service c2_web_service –>|utilise| c2_dynamic_res payload_deno –>|effectue_un_acces_aux_identifiants| cred_files cred_files –>|donnée_envoyée_via| exfil_c2 exfil_c2 –>|utilise| c2_web_service "

Flux d’attaque

Exécution de simulation

Préalable : la vérification préliminaire de la télémétrie et des bases de référence doit avoir été réussie.

Raisonnement : 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. Des exemples abstraits ou non liés conduiront à un mauvais diagnostic.

  • Narratif de l’Attaque & Commandes : L’attaquant a obtenu un accès initial et a l’intention de maintenir une présence. Il décide d’utiliser une charge utile basée sur Deno. Pour masquer l’exécution du terminal, il utilise le --headless flag pour conhost.exe. Il exécute une commande qui modifie la clé de registre HKCUSoftwareMicrosoftWindowsCurrentVersionRun , ajoutant une valeur nommée DenoUpdater qui exécute conhost.exe --headless deno.exe [malicious_script]. Cela garantira que la charge utile s’exécute silencieusement en arrière-plan lors de la connexion utilisateur.

  • Script de Test de Régression :

    # Simulation de persistance basée sur Deno via la clé Run du registre
    $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    $Name = "DenoUpdater"
    $Value = "C:WindowsSystem32conhost.exe --headless C:UsersPublicdeno.exe malicious_payload.js"
    
    Write-Host "[*] Simulation du mécanisme de persistance..."
    New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType String -Force
    Write-Host "[+] Clé de registre créée. Vérifiez l'alerte dans le SIEM."
  • Commandes de Nettoyage :

    # Nettoyer la persistance simulée
    $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    $Name = "DenoUpdater"
    
    if (Get-ItemProperty -Path $RegistryPath -Name $Name -ErrorAction SilentlyContinue) {
        Remove-ItemProperty -Path $RegistryPath -Name $Name -Force
        Write-Host "[+] Nettoyage terminé. Clé de registre supprimée."
    } else {
        Write-Host "[-] Échec du nettoyage : Clé de registre non trouvée."
    }