Recentemente, nel repository Python Package Index (PyPI) sono stati scoperti pacchetti malevoli che si spacciavano per strumenti di recupero e gestione di portafogli di criptovalute, ma che in realtà rubavano dati sensibili degli utenti. Questi pacchetti miravano a utenti di portafogli noti come Atomic, Trust Wallet, Metamask, Ronin, TronLink ed Exodus. Gli strumenti si presentavano come utility per estrarre frasi mnemoniche e decriptare dati di portafogli, offrendo funzionalità apparentemente utili per utenti impegnati nel recupero o nella gestione dei portafogli di criptovalute.
Tuttavia, nascondevano la capacità di sottrarre chiavi private, frasi mnemoniche e altre informazioni sensibili, come cronologie di transazioni o saldi. Prima di essere rimossi, i pacchetti avevano accumulato centinaia di download: atomicdecoderss (366 download), trondecoderss (240 download), phantomdecoderss (449 download), trustdecoderss (466 download), exodusdecoderss (422 download), walletdecoderss (232 download), ccl-localstoragerss (335 download), exodushcates (415 download), cipherbcryptors (450 download) e ccl_leveldbases (407 download).
I pacchetti erano stati deliberatamente nominati per attirare sviluppatori attivi nell'ecosistema delle criptovalute. Per aumentare la legittimità, le descrizioni dei pacchetti su PyPI includevano istruzioni di installazione, esempi di utilizzo e in un caso addirittura "best practices" per ambienti virtuali. Il malevolo non si fermava qui: i malintenzionati dietro la campagna erano riusciti a mostrare statistiche di download false, ingannando gli utenti facendogli credere che i pacchetti fossero popolari e affidabili.
Sei dei pacchetti PyPI identificati includevano una dipendenza chiamata cipherbcryptors per eseguire il codice malevolo, mentre altri si affidavano a un ulteriore pacchetto chiamato ccl_leveldbases per offuscare le loro funzionalità. Un aspetto notevole era che le funzionalità malevole venivano attivate solo quando venivano chiamate determinate funzioni, segnando una deviazione dal modello tipico in cui tale comportamento si attivava automaticamente all'installazione. I dati catturati venivano poi esfiltrati verso un server remoto.
Gli attaccanti non inserivano l'indirizzo del proprio server di comando e controllo nei pacchetti, ma utilizzavano risorse esterne per recuperare dinamicamente tali informazioni. Questa tecnica, chiamata dead drop resolver, offre agli attaccanti la flessibilità di aggiornare le informazioni del server senza dover rilasciare un aggiornamento ai pacchetti stessi. Inoltre, facilita il passaggio a un'infrastruttura diversa qualora i server venissero chiusi.
L'attacco sfrutta la fiducia nelle comunità open-source e l'apparente utilità degli strumenti di gestione dei portafogli, potenzialmente colpendo un'ampia gamma di utenti di criptovalute. La complessità dell'attacco, dalla confezione ingannevole alle capacità malevole dinamiche e all'uso di dipendenze malevole, sottolinea l'importanza di misure di sicurezza complete e di un monitoraggio continuo.