JFrog scopre tre zero-day critiche in PickleScan

di Redazione
0 commenti

JFrog Security Research individua tre vulnerabilità zero-day nello strumento open-source PickleScan, utilizzato per analizzare modelli PyTorch e rilevare contenuti maligni basati su pickle, uno dei formati più diffusi nel machine learning. Le falle permettono bypass delle rilevazioni, caricamento di modelli corrotti e esecuzione arbitraria di codice, compromettendo sia gli sviluppatori sia le piattaforme che si affidano a PickleScan per proteggere pipeline e repository. Lo strumento, adottato anche da Hugging Face per difendere il più grande archivio di modelli AI al mondo, presenta discrepanze tra la logica di scansione e il reale comportamento del runtime PyTorch. JFrog segnala le vulnerabilità il 29 giugno 2025, portando ai correttivi rilasciati nella versione 0.0.31 il 2 settembre 2025. Le scoperte evidenziano criticità strutturali legate al formato pickle, mettendo in luce rischi di supply chain e la necessità di difese multilivello per contrastare modelli maligni distribuiti tramite archivi ZIP, estensioni manipolate o subclass malevoli.

Introduzione a PickleScan

image 102
JFrog scopre tre zero-day critiche in PickleScan 11

PickleScan nasce come strumento standard per la sicurezza dei modelli basati su pickle, con l’obiettivo di bloccare import sospetti, funzioni non sicure e operazioni potenzialmente pericolose durante la deserializzazione. L’analisi si basa sul bytecode dei file, che viene confrontato con blacklist e euristiche interne prima che il modello venga caricato. Lo strumento supporta molteplici formati PyTorch, inclusi archivi ZIP, ed è integrato nei sistemi di sicurezza di realtà come Hugging Face, dove funge da barriera preventiva contro modelli eseguibili.

image 103
JFrog scopre tre zero-day critiche in PickleScan 12

JFrog osserva però che la logica di parsing di PickleScan non sempre coincide con quella del caricamento PyTorch, generando un divario sfruttabile da attori malevoli. Tali discrepanze rappresentano un rischio critico per la supply chain AI, poiché un’anomalia nel parsing può tradursi in un modello maligno non rilevato.

CVE-2025-10155: bypass tramite estensione file

La vulnerabilità CVE-2025-10155 riguarda un’errata gestione delle estensioni PyTorch. PickleScan, infatti, privilegia l’estensione del file rispetto al contenuto reale. Un attaccante può rinominare un file pickle maligno in .bin o .pt, forzando lo strumento a un parsing alternativo che provoca un errore interno. L’errore impedisce la scansione effettiva del contenuto, mentre PyTorch ignora l’estensione e carica comunque il modello basandosi sui byte interni.

image 104
JFrog scopre tre zero-day critiche in PickleScan 13

Il risultato è un bypass totale della detection, con possibilità di esecuzione del payload malevolo. Il team di ricerca assegna un punteggio CVSS di 9.3, evidenziando l’impatto critico della falla. Il problema risiede nella funzione scan_bytes del file scanner.py. L’aggiornamento alla versione 0.0.31 corregge il comportamento, obbligando PickleScan a esaminare il contenuto indipendentemente dall’estensione.

CVE-2025-10156: evasion tramite CRC corrotti nei file ZIP

La seconda vulnerabilità, CVE-2025-10156, sfrutta la gestione degli archivi ZIP corrotti. PickleScan utilizza la libreria Python zipfile, che interrompe la scansione quando incontra un errore CRC. Tuttavia, alcune build PyTorch compilate con il flag -DMINIZ_DISABLE_ZIP_READER_CRC32_CHECKS ignorano del tutto i controlli CRC, consentendo il caricamento di archivi anche se corrotti.

image 105
JFrog scopre tre zero-day critiche in PickleScan 14

Un attaccante può quindi alterare i campi CRC degli ZIP che contengono modelli maligni: PickleScan si arresta credendo che il contenuto sia illeggibile, mentre PyTorch prosegue e carica il payload. JFrog dimostra l’exploit tramite uno script chiamato drop_crc.py, che sovrascrive i campi CRC con zeri. Anche questa falla riceve un punteggio CVSS 9.3, poiché permette l’esecuzione di codice all’interno di modelli apparentemente sicuri. Il fix nella versione 0.0.31 consente allo strumento di continuare la scansione anche in presenza di errori CRC.

CVE-2025-10157: bypass blacklist tramite subclass import

La terza vulnerabilità, CVE-2025-10157, riguarda il meccanismo di controllo globale delle importazioni. PickleScan si affida a blacklist contenenti moduli giudicati pericolosi; tuttavia, l’algoritmo verifica solo il nome del modulo principale e non le subclass, permettendo la creazione di modelli maligni che ereditano da classi pericolose senza essere intercettati. Un esempio è l’uso di asyncio.unix_events._UnixSubprocessTransport, che riesce a evitare la blacklist pur permettendo l’esecuzione di comandi di sistema.

image 106
JFrog scopre tre zero-day critiche in PickleScan 15

Attraverso la manipolazione del metodo reduce, un attaccante può creare un file pickle che richiama funzioni dannose pur risultando classificato come semplice “sospetto”. Anche qui il punteggio CVSS raggiunge 9.3, poiché l’exploit consente esecuzione arbitraria. Il fix implementato nella versione 0.0.31 introduce controlli più granulari sulle subclass e sulle chiamate indirette.

Processo di scoperta e disclosure responsabile

La ricerca condotta da JFrog Security Research segue una disclosure responsabile. Gli esperti individuano le discrepanze tra la logica di PickleScan e quella del runtime PyTorch, analizzando comportamenti anomali legati a estensioni, archivi ZIP e importazioni derivate. Le vulnerabilità vengono segnalate al maintainer mmaitre314 il 29 giugno 2025. La collaborazione porta alla pubblicazione della versione corretta 0.0.31 il 2 settembre 2025. L’approccio adottato contribuisce a rafforzare l’intero ecosistema open-source, riducendo rischi di supply chain e favorendo l’aggiornamento tempestivo degli strumenti di sicurezza.

Aggiornamenti e miglioramenti a PickleScan

La versione 0.0.31 introduce modifiche fondamentali: identificazione dei file basata sul contenuto e non sulle estensioni, analisi continua degli archivi ZIP anche in presenza di CRC corrotti, riconoscimento di subclass pericolose e potenziamento delle blacklist. Le correzioni riducono il gap logico tra PickleScan e PyTorch, rafforzando la protezione contro modelli manipolati. L’evoluzione dello strumento beneficia l’intera infrastruttura AI, in particolare piattaforme come Hugging Face, che si affidano a una scansione preventiva robusta per proteggere repository ad alto traffico.

Implicazioni per la sicurezza del formato pickle

Le vulnerabilità mostrano quanto il formato pickle, per quanto comodo e diffuso, resti intrinsecamente rischioso poiché progettato per la massima flessibilità anziché per la sicurezza. Gli attaccanti possono sfruttare questa caratteristica per incorporare codice arbitrario all’interno dei modelli ML. JFrog suggerisce il ricorso a formati più sicuri come Safetensors, oltre all’adozione di sandboxing, scansioni multilivello e sistemi di curation automatica. Le implicazioni coinvolgono tutte le organizzazioni che utilizzano PyTorch, sottolineando la necessità di verificare l’allineamento tra strumenti di sicurezza e runtime effettivo.

Raccomandazioni JFrog per la mitigazione

JFrog raccomanda l’aggiornamento immediato a PickleScan 0.0.31, l’integrazione di difese multilayer nelle pipeline ML, l’uso di repository sicuri per la distribuzione dei modelli, la preferenza di formati come Safetensors, la verifica continua delle blacklist e l’adozione di sistemi di sandboxing. Queste precauzioni riducono la probabilità che modelli manipolati raggiungano ambienti di produzione o piattaforme di ampia diffusione.