Python pickle è un formato di serializzazione integrato usato per trasformare gli oggetti Python in byte e poi ricostruirli. È comodo per salvare dati o passare oggetti tra componenti Python fidati, ma non è progettato per input non fidati. Durante il processo di deserializzazione, il loader può invocare costruttori di oggetti o altri percorsi di codice, il che significa che un payload malevolo può eseguire codice invece di limitarsi a ripristinare i dati.
Nella sicurezza informatica, questo rende pickle una comune fonte di esecuzione di codice remoto quando è esposto a input di rete, caricamenti di file, code di messaggi o trasporti di cache. Gli aggressori cercano servizi che accettano dati pickle senza forti confini di fiducia, quindi forniscono oggetti costruiti ad hoc per attivare comandi arbitrari. I difensori evitano questo rischio non deserializzando mai dati provenienti da fonti non fidate, sostituendo pickle con formati più sicuri come JSON quando possibile e isolando qualsiasi deserializzazione inevitabile dietro autenticazione e rigorosi controlli di rete.


