Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Iscriviti al webinar gratuito del 26 Maggio per diventare SOC Specialist! Scopri di più
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.
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.
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.
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.
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.
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.