LiteLLM, popolare libreria open source che consente agli sviluppatori di accedere a più modelli linguistici tramite un’unica interfaccia unificata, è stata “infettata”. Più precisamente, le versioni v1.82.7 e v1.82.8 sono state rimosse dal Python Package Index (PyPI) dopo che ricercatori e maintainer hanno scoperto la presenza di codice malevolo capace di sottrarre credenziali nascosto all’interno di un file componente chiamato litellm_init.pth.

La radice del problema affonda in Trivy, scanner open source per la sicurezza dei container sviluppato e mantenuto da Aqua Security, integrato come misura di protezione nei pipeline CI/CD di molti progetti tra cui LiteLLM. Gli attaccanti, identificati con il nome TeamPCP dai ricercatori di sicurezza, hanno sfruttato una configurazione errata nell’ambiente GitHub Actions di Trivy tra la fine di febbraio e l’inizio di marzo 2026, riuscendo a sottrarre un token di accesso privilegiato che ha aperto le porte alla manipolazione diretta del pipeline di rilascio.

Il 19 marzo, il gruppo ha utilizzato le credenziali compromesse per pubblicare una versione malevola di Trivy (v0.69.4) e, tre giorni dopo, sono seguite le versioni v0.69.5 e v0.69.6, distribuite come immagini DockerHub. Aqua Security ha evidenziato un aspetto particolarmente insidioso della tattica adottata.

Gli attaccanti infatti non si sono limitati a caricare nuove versioni compromesse, ma hanno modificato i tag di versione esistenti associati allo script trivy-action su GitHub, iniettando codice malevolo direttamente nei workflow che molte organizzazioni stavano già eseguendo. Poiché la maggior parte dei pipeline CI/CD fa riferimento a tag di versione piuttosto che a commit specifici con hash fissato, i processi continuavano a girare senza che nulla segnalasse la modifica sottostante. Un meccanismo silenzioso e subdolo proprio perché difficile da rilevare in assenza di controlli espliciti sull’integrità del codice sorgente.

Krrish Dholakia, CEO di Berri AI (l’azienda che mantiene LiteLLM), ha spiegato che il token PYPI_PUBLISH del progetto era archiviato nel repository GitHub come variabile d’ambiente in un file .env. Attraverso la catena compromessa, quel token è finito nelle mani degli attaccanti, che lo hanno usato per pubblicare su PyPI le due versioni contenenti il codice di furto credenziali. Dholakia ha confermato che tutti i token di pubblicazione su PyPI sono stati immediatamente revocati e che i profili avevano la doppia autenticazione attiva, a dimostrazione che il vettore era esclusivamente il token rubato, non un accesso diretto agli account.

Il team sta ora valutando misure più robuste, tra cui il passaggio al trusted publishing tramite token JWT e la migrazione verso account PyPI dedicati con permessi più granulari.

A complicare ulteriormente la risposta all’incidente è arrivato un dettaglio che rivela quanto fosse orchestrata l’operazione. Nel momento in cui la segnalazione di sicurezza è stata aperta sul repository GitHub di LiteLLM, il thread è stato inondato da decine di commenti generati presumibilmente con strumenti di intelligenza artificiale. Il ricercatore Rami McCarthy ha tracciato i profili coinvolti, scoprendo che 19 dei 25 account usati per lo spam erano già stati impiegati nella stessa campagna contro Trivy. Un’operazione di disturbo pensata per affossare le discussioni tecniche utili e rallentare la risposta della comunità.

La Python Packaging Authority (PyPA) ha pubblicato un avviso di sicurezza ufficiale, sottolineando che chiunque abbia installato ed eseguito LiteLLM v1.82.7 o v1.82.8 deve considerare esposte tutte le credenziali accessibili dall’ambiente in cui la libreria era in esecuzione (chiavi API, token, variabili d’ambiente) e procedere immediatamente alla loro revoca e rotazione. Una misura precauzionale che non ammette ritardi, soprattutto per chi usa LiteLLM in ambienti di produzione con accesso a modelli commerciali come quelli di OpenAI, Anthropic o Google.