miasma pypi bun stealer

Miasma invade PyPI con 37 wheel malevoli e uno stealer basato su Bun

La campagna malware Miasma, collegata alla famiglia Shai-Hulud, espande le proprie operazioni dall’ecosistema npm al repository Python PyPI, compromettendo 19 pacchetti e distribuendo 37 wheel malevoli progettate per installare uno stealer multipiattaforma basato sul runtime Bun. L’operazione viene individuata dal Socket Research Team il 7 giugno 2026 pochi minuti dopo la pubblicazione degli artifact compromessi. L’analisi conferma una continuità tecnica con le precedenti campagne osservate su npm: abuso della supply chain open source, esecuzione automatica del codice prima dell’utilizzo normale del pacchetto e download di un payload JavaScript altamente offuscato dedicato al furto di credenziali. La novità consiste nell’adozione di un vettore specifico dell’ecosistema Python, ovvero gli startup hook del modulo site, che permettono l’esecuzione automatica di codice tramite file .pth durante l’avvio dell’interprete. Questo approccio consente agli attaccanti di eseguire il malware immediatamente dopo l’installazione del pacchetto, senza richiedere import espliciti o l’utilizzo diretto delle librerie compromesse. La campagna evidenzia ancora una volta come la fiducia riposta nei repository open source rappresenti uno dei punti più delicati dell’intera catena di distribuzione software.

Socket individua il cluster malevolo in pochi minuti

La scoperta della campagna avviene grazie ai sistemi di rilevamento automatico sviluppati da Socket, che identificano rapidamente un gruppo coordinato di release sospette pubblicate quasi simultaneamente. Gli analisti osservano che tutti gli artifact condividono una struttura molto simile e presentano gli stessi elementi operativi: un file JavaScript denominato _index.js e un loader inserito in un file *-setup.pth. La presenza di questi componenti all’interno di numerosi pacchetti pubblicati nello stesso intervallo temporale suggerisce immediatamente una compromissione coordinata. Il comportamento osservato richiama le tecniche già documentate nelle precedenti campagne attribuite a Shai-Hulud e Miasma nell’ecosistema npm. Dopo la segnalazione, numerosi artifact vengono rapidamente messi in quarantena da PyPI, mentre Socket continua il monitoraggio per identificare eventuali nuove pubblicazioni correlate. La rapidità dell’intervento limita l’esposizione complessiva ma non elimina il rischio per gli utenti che avevano già installato le versioni compromesse.

I pacchetti colpiti e il rischio per il settore scientifico

image 287
Miasma invade PyPI con 37 wheel malevoli e uno stealer basato su Bun 4

Uno degli aspetti più preoccupanti della campagna riguarda la natura dei pacchetti compromessi. Diversi progetti appartengono infatti all’ambito della bioinformatica, un settore che utilizza estensivamente Python per analisi genomiche, transcriptomica e ricerca biologica avanzata. Tra i pacchetti coinvolti figurano dynamo-release, utilizzato per RNA velocity e dinamica cellulare, spateo-release, impiegato nella transcriptomica spaziale, coolbox, piattaforma per la visualizzazione di dati multi-omici, e strumenti come ufish e napari-ufish dedicati all’analisi di immagini biologiche mediante deep learning. Queste librerie accumulano complessivamente centinaia di migliaia di download e sono spesso integrate in pipeline di ricerca, cluster accademici e ambienti condivisi. La compromissione di tali pacchetti amplia significativamente il potenziale impatto della campagna perché espone non solo sviluppatori individuali ma anche istituzioni scientifiche, laboratori universitari e infrastrutture di ricerca che gestiscono dati sensibili e risorse computazionali di valore.

L’abuso dei file .pth come meccanismo di esecuzione

Il vettore utilizzato dalla campagna sfrutta una caratteristica legittima dell’ambiente Python. Durante l’avvio dell’interprete, il modulo site analizza automaticamente i file .pth presenti nelle directory dei pacchetti installati. Sebbene questi file siano normalmente utilizzati per aggiungere percorsi alla ricerca dei moduli, Python esegue anche eventuali istruzioni import contenute al loro interno. Gli attaccanti sfruttano questa funzionalità inserendo una singola riga di codice che attiva il loader malevolo. Il vantaggio operativo è evidente: il malware non richiede che il pacchetto venga importato o utilizzato. È sufficiente che la libreria venga installata nel sistema affinché il codice venga eseguito automaticamente al successivo avvio di Python. Questo comportamento trasforma il processo di installazione stesso in un meccanismo di compromissione e rende particolarmente difficile per gli utenti accorgersi dell’attività malevola.

Il ruolo del loader e del file sentinel

Annuncio

Il codice contenuto nel file .pth svolge una funzione relativamente semplice ma estremamente efficace. Una volta eseguito, verifica la presenza di un file sentinel all’interno della directory temporanea del sistema. Questo elemento serve a evitare esecuzioni ripetute e a ridurre la probabilità che l’attività del malware venga notata. Se il sentinel non esiste, il loader procede alla ricerca del payload JavaScript _index.js all’interno del pacchetto compromesso. Successivamente controlla la disponibilità del runtime Bun e, qualora non sia presente, avvia automaticamente la procedura di download e installazione. L’intero processo avviene senza notifiche visibili e sfrutta esclusivamente funzionalità standard dell’ambiente Python. Dal punto di vista dell’utente, l’installazione della libreria sembra completarsi normalmente, mentre in background vengono preparati gli strumenti necessari per l’esecuzione dello stealer.

Perché gli attaccanti scelgono Bun

Uno degli elementi distintivi della famiglia Shai-Hulud e della nuova variante Miasma è l’utilizzo del runtime Bun. Tradizionalmente, malware di questo tipo si affidano a Node.js o a componenti scritti direttamente nel linguaggio dell’ecosistema bersaglio. In questo caso, invece, gli attaccanti scelgono di distribuire un runtime indipendente capace di eseguire JavaScript ad alte prestazioni su Linux, Windows e macOS. Il loader scarica automaticamente la versione appropriata di Bun in base all’architettura rilevata e la utilizza per eseguire il payload. Questa scelta offre numerosi vantaggi agli autori dell’attacco. Il malware non dipende dalla presenza di Node.js sul sistema e può operare in ambienti Python pur mantenendo una base di codice JavaScript comune alle campagne già osservate nell’ecosistema npm. Bun diventa quindi un ponte tra diversi repository software e permette agli operatori di riutilizzare lo stesso framework offensivo su piattaforme differenti.

Un payload fortemente offuscato

Il file _index.js impiegato nella campagna presenta un livello di offuscamento particolarmente elevato. Gli analisti di Socket identificano numerosi strati di protezione, tra cui wrapper basati su eval, codifiche a caratteri, rotazioni di stringhe, compressione gzip e blocchi cifrati con AES-GCM. Questa struttura rende difficile l’analisi automatica e rallenta le attività di reverse engineering. Attraverso tecniche di deoffuscazione statica, i ricercatori riescono comunque a ricostruire il comportamento reale del payload e a confermare la sua appartenenza alla famiglia Miasma. Le somiglianze con le campagne precedenti risultano evidenti sia nella struttura del codice sia nei meccanismi di raccolta e trasmissione dei dati rubati. L’elevato livello di offuscamento conferma inoltre che gli operatori investono risorse significative per ostacolare il lavoro degli analisti e prolungare il tempo necessario per individuare la minaccia.

Le credenziali nel mirino dello stealer

Una volta attivato, il malware avvia una ricerca sistematica di credenziali e segreti digitali. Il focus principale riguarda gli ambienti di sviluppo software e le pipeline di integrazione continua. Lo stealer cerca token di accesso per GitHub, PyPI, npm, RubyGems, JFrog, CircleCI e numerosi altri servizi utilizzati dagli sviluppatori. Vengono inoltre ricercate credenziali cloud associate a AWS, Google Cloud, Microsoft Azure, configurazioni Kubernetes, chiavi SSH, file .env, configurazioni Docker e informazioni archiviate in strumenti di gestione segreti. Anche gli ambienti utilizzati per l’intelligenza artificiale risultano bersagli prioritari, con particolare attenzione a configurazioni locali di Claude, MCP e altri framework utilizzati per orchestrare agenti AI. Questo approccio dimostra che l’obiettivo principale non è la compromissione del singolo sistema, ma la raccolta di credenziali che possano consentire accessi successivi a infrastrutture più ampie.

Il passaggio dal tema Zelda al tema Hades

Gli analisti osservano anche un cambiamento simbolico nella campagna. Le precedenti ondate attribuite a Miasma utilizzavano riferimenti all’universo di Zelda e alla dicitura “Miasma: The Spreading Blight”. La nuova operazione adotta invece una tematizzazione ispirata alla mitologia greca e all’oltretomba. I repository GitHub utilizzati per l’esfiltrazione dei dati presentano descrizioni come “Hades – The End for the Damned” e utilizzano nomi che richiamano personaggi e luoghi mitologici quali Styx, Charon, Cerberus, Thanatos, Persephone e Lethe. Sebbene il branding cambi, la logica operativa resta sostanzialmente identica. Questo suggerisce un’evoluzione dello stesso gruppo o della stessa infrastruttura malware piuttosto che la nascita di una nuova famiglia indipendente.

Una campagna che attraversa più ecosistemi open source

La presenza simultanea di pacchetti compromessi su npm e PyPI evidenzia una strategia multi-ecosistema sempre più frequente tra gli attaccanti. Secondo Socket, la campagna complessiva coinvolge almeno 448 artifact malevoli, di cui 411 distribuiti tramite npm e 37 tramite PyPI. Gli operatori sembrano muoversi rapidamente tra differenti repository software mantenendo invariata la logica dell’attacco. Questa capacità di adattamento aumenta notevolmente la superficie di rischio perché consente di colpire comunità di sviluppatori diverse utilizzando la stessa infrastruttura offensiva. La supply chain open source diventa così un vettore privilegiato per campagne che puntano a raccogliere credenziali di alto valore e a compromettere successivamente ambienti cloud, repository software e pipeline CI/CD.

Le contromisure per gli sviluppatori

Gli utenti che hanno installato uno dei pacchetti coinvolti devono considerare il sistema potenzialmente compromesso. La priorità è verificare la presenza dei file malevoli, individuare eventuali esecuzioni del runtime Bun e procedere alla rotazione immediata delle credenziali che potrebbero essere state esposte. Particolare attenzione va riservata ai token GitHub, alle chiavi cloud e alle credenziali utilizzate nelle pipeline di automazione. È inoltre consigliabile esaminare i log di accesso ai servizi interessati per individuare eventuali attività sospette. Sul piano organizzativo, l’incidente rafforza l’importanza di strumenti di controllo della supply chain software, firme dei pacchetti, scansione automatica delle dipendenze e processi di revisione delle release pubblicate dai maintainer.

La supply chain Python resta un bersaglio prioritario

L’operazione Miasma dimostra ancora una volta che i repository open source rappresentano un obiettivo estremamente attraente per gli attaccanti. La compromissione di un maintainer o di un processo di pubblicazione consente di distribuire codice malevolo attraverso canali considerati affidabili dagli utenti. Nel caso di PyPI, l’utilizzo degli startup hook di Python amplifica ulteriormente il rischio perché rende possibile l’esecuzione automatica del malware senza che il pacchetto venga effettivamente utilizzato. L’adozione di Bun come runtime indipendente mostra inoltre come gli attaccanti stiano sviluppando approcci sempre più flessibili e trasversali agli ecosistemi software. La combinazione di supply chain compromise, esecuzione automatica e furto di credenziali ad alto valore rende Miasma una delle campagne più significative osservate recentemente nel panorama open source.

Iscriviti alla Newsletter

Non perdere le analisi settimanali: Entra nella Matrice Digitale.

Matrice Digitale partecipa al Programma Affiliazione Amazon EU. In qualità di Affiliato Amazon, ricevo un guadagno dagli acquisti idonei. Questo non influenza i prezzi per te.

Torna in alto