{"id":29313,"date":"2024-11-22T16:21:57","date_gmt":"2024-11-22T14:21:57","guid":{"rendered":"https:\/\/www.kaspersky.it\/blog\/?p=29313"},"modified":"2024-11-22T16:21:57","modified_gmt":"2024-11-22T14:21:57","slug":"jarkastealer-in-pypi-packages","status":"publish","type":"post","link":"https:\/\/www.kaspersky.it\/blog\/jarkastealer-in-pypi-packages\/29313\/","title":{"rendered":"JarkaStealer nel repository PyPI"},"content":{"rendered":"<p>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\u00f9 diffusi LLM (large language models). In realt\u00e0, per\u00f2, imitavano le funzionalit\u00e0 dichiarate utilizzando la versione demo di ChatGPT e il loro scopo principale era quello di installare il malware JarkaStealer.<\/p>\n<p>I pacchetti sono rimasti disponibili per il download per pi\u00f9 di un anno. A giudicare dalle statistiche del repository, durante questo periodo sono stati scaricati pi\u00f9 di 1700 volte da utenti di oltre 30 paesi.<\/p>\n<h2>I pacchetti dannosi e come vengono utilizzati<\/h2>\n<p>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 \u201cgptplus\u201d e presumibilmente consentiva l\u2019accesso all\u2019API GPT-4 Turbo di OpenAI; il secondo si chiamava \u201cclaudeai-eng\u201d e, secondo la descrizione, offriva anche l\u2019accesso all\u2019API Claude AI di Anthropic PBC.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-29316\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/89\/2024\/11\/22140936\/JarkaStealer-in-pypi-packages-01.jpg\" alt=\"\" width=\"831\" height=\"363\"><\/p>\n<p>Le descrizioni di entrambi i pacchetti includevano esempi di utilizzo che spiegavano come creare chat e inviare messaggi ai modelli linguistici. In realt\u00e0, 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 <em>file __init__.py<\/em> contenuto nei pacchetti decodificava i dati contenuti all\u2019interno 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\u2019ambiente di sviluppo e per l\u2019esfiltrazione non rilevata dei dati rubati.<\/p>\n<h2>Che cos\u2019\u00e8 il malware JarkaStealer e perch\u00e9 \u00e8 pericoloso?<\/h2>\n<p>JarkaStealer \u00e8 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\u00f2 fare:<\/p>\n<ul>\n<li>rubare dati da vari browser;<\/li>\n<li>scattare screenshot;<\/li>\n<li>raccogliere informazioni di sistema;<\/li>\n<li>rubare i token di sessione da varie applicazioni (tra cui Telegram, Discord, Steam e persino un client di cheat di Minecraft);<\/li>\n<li>interrompere i processi del browser per recuperare i dati salvati.<\/li>\n<\/ul>\n<p>Le informazioni raccolte vengono poi archiviate, inviate al server dell\u2019 hacker e quindi eliminate dal computer della vittima.<\/p>\n<p>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 \u00e8 possibile che questa campagna non coinvolga gli autori originali del malware.<\/p>\n<h2>Come proteggersi<\/h2>\n<p>Abbiamo subito informato gli amministratori di PyPI in merito agli impianti dannosi presenti nei pacchetti gptplus e claudeai-eng, e al momento sono gi\u00e0 stati rimossi dal repository. Tuttavia, non c\u2019\u00e8 alcuna garanzia che questo trucco (o uno simile) non venga messo in atto su qualche altra piattaforma. Continuiamo a monitorare le attivit\u00e0 relative al malware JarkaStealer e a cercare altre minacce nei repository di software open source.<\/p>\n<p>Per coloro che hanno scaricato e utilizzato uno dei pacchetti dannosi, la raccomandazione principale \u00e8 di eliminarlo immediatamente. Il malware non \u00e8 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.<\/p>\n<p>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\u2019analisi dettagliata delle connessioni e della rispettiva catena di fornitura dei prodotti software, soprattutto quando si tratta di un argomento cos\u00ec importante come l\u2019integrazione delle tecnologie AI.<\/p>\n<p>In questo caso, la data di creazione del profilo dell\u2019autore su PyPI avrebbe potuto essere un segnale di allarme. Se si osserva attentamente lo screenshot qui sopra, si pu\u00f2 notare che entrambi i pacchetti sono stati pubblicati lo stesso giorno, mentre l\u2019account che li ha pubblicati \u00e8 stato registrato solo un paio di giorni prima.<\/p>\n<p>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 <a href=\"https:\/\/www.kaspersky.com\/open-source-feed?icid=it_kdailyplacehold_acq_ona_smm__onl_b2b_blo_wpplaceholder________5b01efee969ef9e1\" target=\"_blank\" rel=\"noopener nofollow\">Kaspersky Open Source Software Threats Data Feed<\/a>,che \u00e8 stato progettato specificamente per monitorare i componenti open source utilizzati al fine di rilevare le minacce che potrebbero essere nascoste al loro interno.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nel repository Python Package Index sono stati trovati pacchetti dannosi per l&#8217;integrazione dell&#8217;IA contenenti un malware infostealer.<\/p>\n","protected":false},"author":312,"featured_media":29315,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2364,2956],"tags":[1516,682,2620,3856,3003,3076],"class_list":{"0":"post-29313","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-smb","9":"tag-ai","10":"tag-great","11":"tag-ia","12":"tag-info-stealer","13":"tag-open-source","14":"tag-supply-chain"},"hreflang":[{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/jarkastealer-in-pypi-packages\/29313\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/jarkastealer-in-pypi-packages\/28313\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/jarkastealer-in-pypi-packages\/23566\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/jarkastealer-in-pypi-packages\/28444\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/jarkastealer-in-pypi-packages\/27817\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/jarkastealer-in-pypi-packages\/30561\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/jarkastealer-in-pypi-packages\/38624\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/jarkastealer-in-pypi-packages\/52640\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/jarkastealer-in-pypi-packages\/22388\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/jarkastealer-in-pypi-packages\/23136\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/jarkastealer-in-pypi-packages\/28566\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/jarkastealer-in-pypi-packages\/34398\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/jarkastealer-in-pypi-packages\/34023\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.it\/blog\/tag\/info-stealer\/","name":"info stealer"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/29313","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/users\/312"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/comments?post=29313"}],"version-history":[{"count":5,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/29313\/revisions"}],"predecessor-version":[{"id":29321,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/29313\/revisions\/29321"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/media\/29315"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/media?parent=29313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/categories?post=29313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/tags?post=29313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}