Sommario
Gli attacchi informatici rivolti agli sviluppatori blockchain stanno diventando sempre più sofisticati. Un recente report di Socket Research Team ha rivelato la presenza di un pacchetto PyPI malevolo, chiamato set-utils, progettato per rubare chiavi private di Ethereum. Questo malware sfrutta metodi avanzati per infiltrarsi nei flussi di lavoro degli sviluppatori, esfiltrando dati sensibili senza destare sospetti.
Un malware nascosto tra le librerie Python
Il pacchetto set-utils, apparentemente innocuo e presentato come una libreria per la gestione degli insiemi in Python, è stato scoperto mentre mimava librerie molto più popolari, come python-utils (con oltre 712 milioni di download) e utils (con 23,5 milioni di download). Questo stratagemma ha portato numerosi sviluppatori a scaricare involontariamente il software malevolo, esponendo le proprie chiavi private Ethereum agli attaccanti.

Dal 29 gennaio 2025, il pacchetto è stato scaricato oltre 1.000 volte, mettendo a rischio sia sviluppatori blockchain che piattaforme di finanza decentralizzata (DeFi), exchange di criptovalute e utenti privati che gestiscono portafogli Ethereum tramite Python.
Meccanismo di attacco: come set-utils ruba le chiavi private
Il malware contenuto in set-utils sfrutta le funzioni standard di creazione di account Ethereum per intercettare le chiavi private e inviarle a un server di comando e controllo (C2). Per farlo, modifica in modo invisibile le funzioni from_key() e from_mnemonic(), che vengono comunemente utilizzate negli script Python per la gestione dei wallet Ethereum.
Il codice dannoso si basa su tre fasi principali:
- Generazione di una chiave pubblica RSA controllata dall’attaccante, utilizzata per criptare i dati prima di inviarli.
- Esfiltrazione delle chiavi private attraverso transazioni sulla blockchain, usando l’endpoint rpc-amoy.polygon.technology/ come canale di comunicazione segreto.
- Modifica delle funzioni di creazione degli account Ethereum, in modo da inviare le chiavi rubate non appena un nuovo wallet viene generato.
L’uso della blockchain Polygon come canale di esfiltrazione rende l’attacco ancora più difficile da rilevare. Anziché inviare i dati attraverso richieste HTTP standard, il malware li nasconde in transazioni Ethereum, evitando così i controlli di sicurezza tradizionali.
Rischi per gli utenti e conseguenze dell’attacco
L’infezione da set-utils può avere conseguenze gravi per gli sviluppatori e le aziende che operano nel settore blockchain. Chiunque abbia installato il pacchetto è potenzialmente compromesso, e le chiavi private esfiltrate potrebbero essere già state utilizzate per sottrarre fondi dagli account Ethereum colpiti.
Le principali implicazioni dell’attacco includono:
- Furto invisibile di chiavi private, reso possibile dall’integrazione diretta nel codice delle librerie Python.
- Compromissione permanente dei wallet Ethereum, poiché le chiavi private rubate restano valide anche se il malware viene rimosso.
- Perdita di fondi da exchange, piattaforme DeFi e wallet personali, con danni economici potenzialmente ingenti.
- Difficoltà di rilevamento, dovuta all’uso della blockchain come metodo di trasmissione dei dati rubati.
Le chiavi private sottratte possono essere utilizzate per accedere ai fondi delle vittime in qualsiasi momento, senza che gli utenti ne siano consapevoli fino al momento in cui i loro wallet vengono svuotati.
Come proteggersi dal malware su PyPI
Il pacchetto set-utils è stato segnalato a PyPI, che lo ha prontamente rimosso dal proprio repository. Tuttavia, il rischio di attacchi simili resta elevato, e gli sviluppatori devono adottare misure di sicurezza proattive per proteggere i loro progetti.
Per ridurre il rischio di infezioni da pacchetti PyPI malevoli, Socket Research Team suggerisce di:
- Monitorare in tempo reale le dipendenze di Python, utilizzando strumenti come la GitHub app di Socket per identificare anomalie nei pacchetti installati.
- Analizzare il codice delle librerie open source prima di integrarle nei propri progetti, evitando di scaricare pacchetti da repository non verificati.
- Utilizzare estensioni per browser e tool di scansione automatizzati, capaci di rilevare comportamenti sospetti nei pacchetti PyPI.
- Sostituire le chiavi private di qualsiasi wallet Ethereum creato dopo l’installazione di set-utils, per evitare il rischio che gli attaccanti possano ancora accedere ai fondi.
Questi strumenti permettono di ridurre il rischio di attacchi alla supply chain del software, una delle principali minacce per lo sviluppo di applicazioni sicure nel settore blockchain.