← Ultimi articoli
💻 computer science

PickleFuzzer: A Case Study in Fuzzing for Discrepancies Between Python Pickle Implementations

Questo articolo presenta PickleFuzzer, un fuzzer differenziale basato su grammatica che individua 14 discrepanze critiche tra le implementazioni di pickle di Python, incluse vulnerabilità che consentono agli attaccanti di aggirare gli strumenti di scansione della sicurezza su piattaforme come Hugging Face.

Autori originali: Justin Applegate, Andreas Kellas

Pubblicato 2026-05-15
📖 4 min di lettura☕ Lettura da pausa caffè

Autori originali: Justin Applegate, Andreas Kellas

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Immagina di avere una macchina magica che può trasformare qualsiasi oggetto nella tua casa—un giocattolo, un libro o un panino—in una lunga sequenza di istruzioni (come una ricetta). Questo è ciò che fa il Pickle di Python: trasforma dati informatici complessi in una sequenza di istruzioni in modo che possano essere salvati o inviati su Internet. In seguito, un'altra macchina legge quelle istruzioni per ricostruire l'oggetto esattamente com'era.

Tuttavia, c'è un problema. Se qualcuno ti invia una "ricetta" che ha preparato da solo e tu la segui ciecamente, quella ricetta potrebbe ordinare alla tua macchina di fare qualcosa di pericoloso, come cancellare i tuoi file o rubare le tue password. Per questo motivo, gli esperti di sicurezza hanno costruito scanner (come i metal detector in aeroporto) per controllare queste ricette prima che la tua macchina le legga. Se lo scanner individua un'istruzione pericolosa, blocca il processo.

Il Problema: Tre Cuochi Diversi, Tre Regole Diverse

Ecco il colpo di scena: le persone che hanno costruito il "lettore di ricette" (la macchina che legge Pickle) non hanno scritto un unico manuale di regole. Invece, hanno costruito tre versioni diverse del lettore:

  1. Cuoco A (Python): Scritto in Python, il linguaggio standard.
  2. Cuoco B (C): Scritto in un linguaggio più veloce e a basso livello chiamato C.
  3. Cuoco C (L'Ispettore): Uno strumento utilizzato dagli scanner di sicurezza per leggere la ricetta prima che gli altri cuochi la preparino.

Il problema è che questi tre cuochi non sono sempre d'accordo su cosa costituisca una ricetta valida. A volte, un'istruzione specifica potrebbe far dire al Cuoco A e al Cuoco B: "Oh, va bene, la preparo", mentre il Cuoco C (l'Ispettore) dice: "Aspetta, è rotta! Non riesco a leggerla".

Se un hacker lo sa, può creare una "ricetta avvelenata" che sembra rotta per l'Ispettore (così viene fatta passare dallo scanner di sicurezza) ma appare perfettamente valida al Cuoco A o al Cuoco B (che poi eseguono felicemente i comandi pericolosi). È come mostrare a una guardia un falso documento d'identità che gli sembra sospetto, così ti fa passare, per poi mostrare un documento d'identità vero al buttafuori interno che ti fa entrare.

La Soluzione: PICKLEFUZZER

I ricercatori di questo articolo hanno costruito uno strumento chiamato PICKLEFUZZER. Immaginalo come un assaggiatore automatico super veloce.

Invece di assumere una persona per leggere i manuali di regole e indovinare dove i cuochi potrebbero non essere d'accordo, PICKLEFUZZER fa quanto segue:

  1. Genera Ricette Casuali: Crea milioni di sequenze di istruzioni casuali che sembrano valide (ricette) utilizzando una grammatica speciale (un insieme di regole che ha dedotto studiando i cuochi).
  2. Serve a Tutti i Cuochi: Consegna la stessa identica ricetta al Cuoco A, al Cuoco B e al Cuoco C contemporaneamente.
  3. Controlla la Reazione: Osserva attentamente per vedere se un cuoco si blocca, fa un capriccio (solleva un errore) o ottiene un risultato diverso dagli altri.

Se il Cuoco C dice "Errore!" ma il Cuoco A dice "Delizioso!", PICKLEFUZZER segnala quella ricetta come una discrepanza. Non ha bisogno di conoscere la risposta "corretta"; sa solo che se i cuochi non sono d'accordo, esiste una falla di sicurezza.

Cosa Hanno Trovato

I ricercatori hanno eseguito questo strumento per una settimana e hanno trovato 14 modi diversi in cui i cuochi non erano d'accordo.

  • I Grandi Successi: Quattro di queste discrepanze erano critiche. Hanno dimostrato che un hacker poteva usarle per ingannare gli scanner di sicurezza su siti web popolari (come Hugging Face, dove le persone condividono modelli di intelligenza artificiale) facendoli accettare codice pericoloso.
  • La Ricompensa: I ricercatori hanno segnalato queste falle al team di Python. Li hanno anche riportati a un programma di bug bounty (un sistema di ricompense per la scoperta di vulnerabilità di sicurezza) e sono stati premiati con 750 dollari.
  • Velocità vs Esseri Umani: Per dimostrare quanto fosse buono il loro strumento, lo hanno confrontato con un esperto di sicurezza umano. L'umano ha passato 60 ore a leggere manualmente il codice e ha trovato 14 discrepanze. PICKLEFUZZER ha trovato lo stesso numero di discrepanze in soli 10 minuti.

La Conclusione

L'articolo dimostra che quando si hanno più versioni di uno strumento di sicurezza senza un unico manuale di regole ufficiale, finiranno inevitabilmente per non essere d'accordo. Queste discrepanze sono come crepe in una diga che gli hacker possono sfruttare. PICKLEFUZZER è un nuovo metodo veloce per trovare queste crepe automaticamente, osservando dove le diverse versioni del software smettono di essere d'accordo tra loro, aiutando a correggerle prima che possano essere sfruttate da attori malintenzionati.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →