Sabato 24 ottobre 2026
L’edizione di oggi
Millebit
AI · Software · QA
Il segnale, non il rumore.

Gli articoli di Millebit sono scritti con l’intelligenza artificiale a partire da fonti citate in ogni pezzo. Come lavoriamo

QA e affidabilità

Pacchetto LiteLLM su PyPI contenente codice che ruba credenziali

Testo scritto con l’intelligenza artificiale a partire da una fonte citata, senza revisione umana prima della pubblicazione.

Installare con pip può eseguire codice prima dell'import e lasciare una backdoor, pericolo per laptop, CI e server.

Illustrazione generata con l’intelligenza artificiale

Una versione di LiteLLM su PyPI ha incluso codice malevolo che, in fase di installazione, può rubare credenziali e aprire una backdoor. Basta un pip install per innescarlo1.

Il meccanismo non aspetta l’import. Può scattare durante la build della source distribution: eseguire setup.py avviene prima di qualsiasi utilizzo del pacchetto. Può scattare all’avvio dell’interprete: un file .pth in site-packages con una riga di import viene caricato a ogni esecuzione di Python, anche con un semplice python -c "print(1)". Può scattare per via indiretta: una dipendenza aggiornata trascina dentro il pacchetto compromesso senza che tu lo installi in modo esplicito1.

Questi canali colpiscono proprio dove molte pipeline sono più fragili. Esempi comuni: pip install -U litellm dentro un Dockerfile, o requirements.txt senza versioni bloccate. Se qualcuno prende il controllo dell’account che pubblica su PyPI, ottiene esecuzione di codice sui laptop degli sviluppatori, nei runner CI, nei container di produzione. Una sola build può attivare lo script inserito nel pacchetto1.

La segnalazione su LiteLLM ha acceso un confronto su Hacker News: il rischio è concreto perché l’innesco avviene prima di ogni import e si propaga via dipendenze transitive. Non servono manovre sofisticate sul lato vittima: l’installazione basta a esfiltrare segreti e a preparare accessi futuri. L’interprete Python carica i .pth automaticamente, quindi ogni esecuzione può diventare un punto di persistenza1.

L’autore della segnalazione non si ferma alla diagnosi. Propone difese pratiche pensate per tagliare gli inneschi nei tre punti critici: build di sdist, esecuzioni all’avvio dell’interprete, aggiornamenti trascinati da altre librerie. L’obiettivo è ridurre la superficie d’attacco e rendere riproduibili gli ambienti di installazione. Le indicazioni arrivano con esempi operativi, comandi e script pronti per essere adottati nei flussi esistenti1.

Il nodo organizzativo sta nelle abitudini che accettiamo per comodità. Aggiornare “all’ultima” in un Dockerfile senza fissare versioni. Lasciare a pip la scelta della catena di dipendenze. Delegare fiducia agli account PyPI dei maintainer e, per riflesso, a chi può comprometterli. Ogni volta che la pipeline pesca la versione più recente, cedi controllo su cosa gira nei tuoi ambienti e concedi al pacchetto la prima esecuzione di cui ha bisogno1.

Una misura spesso trascurata è la sorveglianza degli entry point impliciti. Una singola riga in un .pth aggancia ogni processo Python, anche quelli lanciati per un controllo rapido. Capire dove e quando il codice può partire, prima dell’import, permette di posizionare controlli mirati, evitare build non necessarie e limitare le esecuzioni automatiche nei contesti più esposti1.

Call to action: leggi la segnalazione e applica i check proposti alla tua pipeline. Parti dagli esempi in1, verifica se buildi sdist, se carichi .pth all’avvio, se aggiorni dipendenze senza bloccarle. Agisci su questi tre punti prima del prossimo deploy1.

Fonti

  1. Your pip install Is a Remote Code Execution: Practical Defenses Against Compromised PyPI Packages dev.to · 22 ottobre 2026
Come è nato questo articolo Scritto da un sistema di intelligenza artificiale, con controlli automatici

Millebit non ha giornalisti che scrivono gli articoli: li scrive un motore editoriale basato su modelli di intelligenza artificiale, a partire dalle fonti elencate qui sopra. Prima di uscire, ogni testo passa questi controlli:

  • Fedeltà alle fonti. Un secondo passaggio toglie ogni affermazione che le fonti non sostengono. Valutazione su questo pezzo: 9/10.
  • Anti-cliché. Un filtro scarta frasi fatte, enfasi e tic della prosa artificiale: superato.
  • Giudizio editoriale. Un modello valuta il pezzo su sette criteri (apertura, chiarezza, economia, concretezza, voce, struttura, fedeltà) e sotto 7,8/10 non si pubblica. Questo articolo ha preso 7,9/10 dopo 1 revisione.

I controlli riducono gli errori ma non li eliminano: un modello può fraintendere una fonte. Per le decisioni importanti, risali alla fonte originale. Se trovi un errore, segnalacelo.

Come funziona Millebit, nel dettaglio →

Hai trovato un errore? Segnalacelo
Tipo di segnalazione

Leggiamo ogni segnalazione. Le correzioni fatte sono elencate in Correzioni. L’email, se la lasci, serve solo a risponderti.