Il software picklescan è un popolare strumento open source progettato per rilevare vulnerabilità di sicurezza nei modelli di machine learning (ML) salvati nel formato pickle. È ampiamente utilizzato nelle pipeline MLOps e dai team di data science per verificare i modelli provenienti da fonti non attendibili, prevenendo attacchi che sfruttano la deserializzazione di dati dannosi. Applicazioni critiche per il business, inclusi servizi in produzione e analisi basate su AI, si affidano a questa scansione per proteggersi da attacchi alla supply chain che prendono di mira gli artefatti ML.
L’impatto di questa vulnerabilità è alto, poiché consente di aggirare completamente i controlli di sicurezza dello scanner, con conseguente possibilità di esecuzione remota di codice non autenticato. Un attaccante può camuffare un file pickle dannoso come un modello PyTorch sicuro, ingannando lo scanner. Quando un’applicazione a valle carica il modello “verificato”, il codice dell’attaccante viene eseguito sul sistema ospite. Questa vulnerabilità interessa qualsiasi organizzazione che utilizza picklescan nelle sue pipeline ML per analizzare modelli provenienti da repository esterni o non attendibili. Sebbene non ci siano al momento segnalazioni confermate di sfruttamento attivo, è disponibile un exploit pubblico e la complessità dell’attacco è bassa, indicando un’alta probabilità di sfruttamento futuro.
| Prodotto | picklescan |
| Data | 2025-12-05 00:36:43 |
Riassunto tecnico
La vulnerabilità è un difetto di tipo CWE-20: Improper Input Validation nella logica di identificazione del tipo di file di picklescan. Lo scanner assegna erroneamente priorità all’estensione del file rispetto all’analisi del contenuto per determinarne il tipo, permettendo ad un attaccante di eludere i controlli di sicurezza.
Analisi tecnica:
- Camuffamento del file: Un attaccante crea un file pickle standard ma dannoso contenente opcode pericolosi progettati per eseguire comandi arbitrari (es. utilizzando
__reduce__conos.system). - Evasione tramite estensione: L’attaccante salva il payload pickle dannoso con un’estensione tipica di PyTorch, come
.pto.pth. - Identificazione errata: Quando
picklescananalizza il file, la sua logica controlla prima l’estensione. Identifica erroneamente il file come un modello PyTorch “sicuro”, un tipo di file esente dalla scansione standard degli opcode pickle. - Scansione bypassata: Poiché il file è classificato in modo errato,
picklescansalta la scansione di sicurezza necessaria che avrebbe altrimenti rilevato gli opcode dannosi presenti nel file. Riporta quindi il file come sicuro. - Esecuzione di codice: Un’applicazione a valle o un ingegnere ML, fidandosi del risultato della scansione, carica il file dannoso utilizzando una libreria standard di deserializzazione come
pickle.load(). Questa azione attiva l’esecuzione del payload incorporato, portando all’esecuzione arbitraria di codice con i permessi dell’utente che esegue l’applicazione.
Versioni interessate:
- Vulnerabili: versioni di
picklescanfino alla 0.0.30 inclusa. - Corrette: una correzione è stata rilasciata nelle versioni successive. Gli utenti devono eseguire l’aggiornamento all’ultima versione disponibile.
Raccomandazioni
- Applicare la patch immediatamente: aggiornare
picklescanall’ultima versione disponibile, che contiene la correzione per questa vulnerabilità. Assicurarsi che tutte le istanze all’interno delle pipeline MLOps e di sicurezza siano aggiornate. - Mitigazioni:
- Se non è possibile applicare la patch immediatamente, trattare tutti i risultati di scansioni provenienti da versioni vulnerabili di
picklescancon estrema cautela, in particolare per file con estensioni PyTorch provenienti da fonti non attendibili. - Implementare l’isolamento (sandboxing) per tutti gli ambienti di inferenza e analisi dei modelli. Utilizzare tecnologie come container (es. Docker) o micro-VM per isolare il processo di caricamento del modello dal sistema ospite e dalla rete più ampia.
- Se non è possibile applicare la patch immediatamente, trattare tutti i risultati di scansioni provenienti da versioni vulnerabili di
- Caccia e monitoraggio:
- Effettuare un audit dei log storici di scansione per identificare tutti i file con estensioni
.pto.pthelaborati da versioni vulnerabili dipicklescan. - Esaminare i log di sistema e applicativi nei server dedicati al caricamento dei modelli alla ricerca di attività sospette, come connessioni di rete inattese o processi figli avviati dall’applicazione responsabile della deserializzazione.
- Monitorare eventi di scrittura o modifica su file con estensioni come
.pte.pthin directory insolite.
- Effettuare un audit dei log storici di scansione per identificare tutti i file con estensioni
- Risposta agli incidenti:
- Se si sospetta una compromissione, isolare immediatamente l’host interessato dalla rete per prevenire movimenti laterali.
- Conservare il file del modello dannoso e i log di sistema per un’analisi forense.
- Presumere che tutti i dati o credenziali accessibili dal processo compromesso siano stati esfiltrati.
- Difesa in profondità:
- Applicare il principio del minimo privilegio. Eseguire le applicazioni di caricamento dei modelli con i permessi minimi necessari per la loro funzione.
- Implementare la segmentazione di rete per limitare le connessioni in uscita dai server che elaborano modelli ML, riducendo la possibilità per un attaccante di esfiltrare dati o stabilire un canale di command-and-control.