I nostri esperti del Global Research and Analysis Team (GReAT) hanno scoperto due pacchetti dannosi nel Python Package Index (PyPI), un popolare repository di software di terze parti per Python. Stando alle descrizioni dei pacchetti, si trattava di librerie che permettevano di lavorare con i più diffusi LLM (large language models). In realtà, però, imitavano le funzionalità dichiarate utilizzando la versione demo di ChatGPT e il loro scopo principale era quello di installare il malware JarkaStealer.
I pacchetti sono rimasti disponibili per il download per più di un anno. A giudicare dalle statistiche del repository, durante questo periodo sono stati scaricati più di 1700 volte da utenti di oltre 30 paesi.
I pacchetti dannosi e come vengono utilizzati
I pacchetti dannosi sono stati caricati sul repository da un unico autore e, di fatto, differiscono tra loro solo per il nome e la descrizione. Il primo si chiamava “gptplus” e presumibilmente consentiva l’accesso all’API GPT-4 Turbo di OpenAI; il secondo si chiamava “claudeai-eng” e, secondo la descrizione, offriva anche l’accesso all’API Claude AI di Anthropic PBC.
Le descrizioni di entrambi i pacchetti includevano esempi di utilizzo che spiegavano come creare chat e inviare messaggi ai modelli linguistici. In realtà, il codice di questi pacchetti conteneva un meccanismo di interazione con il proxy demo ChatGPT per convincere la vittima che il pacchetto funzionava. Nel frattempo, il file __init__.py contenuto nei pacchetti decodificava i dati contenuti all’interno e scaricava il file JavaUpdater.jar dal repository GitHub. Se Java non veniva rilevato sul computer delle vittime, scaricava e installava anche il Java Runtime Environment (JRE) da Dropbox. Il file jar stesso conteneva il malware JarkaStealer, utilizzato per compromettere l’ambiente di sviluppo e per l’esfiltrazione non rilevata dei dati rubati.
Che cos’è il malware JarkaStealer e perché è pericoloso?
JarkaStealer è un malware, presumibilmente ideato da autori di lingua russa, che viene utilizzato principalmente per raccogliere dati riservati e inviarli ai creatori del malware. Ecco cosa può fare:
- rubare dati da vari browser;
- scattare screenshot;
- raccogliere informazioni di sistema;
- rubare i token di sessione da varie applicazioni (tra cui Telegram, Discord, Steam e persino un client di cheat di Minecraft);
- interrompere i processi del browser per recuperare i dati salvati.
Le informazioni raccolte vengono poi archiviate, inviate al server dell’ hacker e quindi eliminate dal computer della vittima.
Gli autori del malware lo distribuiscono tramite Telegram utilizzando il modello malware-as-a-service (MaaS). Ciononostante, abbiamo trovato il codice sorgente di JarkaStealer anche su GitHub, quindi è possibile che questa campagna non coinvolga gli autori originali del malware.
Come proteggersi
Abbiamo subito informato gli amministratori di PyPI in merito agli impianti dannosi presenti nei pacchetti gptplus e claudeai-eng, e al momento sono già stati rimossi dal repository. Tuttavia, non c’è alcuna garanzia che questo trucco (o uno simile) non venga messo in atto su qualche altra piattaforma. Continuiamo a monitorare le attività relative al malware JarkaStealer e a cercare altre minacce nei repository di software open source.
Per coloro che hanno scaricato e utilizzato uno dei pacchetti dannosi, la raccomandazione principale è di eliminarlo immediatamente. Il malware non è persistente, quindi si avvia solo quando il pacchetto viene utilizzato. Tuttavia, tutte le password e i token di sessione utilizzati sul computer della vittima potrebbero essere stati rubati da JarkaStealer e dovrebbero essere immediatamente modificati o ristabiliti.
Raccomandiamo inoltre agli sviluppatori di essere particolarmente attenti quando lavorano con pacchetti software open source e di ispezionarli accuratamente prima di integrarli nei loro progetti. Questo include un’analisi dettagliata delle connessioni e della rispettiva catena di fornitura dei prodotti software, soprattutto quando si tratta di un argomento così importante come l’integrazione delle tecnologie AI.
In questo caso, la data di creazione del profilo dell’autore su PyPI avrebbe potuto essere un segnale di allarme. Se si osserva attentamente lo screenshot qui sopra, si può notare che entrambi i pacchetti sono stati pubblicati lo stesso giorno, mentre l’account che li ha pubblicati è stato registrato solo un paio di giorni prima.
Per ridurre al minimo i rischi di lavorare con pacchetti di software open source di terze parti ed evitare un attacco alla supply chain, si consiglia di includere nei processi DevSecOps il Kaspersky Open Source Software Threats Data Feed,che è stato progettato specificamente per monitorare i componenti open source utilizzati al fine di rilevare le minacce che potrebbero essere nascoste al loro interno.