Pipeline di release di LiteLLM dirottata di nuovo: un infostealer distribuito come v1.107.0 su PyPI e Docker Hub
Nella mattinata del 21 ottobre 2026, una release dannosa di LiteLLM è approdata su PyPI e nelle immagini Docker ufficiali del progetto. La versione 1.107.0 trasportava un ruba-credenziali e un loader di codice remoto al posto del codice scritto dai manutentori. Secondo l'aggiornamento di sicurezza dello stesso LiteLLM, a essere compromessa è stata la pipeline di release, usando credenziali GitHub trapelate dagli account degli sviluppatori del progetto. Le wheel dannose sono rimaste su PyPI meno di due ore, e i tag Docker contaminati sono sopravvissuti per tutto il pomeriggio. In un ecosistema di build automatizzate e dipendenze bloccate, è stato tempo più che sufficiente per contare.
Un tag pulito, una build avvelenata
La disclosure si legge come una lista di quanto sia fragile la fiducia nei pacchetti. LiteLLM riferisce che l'attaccante ha ottenuto token OAuth di GitHub CLI da tre account di sviluppatori, apparentemente catturati nei log di un deployment interno di LiteLLM esposto a Internet; uno degli account apparteneva a un proprietario di organizzazione GitHub. Con quelle credenziali la protezione dei branch è stata aggirata, una modifica al workflow è stata forciata con push, e la pipeline puntata a un repository sosia: Berri-AI/litellm, a un trattino dal vero BerriAI/litellm. Il tag git ufficiale della v1.107.0 è rimasto pulito; gli artefatti dannosi sono stati compilati dal repository impostore."Questa versione conteneva malware compilato che ruba credenziali e carica strumenti per l'esecuzione remota di codice." — aggiornamento di sicurezza di LiteLLM, 21 ottobre 2026Il rilevamento, almeno, è stato rapido. Come riporta BleepingComputer, società di sicurezza tra cui Socket ed Endor Labs hanno segnalato la release in circa sei minuti, e PyPI aveva rimosso le wheel alle 13:23 UTC, con Docker Hub ripulito nel pomeriggio. LiteLLM dichiara che i clienti del suo registro aziendale privato non sono stati toccati. Sei minuti contano ancora quando il pacchetto registra circa 92 milioni di download al mese e aziende come NVIDIA, Netflix e Okta figurano tra i suoi utenti, secondo BleepingComputer.
Ciò che lo stealer va a cercare
La meccanica del payload spiega il tono netto delle raccomandazioni. Le wheel depositavano tre file — cook.pth, cook.py e sitecustomize.py — nella directory site-packages di Python. Python esegue quel tipo di file a ogni avvio dell'interprete, quindi qualsiasi processo Python sulla macchina eseguiva il malware anche senza mai importare LiteLLM. L'analisi tecnica di Datadog Security Labs aggiunge che la disinstallazione del pacchetto litellm non rimuove i file: vanno cancellati a mano. L'analisi dell'incidente di Kodem documenta ciò che lo stealer era costruito per raccogliere:- Credenziali cloud e di infrastruttura: chiavi AWS, Azure e GCP compresi token di metadati d'istanza, più segreti Kubernetes, Docker e Terraform
- Materiale specifico per l'IA: chiavi API di provider LLM, credenziali conservate nel database del proxy LiteLLM e file di sessione di strumenti di coding con IA
- Token di sviluppatori e di registry: credenziali Git, token GitHub, npm e PyPI, chiavi SSH, GPG e TLS
- Segreti locali: file .env, variabili d'ambiente, cronologie di shell e di database
- Dati del browser: password salvate, cookie e voci di riempimento automatico
Secondo incidente di pipeline dell'anno
È la seconda release compromessa di LiteLLM nel 2026. A marzo, un attore tracciato come TeamPCP ha inserito un backdoor nelle versioni 1.82.7 e 1.82.8 dopo aver compromesso uno scanner Trivy dentro la pipeline CI/CD del progetto e rubato un token PyPI. Datadog collega le due campagne solo per bersaglio: nessun legame tra gli attori è stabilito. Il pattern è la parte scomoda — un gateway al centro di migliaia di stack di IA, che custodisce chiavi di provider e credenziali cloud, ha visto il proprio canale di distribuzione corrotto due volte in otto mesi.La prima ora, secondo il runbook
Kodem ha corredato i suoi indicatori con un runbook di risposta per la prima ora, e l'avviso di LiteLLM è altrettanto netto. Il nucleo comune:- Bloccare litellm 1.107.0 al proxy dei pacchetti, smettere di distribuire tag mobili come latest e fissare l'ultima release pulita, la 1.106.2, per hash — le immagini per digest
- Non eseguire python né pip sugli host colpiti prima della pulizia, perché ogni avvio dell'interprete riesegue il payload
- Isolare host e container, poi cancellare manualmente cook.pth, cook.py, sitecustomize.py e i loro file .pyc compilati
- Ruotare da una macchina pulita: ruoli cloud, chiavi dei provider nel database del proxy, chiavi master e virtuali di LiteLLM, password del database, token di registry e GitHub
- Esaminare i log di audit cloud alla ricerca di chiamate GetCallerIdentity e usi di credenziali da infrastruttura inattesa dalle 11:39 UTC del 21 ottobre










