Solana FakeFix: 25 pacchetti npm e PyPI dannosi si spacciano per versioni stabili
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Una campagna di pacchetti dannosi sta prendendo di mira gli sviluppatori Solana attraverso librerie npm e PyPI con typosquatting promosse come correzioni di build stabile. Il malware abusa dell’esecuzione del ciclo di vita del pacchetto e degli hook al momento dell’importazione per rubare segreti del portafoglio, credenziali cloud e chiavi SSH da ambienti infetti. Alcuni esemplari si espandono oltre il furto agendo come veri e propri backdoor tramite comando e controllo basato su Telegram o distribuendo caricamenti focalizzati su Windows costruiti attorno a Deno.
Indagine
I ricercatori di JFrog Security hanno scoperto due operazioni separate ma correlate. La prima, monitorata come Solana FakeFix, usava pacchetti stile SDK contraffatti per raccogliere segreti sensibili da sviluppatori e sistemi di costruzione. La seconda usava pacchetti npm a tema CMS per caricare eseguibili Windows. La loro analisi ha mostrato che il codice dannoso veniva spesso aggiunto a librerie altrimenti funzionali, aiutando i pacchetti a sembrare legittimi mentre recuperavano silenziosamente payload di secondo stadio in modo dinamico tramite Deno.
Mitigazione
Le organizzazioni dovrebbero rimuovere tutti i pacchetti interessati dalle workstation degli sviluppatori, dalle pipeline CI/CD e dalle cache dei pacchetti interni. Qualsiasi credenziale potenzialmente esposta dovrebbe essere ruotata immediatamente, incluse chiavi del portafoglio Solana, chiavi SSH, credenziali AWS e token GitHub. I team di sicurezza dovrebbero anche controllare gli host per metodi di persistenza come chiavi di esecuzione del Registro, attività pianificate e modifiche ai profili shell.
Risposta
I difensori dovrebbero disinstallare i pacchetti dannosi identificati e rivedere i file di lock delle dipendenze per librerie non autorizzate o inaspettate. Tutti i segreti esposti dovrebbero essere ruotati immediatamente e qualsiasi criptovaluta archiviata in portafogli potenzialmente compromessi dovrebbe essere trasferita a nuovi indirizzi fidati. I runner CI e i sistemi degli sviluppatori dovrebbero quindi essere ricostruiti da immagini pulite per garantire che non rimangano backdoor nascoste o meccanismi di persistenza.
"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>Tecnica</b> – <b>T1195.001 Compromissione della Catena di Fornitura: <br/>Compromissione delle Dipendenze del Software e Strumenti di Sviluppo</b><br/><b>Descrizione</b>: Uso di typosquatting e spam su problemi GitHub per attirare sviluppatori a installare pacchetti npm e PyPI dannosi che impersonano legittime SDK di Solana.<br/><b>Obiettivi</b>: @solana-labs/web3.js e strumenti simili."] class attack_supply_chain technique attack_user_exec_copy["<b>Tecnica</b> – <b>T1204.004 Esecuzione Utente: Copia e Incolla Malevola</b><br/><b>Descrizione</b>: Gli sviluppatori eseguono comandi suggeriti dagli attaccanti tramite problemi GitHub o istruzioni dei pacchetti."] class attack_user_exec_copy technique attack_user_exec_lib["<b>Tecnica</b> – <b>T1204.005 Esecuzione Utente: Libreria Malintenzionata</b><br/><b>Descrizione</b>: Gli sviluppatori importano librerie malevoli nei loro progetti."] class attack_user_exec_lib technique op_exec_trigger(("AND")) class op_exec_trigger technique attack_event_trigger["<b>Tecnica</b> – <b>T1546.016 Esecuzione Attivata da Evento: Pacchetti Installer</b><br/><b>Descrizione</b>: Esecuzione di codice controllato dall’attaccante tramite script del ciclo di vita postinstall di npm o importazioni in __init__.py di PyPI."] class attack_event_trigger technique attack_drive_by["<b>Tecnica</b> – <b>T1189 Compromissione da Drive-by</b><br/><b>Descrizione</b>: Scaricamento di payload secondari come eseguibili Windows o loader basati su Deno."] class attack_drive_by technique %% Persistence Phase persist_active_setup["<b>Tecnica</b> – <b>T1547.014 Esecuzione Automatizzata all’Avvio o Accesso: Configurazione Attiva</b><br/><b>Descrizione</b>: Creazione di chiavi del Registro di Esecuzione per lanciare payload malevoli."] class persist_active_setup persistence persist_windows_service["<b>Tecnica</b> – <b>T1543.003 Creare o Modificare Processo di Sistema: Servizio Windows</b><br/><b>Descrizione</b>: Stabilire persistenza creando Servizi Windows."] class persist_windows_service persistence payload_deno["<b>Malware</b> – <b>Campagna CMS Basata su Deno</b><br/><b>Descrizione</b>: Payload JavaScript malevolo in esecuzione in modalità senza testa tramite conhost.exe."] class payload_deno technique %% Command and Control Phase c2_web_service["<b>Tecnica</b> – <b>T1102.003 Servizio Web: Comunicazione Unidirezionale</b><br/><b>Descrizione</b>: Uso di token bot Telegram per ricevere comandi e esfiltrare dati."] class c2_web_service command_control c2_dynamic_res["<b>Tecnica</b> – <b>T1568 Risoluzione Dinamica</b><br/><b>Descrizione</b>: Utilizzo di metodi dinamici per comunicare con l’infrastruttura C2."] class c2_dynamic_res command_control %% Credential Access and Exfiltration Phase cred_files["<b>Tecnica</b> – <b>T1552.001 Credenziali Non Sicure: Credenziali Nei File</b><br/><b>Descrizione</b>: Scansione del filesystem locale per file JSON del portafoglio Solana id.json, chiavi SSH id_rsa, credenziali AWS e file .env."] class cred_files credential_access exfil_c2["<b>Tecnica</b> – <b>T1041 Esfiltrazione Via Canale C2</b><br/><b>Descrizione</b>: Invio di dati sensibili rubati tramite l’API di Telegram."] class exfil_c2 exfiltration %% Connections attack_supply_chain –>|si traduce in| op_exec_trigger op_exec_trigger –>|richiede| attack_user_exec_copy op_exec_trigger –>|richiede| attack_user_exec_lib attack_user_exec_copy –>|attiva| attack_event_trigger attack_user_exec_lib –>|attiva| attack_event_trigger attack_event_trigger –>|scarica tramite| attack_drive_by attack_drive_by –>|installa| payload_deno payload_deno –>|stabilisce| persist_active_setup payload_deno –>|stabilisce| persist_windows_service persist_active_setup –>|comunica tramite| c2_web_service persist_windows_service –>|comunica tramite| c2_web_service c2_web_service –>|utilizza| c2_dynamic_res payload_deno –>|esegue accesso credenziali| cred_files cred_files –>|dati inviati tramite| exfil_c2 exfil_c2 –>|utilizza| c2_web_service "
Flusso di Attacco
Rilevamenti
Punti di Persistenza Possibili [ASEPs – Software/NTUSER Hive] (tramite evento registro)
Visualizza
Conhost LOLBAS (tramite cmdline)
Visualizza
Possibile Abuso di Telegram come Canale di Comando e Controllo (tramite dns_query)
Visualizza
Possibili Comunicazioni C2 su HTTP Direct IP con Porta Insolita (tramite proxy)
Visualizza
IOC (SourceIP) da rilevare: Solana FakeFix: 25 Pacchetti npm e PyPI Malevolenti Attirano Sviluppatori con False Build Stabili
Visualizza
IOC (DestinationIP) da rilevare: Solana FakeFix: 25 Pacchetti npm e PyPI Malevolenti Attirano Sviluppatori con False Build Stabili
Visualizza
Rilevamento di Attività di Pacchetto Malevolente Coinvolgente Payload Dinamico Remoto e C2 tramite Telegram [Connessione di Rete Windows]
Visualizza
Esecuzione di conhost.exe in Modalità Senza Testa per Esecuzione di Script Malevoli [Creazione di Processo Windows]
Visualizza
Rilevamento di Persistenza Chiave Registro Loader CMS Windows [Evento Registro Windows]
Visualizza
Rilevamento di Persistenza Hook nel Profilo PowerShell e Esecuzione Nascosta di PowerShell [Windows Powershell]
Visualizza
Esecuzione di Simulazione
Prerequisito: Il Controllo Preliminare di Telemetria e Baseline deve essere passato.
Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirano a generare l’esatta telemetria prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a una diagnosi errata.
-
Narrazione e Comandi dell’Attacco: L’attaccante ha ottenuto l’accesso iniziale e intende mantenere un appoggio. Decidono di usare un payload basato su Deno. Per nascondere l’esecuzione del terminale, usano il
--headlessflag perconhost.exe. Eseguono un comando che modifica la chiave di registroHKCUSoftwareMicrosoftWindowsCurrentVersionRunaggiungendo un valore denominatoDenoUpdaterche esegueconhost.exe --headless deno.exe [malicious_script]. Questo assicurerà che il payload venga eseguito silenziosamente in background al login dell’utente. -
Script di Test di Regressione:
# Simulazione di persistenza basata su Deno tramite chiave di Registro $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun" $Name = "DenoUpdater" $Value = "C:WindowsSystem32conhost.exe --headless C:UsersPublicdeno.exe malicious_payload.js" Write-Host "[*] Simulando meccanismo di persistenza..." New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType String -Force Write-Host "[+] Chiave di registro creata. Controlla SIEM per avviso." -
Comandi di Pulizia:
# Pulisci la persistenza simulata $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun" $Name = "DenoUpdater" if (Get-ItemProperty -Path $RegistryPath -Name $Name -ErrorAction SilentlyContinue) { Remove-ItemProperty -Path $RegistryPath -Name $Name -Force Write-Host "[+] Pulizia completata. Chiave di registro rimossa." } else { Write-Host "[-] Pulizia fallita: Chiave di registro non trovata." }