Solana FakeFix: 25 Bösartige npm- und PyPI-Pakete geben sich als stabile Versionen aus
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Eine bösartige Paketkampagne zielt auf Solana-Entwickler durch typosquattete npm- und PyPI-Bibliotheken, die als stabile Build-Fixes beworben werden. Die Malware missbraucht Paketlebenszyklus-Ausführungen und Importzeit-Hooks, um Wallet-Geheimnisse, Cloud-Anmeldedaten und SSH-Schlüssel aus infizierten Umgebungen zu stehlen. Einige Proben gehen über den Diebstahl hinaus und agieren als vollständige Hintertüren durch Telegram-basierte Kommando-und-Kontrolle oder durch den Einsatz von Windows-fokussierten Loadern, die um Deno herum aufgebaut sind.
Untersuchung
Sicherheitsforscher von JFrog entdeckten zwei separate, aber verwandte Operationen. Die erste, verfolgt als Solana FakeFix, nutzte gefälschte Pakete im SDK-Stil, um sensible Geheimnisse von Entwicklern und Build-Systemen zu sammeln. Die zweite verwendete CMS-themenbezogene npm-Pakete, um Windows-Programme zu laden. Ihre Analyse zeigte, dass der bösartige Code oft an sonst funktional aussehende Bibliotheken angefügt wurde, was den Paketen half, legitim zu erscheinen und gleichzeitig leise zweite Stufe-Nutzlasten dynamisch durch Deno abzurufen.
Minderung
Organisationen sollten alle betroffenen Pakete von Entwicklerarbeitsplätzen, CI/CD-Pipelines und internen Paket-Caches entfernen. Jegliche potenziell exponierten Anmeldedaten sollten sofort rotiert werden, einschließlich Solana Wallet-Schlüssel, SSH-Schlüssel, AWS-Anmeldedaten und GitHub-Token. Sicherheitsteams sollten auch Hosts auf Persistenzmethoden wie Registry Run Keys, geplante Aufgaben und Shell-Profilmodifikationen überprüfen.
Reaktion
Verteidiger sollten die identifizierten bösartigen Pakete deinstallieren und Abhängigkeits-Log-Dateien auf unautorisierte oder unerwartete Bibliotheken überprüfen. Alle exponierten Geheimnisse sollten sofort rotiert werden, und jegliche Kryptowährung, die in potenziell kompromittierten Wallets gespeichert ist, sollte auf neue vertrauenswürdige Adressen übertragen werden. CI-Runner und Entwickler-Systeme sollten dann aus sauberen Images neu erstellt werden, um sicherzustellen, dass keine versteckten Hintertüren oder Persistenzmechanismen verbleiben.
"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>Technik</b> – <b>T1195.001 Lieferketten-Kompromittierung: <br/>Kompromittierung von Software-Abhängigkeiten und Entwicklungstools</b><br/><b>Beschreibung</b>: Verwendung von Typosquatting und GitHub-Issue-Spam, um Entwickler dazu zu verleiten, bösartige npm- und PyPI-Pakete zu installieren, die legitime Solana SDKs vortäuschen.<br/><b>Ziele</b>: @solana-labs/web3.js und ähnliche Werkzeuge."] class attack_supply_chain technique attack_user_exec_copy["<b>Technik</b> – <b>T1204.004 Benutzer-Ausführung: Bösartige Kopie und Einfügen</b><br/><b>Beschreibung</b>: Entwickler führen von Angreifern vorgeschlagene Befehle über GitHub-Issues oder Paketanweisungen aus."] class attack_user_exec_copy technique attack_user_exec_lib["<b>Technik</b> – <b>T1204.005 Benutzer-Ausführung: Bösartige Bibliothek</b><br/><b>Beschreibung</b>: Entwickler importieren bösartige Bibliotheken in ihre Projekte."] class attack_user_exec_lib technique op_exec_trigger(("AND")) class op_exec_trigger technique attack_event_trigger["<b>Technik</b> – <b>T1546.016 Ereignis-gesteuerte Ausführung: Installationspakete</b><br/><b>Beschreibung</b>: Ausführung von angriffsgekodiertem Code über npm-postinstall-Lebenszyklus-Skripte oder PyPI __init__.py-Importe."] class attack_event_trigger technique attack_drive_by["<b>Technik</b> – <b>T1189 Drive-by-Kompromittierung</b><br/><b>Beschreibung</b>: Herunterladen sekundärer Nutzlasten wie Windows-Programme oder Deno-basierte Loader."] class attack_drive_by technique %% Persistence Phase persist_active_setup["<b>Technik</b> – <b>T1547.014 Boot- oder Anmelde-Autostart-Aktivierung: Aktives Setup</b><br/><b>Beschreibung</b>: Erstellung von Registry Run Keys, um bösartige Nutzlasten zu starten."] class persist_active_setup persistence persist_windows_service["<b>Technik</b> – <b>T1543.003 Erstellen oder Ändern des Systemprozesses: Windows-Dienst</b><br/><b>Beschreibung</b>: Etablierung von Persistenz durch Erstellen von Windows-Diensten."] class persist_windows_service persistence payload_deno["<b>Malware</b> – <b>Deno-basierte CMS-Kampagne</b><br/><b>Beschreibung</b>: Bösartige JavaScript-Nutzlast, die im Headless-Modus über conhost.exe läuft."] class payload_deno technique %% Command and Control Phase c2_web_service["<b>Technik</b> – <b>T1102.003 Webdienst: Einweg-Kommunikation</b><br/><b>Beschreibung</b>: Verwendung von Telegram-Bot-Tokens, um Befehle zu erhalten und Daten zu exfiltrieren."] class c2_web_service command_control c2_dynamic_res["<b>Technik</b> – <b>T1568 Dynamische Auflösung</b><br/><b>Beschreibung</b>: Nutzung dynamischer Methoden zur Kommunikation mit der C2-Infrastruktur."] class c2_dynamic_res command_control %% Credential Access and Exfiltration Phase cred_files["<b>Technik</b> – <b>T1552.001 Ungesicherte Anmeldeinformationen: Anmeldeinformationen in Dateien</b><br/><b>Beschreibung</b>: Scannen des lokalen Dateisystems nach Solana-Wallet-JSON-Dateien id.json, SSH-Schlüsseln id_rsa, AWS-Anmeldedaten und .env-Dateien."] class cred_files credential_access exfil_c2["<b>Technik</b> – <b>T1041 Exfiltration über C2-Kanal</b><br/><b>Beschreibung</b>: Versenden gestohlener sensibler Daten über die Telegram-API."] class exfil_c2 exfiltration %% Verbindungen attack_supply_chain –>|führt zu| op_exec_trigger op_exec_trigger –>|erfordert| attack_user_exec_copy op_exec_trigger –>|erfordert| attack_user_exec_lib attack_user_exec_copy –>|löst aus| attack_event_trigger attack_user_exec_lib –>|löst aus| attack_event_trigger attack_event_trigger –>|lädt herunter über| attack_drive_by attack_drive_by –>|installiert| payload_deno payload_deno –>|etabliert| persist_active_setup payload_deno –>|etabliert| persist_windows_service persist_active_setup –>|kommuniziert über| c2_web_service persist_windows_service –>|kommuniziert über| c2_web_service c2_web_service –>|verwendet| c2_dynamic_res payload_deno –>|führt Anmeldeinformationszugriff durch| cred_files cred_files –>|Daten versandt über| exfil_c2 exfil_c2 –>|verwendet| c2_web_service "
Angriffsfluss
Erkennungen
Mögliche Persistenzpunkte [ASEPs – Software/NTUSER-Hive] (via registry_event)
Ansehen
LOLBAS Conhost (via cmdline)
Ansehen
Möglicher Telegram-Missbrauch als Kommando-und-Kontroll-Kanal (via dns_query)
Ansehen
Mögliche C2-Kommunikation über HTTP zu direkten IPs mit ungewöhnlichem Port (via proxy)
Ansehen
IOCs (SourceIP) zur Erkennung: Solana FakeFix: 25 bösartige npm- und PyPI-Pakete locken Entwickler mit gefälschten stabilen Builds
Ansehen
IOCs (DestinationIP) zur Erkennung: Solana FakeFix: 25 bösartige npm- und PyPI-Pakete locken Entwickler mit gefälschten stabilen Builds
Ansehen
Erkennung bösartiger Paketaktivitäten mit Remote-Dynamik-Payload und Telegram-C2 [Windows-Netzwerkverbindung]
Ansehen
Ausführung von conhost.exe im Headless-Modus zur Ausführung bösartiger Skripte [Windows-Prozesserstellung]
Ansehen
Erkennung von CMS-Windows-Loader-Registry-Run-Key-Persistenz [Windows-Registry-Ereignis]
Ansehen
Erkennung von PowerShell-Profil-Hook-Persistenz und versteckter PowerShell-Ausführung [Windows PowerShell]
Ansehen
Simulation Ausführung
Voraussetzung: Der Telemetrie- und Basislinientest muss bestanden werden.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Angreifer-Technik (TTP), die entworfen wurde, um die Erkennungsregel auszulösen. Die Befehle und Narrative MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.
-
Angriff-Narrativ & Befehle: Der Angreifer hat sich ersten Zugriff verschafft und beabsichtigt, Fuß zu fassen. Sie entscheiden sich für die Verwendung einer Deno-basierten Nutzlast. Um die Ausführung des Terminals zu verbergen, verwenden sie den
--headlessSchalter fürconhost.exe. Sie führen einen Befehl aus, der denHKCUSoftwareMicrosoftWindowsCurrentVersionRunRegistry-Schlüssel modifiziert und einen Wert namensDenoUpdaterhinzufügt, derconhost.exe --headless deno.exe [malicious_script]ausführt. Dies stellt sicher, dass die Nutzlast beim Benutzerlogin leise im Hintergrund läuft. -
Regressionstests-Skript:
# Simulation der Deno-basierten Persistenz über Registry Run Key $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun" $Name = "DenoUpdater" $Value = "C:WindowsSystem32conhost.exe --headless C:UsersPublicdeno.exe malicious_payload.js" Write-Host "[*] Simulation des Persistenzmechanismus..." New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType String -Force Write-Host "[+] Registry-Schlüssel erstellt. Überprüfen Sie SIEM auf Alarm." -
Bereinigungsbefehle:
# Bereinigung der simulierten Persistenz $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun" $Name = "DenoUpdater" if (Get-ItemProperty -Path $RegistryPath -Name $Name -ErrorAction SilentlyContinue) { Remove-ItemProperty -Path $RegistryPath -Name $Name -Force Write-Host "[+] Bereinigung abgeschlossen. Registry-Schlüssel entfernt." } else { Write-Host "[-] Bereinigung fehlgeschlagen: Registry-Schlüssel nicht gefunden." }