In questo articolo Indice dei contenuti 3 sezioni
Un attacco alla catena di distribuzione del software ha colpito LiteLLM, uno dei progetti open source più usati nel mondo dell’intelligenza artificiale, e ha trasformato un normale aggiornamento in un veicolo per un malware capace di sottrarre credenziali, segreti e variabili d’ambiente. Gli aggressori sono riusciti a compromettere il pacchetto pubblicato su PyPI e a diffondere immagini Docker manomesse, tutte legate alla versione 1.107.0. Il problema riguarda sistemi Windows, Linux e macOS, perché sono stati coinvolti tutti i pacchetti di installazione wheel di quella release.
Vale la pena ricordare cos’è LiteLLM. Si tratta di un SDK Python e di un gateway AI che permette alle applicazioni di dialogare con modelli di fornitori diversi attraverso un’unica API comune. I numeri spiegano bene la portata della vicenda: 61.800 stelle su GitHub, 92 milioni di download mensili su PyPI e un elenco di utilizzatori che comprende nomi come NVIDIA, Netflix, AT&T e Okta.
Cosa è successo e quali versioni sono coinvolte
Stando a quanto ricostruito dal progetto stesso, la pipeline di rilascio è stata compromessa il 21 ottobre 2026 e un malintenzionato ha caricato la versione 1.107.0 sia nel registro Docker sia su PyPI. Il manutentore ha spiegato che quella versione conteneva malware compilato in grado di rubare credenziali e di caricare strumenti per l’esecuzione di codice remoto. Chi utilizza la versione enterprise privata invece non è stato toccato.
Le finestre temporali sono piuttosto precise. Su PyPI tutti e sette i pacchetti wheel di litellm 1.107.0 sono rimasti disponibili dalle 11:39:51 alle 13:23 UTC. Su Docker Hub il tag v1.107.0, il tag latest e i due tag principali del ramo main hanno puntato a un’immagine compromessa dalle 11:46:56 fino alle 14:20 UTC. Su GHCR gli stessi tag hanno rimandato alle immagini infette, cioè quella standard, quella con database e quella non root, dalle 11:46:56 UTC fino a quando non sono state rese inaccessibili alle 13:51 UTC. Diverse aziende specializzate in sicurezza applicativa hanno individuato l’attacco entro sei minuti dalla pubblicazione e si sono messe subito ad analizzare il codice malevolo.
Come agisce il codice malevolo
L’aspetto più insidioso riguarda il metodo. Secondo i ricercatori l’aggressore non ha modificato il codice dell’applicazione ma soltanto il pacchetto di installazione, inserendo tre file (cook.pth, cook.py e sitecustomize.py) nella cartella delle librerie Python dell’ambiente. Durante il normale avvio Python elabora le righe eseguibili dei file .pth e poi prova a importare sitecustomize. In questo modo il payload partiva prima dell’applicazione ogni volta che Python veniva lanciato in quell’ambiente. Persino avviare Python o pip per controllare un’installazione sospetta finiva per attivare il malware.
L’elenco dei dati presi di mira è lungo. Si va dalle credenziali cloud e di deployment per AWS, Azure, Google Cloud, Kubernetes e Docker ai file di autenticazione degli strumenti di sviluppo AI, passando per le chiavi dei fornitori e le impostazioni dei modelli salvate in LiteLLM. Nel mirino c’erano anche i segreti degli sviluppatori legati a Git, GitHub, npm, PyPI e ai sistemi CI/CD, i file .env e le chiavi SSH, GPG e TLS. A questi si aggiungono i dati dei browser come login salvati, cookie, informazioni di compilazione automatica e pagamento e cronologia di navigazione, oltre alle variabili d’ambiente, alle cronologie di shell e applicazioni e alle informazioni di sistema e di rete.
I dati rubati venivano cifrati con una chiave AES a 256 bit in modalità CBC, a sua volta protetta da una chiave RSA a 4096 bit, e poi inviati all’indirizzo litellm[.]dev/healthcheck. Il file sitecustomize.py inoltre avviava un loader separato che ogni ora controllava un riferimento ospitato su GitHub e scaricava codice Python da un server esterno per eseguirlo sulla macchina.
Le contromisure consigliate
I pacchetti malevoli sono stati rimossi ma chi potrebbe essere stato colpito dovrebbe fermare i deployment interessati e ispezionare gli ambienti senza avviare l’interprete Python. I sistemi infetti vanno isolati e ricostruiti partendo da backup puliti, mentre tutti i segreti esposti devono essere cambiati immediatamente. Eliminare soltanto la cartella del pacchetto potrebbe non bastare, perché i file di avvio o un loader ancora attivo rischiano di restare al loro posto.
Al momento la release consigliata per il ripristino è la versione 1.106.2, l’ultima pulita prima dell’attacco. Non è la prima volta che il progetto finisce nel mirino. A marzo il gruppo TeamPCP aveva già pubblicato versioni malevole di LiteLLM su PyPI dopo aver violato Trivy, lo scanner di vulnerabilità di Aqua Security utilizzato nella pipeline CI/CD del progetto.
Fonte: TecnoAndroid


