La campagna ShadowRay 2.0 mostra come una singola vulnerabilità possa trasformare interi ecosistemi di calcolo distribuito in un’infrastruttura criminale globale. Nel primo periodo emergono tre elementi centrali: la possibilità di sfruttare la CVE-2023-48022 nel framework Ray per eseguire codice remoto senza autenticazione, l’evoluzione della botnet in una forma auto-replicante, capace di espandersi tra cluster AI, e il furto sistematico di risorse computazionali di alto valore, con impatti economici e operativi significativi su settori come educazione, biofarmaceutica e servizi cloud. La campagna, attribuita agli attori IronErn440, utilizza payload multi-stadio per prendere il controllo dei nodi, avvia attività di cryptomining per Monero e Zano, ruba credenziali e modelli AI, ed esegue attacchi DDoS. La falla, considerata una scelta di design da Anyscale, resta priva di patch, amplificando la superficie d’attacco. Più di 230.000 server Ray risultano esposti su internet, trasformando i cluster utilizzati da aziende globali in vettori per una botnet che sfrutta librerie e meccanismi legittimi del framework per propagarsi come un worm distribuito.
Cosa leggere
Vulnerabilità nel framework Ray e contesto della CVE-2023-48022

Il framework Ray nasce come runtime distribuito per scalare applicazioni Python, machine learning e carichi di data processing su cluster. La sua architettura supporta task stateless, actor stateful e strumenti per reinforcement learning, diventando parte integrante di pipeline AI in ambienti Kubernetes e cloud provider. La vulnerabilità CVE-2023-48022 consente però l’accesso non autenticato all’API dei job, permettendo a un attore remoto di caricare ed eseguire codice arbitrario su tutti i nodi del cluster.

Anyscale, maintainer originario, considera l’assenza di autenticazione una feature destinata ad ambienti fidati, mentre MITRE e NIST classificano la criticità come una vera e propria falla di sicurezza. Con il passaggio del progetto alla PyTorch Foundation nel 2024, l’assenza di una patch strutturale continua a rappresentare un vettore di rischio. Gli attaccanti identificano server vulnerabili tramite strumenti come interact.sh, evitando scansioni attive e sfruttando callback generati dai cluster. La porta 8265 del dashboard Ray, aperta di default, espone la superficie necessaria per comandare un intero ambiente distribuito.

Versioni recenti del framework restano vulnerabili se non configurate correttamente, mentre l’esposizione accidentale di Ray su internet moltiplica il rischio per migliaia di organizzazioni.
Funzionamento dell’attacco ShadowRay 2.0
Gli attaccanti avviano la compromissione tramite discovery passiva basata su OAST, con payload di test che generano callback da cluster vulnerabili. Una volta identificato l’obiettivo, l’API priva di autenticazione consente l’invio di job malevoli. Il payload multi-stadio comprende script Bash per reconnaissance, come la raccolta di informazioni tramite uname -a, e componenti Python che gestiscono l’esecuzione coordinata su nodi multipli. L’uso di NodeAffinitySchedulingStrategy forza la distribuzione del malware su ogni nodo attivo, trasformando i meccanismi di orchestrazione del framework in un veicolo di propagazione. Il malware rileva CPU e GPU, imposta limiti di utilizzo al 60 per cento per evitare rilevamenti e avvia l’esecuzione di XMRig per minare Monero. Per aumentare la redditività, esegue anche mining di Zano, rinomina i propri processi come dns-filter, installa servizi systemd per la persistenza e sfrutta cron job che scaricano aggiornamenti ogni quindici minuti da repository in continua rotazione su GitHub. Processi concorrenti vengono terminati per garantire esclusività. Il malware modifica inoltre file come /etc/hosts per bloccare pool rivali e crea reverse shell Python verso server C2 ospitati su AWS. Questa connessione consente agli attaccanti di esfiltrare credenziali MySQL, token cloud e modelli AI in formato .pkl. L’infrastruttura esegue anche attacchi DDoS tramite Sockstress, aprendo connessioni TCP raw per saturare le risorse di target selezionati.
Propagazione autonoma e dinamica worm-like della botnet
La caratteristica più critica della campagna ShadowRay 2.0 è la capacità del malware di propagarsi autonomamente tra i cluster Ray. Ogni cluster infetto inizia a scansionare altri dashboard Ray esposti, utilizzando payload di test tramite curl verso oast.fun per verificare la vulnerabilità. Una volta confermata, il cluster procede con l’attacco completo, trasformandosi in nodo di propagazione. L’uso delle funzionalità legittime del framework, come tasks distribuiti e actors persistenti, semplifica il movimento laterale e consente alla botnet di espandersi rapidamente. Gli attaccanti aggiornano il malware tramite repository GitHub, migrando tra account dopo i takedown e mantenendo continuità tramite cron job. Il codice mostra pattern tipici della generazione tramite modelli AI, con commenti superflui e docstring inutili. Script regionali come run-CN.sh adattano il comportamento della botnet per cluster situati in Cina, usando proxy locali per aggirare le censure. Cluster con 1000 nodi diventano hub di propagazione, accelerando la crescita della botnet in modo esponenziale. L’uso di AI nella generazione del codice introduce sofisticazione aggiuntiva nei meccanismi di evasione e gestione degli errori.
Impatti economici e operativi nei settori colpiti
Gli impatti della campagna si estendono su ogni continente, coinvolgendo startup, laboratori di ricerca, piattaforme educative e aziende tecnologiche. I cluster compromessi includono macchine con GPU A100, che generano costi compresi tra 2,75 e 3,67 euro all’ora per nodo, con valori annuali che raggiungono 3,67 milioni di euro per configurazioni di grandi dimensioni. Il mining al 60 per cento sfrutta risorse di calcolo senza interrompere completamente le operazioni, ma riduce drasticamente la produttività delle infrastrutture aziendali.

Il furto di modelli AI compromette la proprietà intellettuale, mentre le credenziali esfiltrate generano brecce successive e movimenti laterali all’interno delle reti compromesse. Settori come la biofarmaceutica perdono dati sensibili, mentre l’educazione e le piattaforme di criptovalute vedono risorse computazionali sottratte. I danni economici includono costi di remediation, risorse cloud consumate indebitamente, perdita di competitività e interruzioni operative. La botnet cresce sfruttando la disputa irrisolta sulla vulnerabilità, aggravando il rischio per la supply chain AI globale.

La mancanza di rilevamento precoce consente agli attaccanti di mantenere accessi persistenti, mentre organizzazioni come Netflix e Uber, che sfruttano Ray per scalare carichi pesanti, diventano potenziali vittime di compromissioni con impatti estesi.
Tecniche avanzate di propagazione e consolidamento del controllo
ShadowRay 2.0 integra tecniche di evasione e consolidamento del controllo che sfruttano a pieno la struttura del framework. La discovery passiva attraverso OAST riduce la visibilità delle scansioni, mentre l’uso di NodeAffinitySchedulingStrategy garantisce distribuzione uniforme del malware. I cluster infetti eseguono cicli continui di scansione e compromissione, con payload di test che precedono quelli completi. GitHub diventa pipeline di aggiornamento costante, mentre gli script Python gestiscono funzioni di mining, DDoS e propagazione. L’uso di processi rinominati come kworker/0:0 riduce la rilevazione da parte degli strumenti di monitoraggio. Persistenza e accessi backdoor vengono garantiti tramite authorized_keys e modifiche a .bashrc, mentre iptables blocca reinfezioni da concorrenti. L’integrazione con strumenti AI introduce comportamenti dinamici e una gestione avanzata delle eccezioni. Queste tecniche trasformano ShadowRay 2.0 in una minaccia particolarmente difficile da contenere, sfruttando le caratteristiche stesse per cui Ray è stato progettato.