Un recente caso di typosquatting scoperto da Sonatype evidenzia come un attaccante abbia pubblicato un pacchetto malevolo su PyPI, denominato “solana-py”, progettato per rubare le chiavi dei wallet crypto degli sviluppatori e degli utenti. Questo pacchetto sfrutta la somiglianza nel nome con il legittimo pacchetto “solana”, confondendo così gli sviluppatori che potrebbero installare la versione errata senza accorgersene.
Differenze tra “solana” e “solana-py”

Il legittimo progetto Solana su GitHub è conosciuto come “solana-py”, ma su PyPI esiste semplicemente come “solana”. L’attaccante ha sfruttato questa lieve discrepanza nei nomi per creare un pacchetto “solana-py” su PyPI, che, pur includendo codice legittimo dal progetto originale, incorpora anche un codice malevolo nascosto.

Il pacchetto “solana-py” è stato attentamente analizzato dal team di sicurezza di Sonatype, che ha identificato una serie di azioni sospette all’interno del codice, incluso un metodo per esfiltrare informazioni sensibili, come le chiavi del wallet crypto Solana, verso un dominio controllato dall’attaccante.
Esfiltrazione dei dati attraverso Hugging Face Spaces
Il codice malevolo nel pacchetto “solana-py” utilizza una libreria chiamata “solana.exceptions”, apparentemente innocua, per mascherare il vero intento dell’attaccante. Analizzando il file “exceptions.py”, i ricercatori hanno scoperto che il pacchetto effettua una chiamata di rete verso un dominio sottodominio di Hugging Face Spaces, un’API utilizzata per raccogliere i dati esfiltrati.

Questa tecnica, che sfrutta una piattaforma legittima come Hugging Face, dimostra l’ingegnosità degli attaccanti nel nascondere le loro attività e complicare il rilevamento da parte dei sistemi di sicurezza tradizionali.
Implicazioni e misure di sicurezza
Se un sviluppatore installa per errore il pacchetto “solana-py” invece del legittimo “solana”, introduce un crypto stealer nella sua applicazione. Questo non solo mette a rischio le sue chiavi private, ma anche quelle di tutti gli utenti che utilizzano l’applicazione compromessa.
Il caso “solana-py” sottolinea l’importanza di implementare misure di sicurezza robuste per proteggere la catena di fornitura del software. L’incidente legato a “solana-py” evidenzia la crescente sofisticazione degli attacchi di typosquatting e la necessità per gli sviluppatori di essere estremamente vigili quando scaricano pacchetti da repository pubblici come PyPI perchè è possibile attaccare i wallet dove sono custoditi soldi. La sicurezza deve essere una priorità, come ricorda Sonatype autore della scoperta, in ogni fase del ciclo di sviluppo del software per evitare l’introduzione di dipendenze malevole.
Cos’è PyPI?
PyPI, acronimo di Python Package Index, è il repository ufficiale dei pacchetti software per il linguaggio di programmazione Python. PyPI permette agli sviluppatori di cercare, scaricare e installare pacchetti software (librerie, framework, strumenti, ecc.) utilizzando il comando pip
, che è il gestore di pacchetti standard per Python.
Funzioni principali di PyPI:
- Hosting di Pacchetti: PyPI ospita migliaia di pacchetti Python che gli sviluppatori possono utilizzare nei loro progetti. Questi pacchetti possono essere facilmente installati e gestiti attraverso il comando
pip install
. - Versionamento e Gestione delle Dipendenze: PyPI gestisce diverse versioni dei pacchetti, consentendo agli sviluppatori di specificare quali versioni di un pacchetto devono essere utilizzate. Inoltre, PyPI gestisce le dipendenze tra pacchetti, assicurando che tutti i componenti necessari siano installati correttamente.
- Condivisione e Distribuzione: Gli sviluppatori possono caricare i loro pacchetti su PyPI, rendendoli disponibili alla comunità Python globale. Questo è particolarmente utile per condividere librerie o strumenti open-source.
- Sicurezza: Sebbene PyPI sia una risorsa fondamentale per lo sviluppo in Python, è importante essere consapevoli dei rischi legati alla sicurezza, come i casi di typosquatting, in cui pacchetti con nomi simili a quelli legittimi vengono caricati per scopi malevoli.
In sintesi, PyPI è un componente essenziale dell’ecosistema Python, facilitando la condivisione e la gestione dei pacchetti software tra gli sviluppatori.