Negli ultimi tempi la sicurezza della supply chain del software è diventata un tema sempre più centrale, in particolare per quanto riguarda i pacchetti Python distribuiti tramite PyPI. Ricercatori di cybersecurity hanno individuato un codice vulnerabile in diversi pacchetti legacy Python che potrebbe esporre sviluppatori e aziende a rischi concreti di attacchi di domain takeover, compromettendo l’integrità delle catene di distribuzione del software.
Origine della vulnerabilità
Il problema nasce da vecchi script di bootstrap utilizzati in passato da un popolare tool di automazione per build e deployment chiamato zc.buildout. Questi script automatizzano il download e l’installazione delle librerie necessarie e, durante l’esecuzione, scaricano un ulteriore script d’installazione dal dominio python-distribute.org. Questo dominio, ormai obsoleto e in vendita dal 2014, è stato lasciato incustodito e potrebbe essere facilmente acquisito da un attaccante per servire codice malevolo.
Pacchetti coinvolti e rischi
Tra i pacchetti PyPI che includono questo script vulnerabile vi sono tornado, pypiserver, slapos.core, roman, xlutils e testfixtures. La questione principale è che molti di questi pacchetti continuano a distribuire il vecchio file bootstrap.py che tenta di installare Distribute, un vecchio fork di Setuptools ormai non più mantenuto e i cui contenuti sono stati reintegrati nel progetto principale già nel 2013. Nonostante Distribute sia obsoleto, la presenza dello script di bootstrap che fa ancora riferimento a questo dominio rappresenta una minaccia latente: se un utente esegue accidentalmente lo script, potrebbe scaricare ed eseguire codice arbitrario controllato da un cyber criminale.
Stato attuale della mitigazione
Sebbene alcune librerie abbiano iniziato a rimuovere questo script vulnerabile, slapos.core e alcune versioni di sviluppo di Tornado lo includono ancora. È importante sottolineare che lo script non viene eseguito automaticamente durante l’installazione del pacchetto e che è scritto in Python 2, quindi non funziona con Python 3 senza modifiche. Tuttavia, la sola presenza del file amplia la superficie di attacco, poiché uno sviluppatore potrebbe essere indotto erroneamente a eseguire il codice pericoloso.
Precedenti e pattern di attacco
Non si tratta di scenari ipotetici: casi di domain takeover sono già avvenuti, come quello che nel 2023 ha colpito il pacchetto npm fsevents. Il pattern di scaricare ed eseguire payload da domini hardcoded è tipico dei malware downloader e dimostra come la mancata dismissione formale di componenti obsoleti lasci porte aperte a pericolosi attacchi supply chain.
Altri recenti episodi PyPI
A peggiorare il quadro, la stessa piattaforma PyPI è stata recentemente bersagliata da pacchetti dannosi, come spellcheckers, che conteneva codice in grado di scaricare ulteriori payload e installare RAT per il controllo remoto delle macchine infette. Questi episodi ribadiscono l’urgenza di un’attenta revisione dei pacchetti legacy e la necessità di rimuovere codice non più sicuro dalla filiera di sviluppo.

