Simon Willison rilancia una citazione di Seth Larson su un cambiamento concreto in PyPI che riguarda chiunque distribuisca o consumi pacchetti Python: il Python Package Index ora rifiuta l’upload di nuovi file su release più vecchie di 14 giorni.
La motivazione, riportata nella citazione, è precisa: impedire che release vecchie e stabili da tempo vengano “avvelenate” nel caso in cui i token di pubblicazione o i workflow di un progetto PyPI vengano compromessi. Larson aggiunge che, per quanto ne sanno, questo tipo di abuso non è ancora stato sfruttato, e che non c’era una ragione tecnica a impedirlo se non il fatto che gli attaccanti non fossero consapevoli che fosse possibile.
È una modifica piccola nella forma ma significativa nella sostanza per la supply chain security. Le pipeline di data engineering vivono su un pinning delle dipendenze e sull’assunzione implicita che una versione già pubblicata e testata non cambi sotto i piedi. La possibilità di aggiungere file — ad esempio una wheel per una piattaforma diversa — a una release vecchia apriva una finestra sottile ma reale: se le credenziali di publishing venivano rubate, un attaccante poteva iniettare un artefatto malevolo dentro una versione che tutti considerano stabile e che nessuno sta più guardando.
La finestra di 14 giorni è un compromesso ragionevole: lascia spazio per completare i file di una release appena pubblicata (le wheel per più architetture non arrivano sempre tutte insieme), ma chiude la porta sulle release ormai congelate. Per chi gestisce data stack in Python la lezione pratica non cambia — hashing e lock file restano la difesa principale — ma è utile sapere che l’ecosistema sta restringendo per default le superfici di attacco che prima dipendevano solo dalla disattenzione dei potenziali attaccanti.
In sintesi
- PyPI ora rifiuta nuovi file su release più vecchie di 14 giorni, per evitare l’avvelenamento di versioni stabili in caso di credenziali compromesse.
- Secondo Seth Larson l’abuso non risulta ancora sfruttato: mancava solo la consapevolezza degli attaccanti.
- Per le pipeline Python la difesa resta il pinning con hash, ma la superficie d’attacco di default si riduce.
Fonte: A quote from Seth Larson — https://simonwillison.net/2026/Jul/23/seth-larson/
Hai qualcosa da aggiungere? Unisciti alla discussione.