PickleFuzzer: A Case Study in Fuzzing for Discrepancies Between Python Pickle Implementations
Este artigo apresenta o PickleFuzzer, um fuzzer diferencial baseado em gramática que identifica 14 discrepâncias críticas entre as implementações de pickle do Python, incluindo vulnerabilidades que permitem que atacantes contornem ferramentas de análise de segurança em plataformas como a Hugging Face.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
Imagine que você tem uma máquina mágica que pode transformar qualquer objeto em sua casa — um brinquedo, um livro ou um sanduíche — em uma longa sequência de instruções (como uma receita). É isso que o Pickle do Python faz: transforma dados complexos de computador em uma sequência de instruções para que possam ser salvos ou enviados pela internet. Mais tarde, outra máquina lê essas instruções para reconstruir o objeto exatamente como estava.
No entanto, há um problema. Se alguém lhe enviar uma "receita" que preparou sozinho, e você a seguir cegamente, essa receita pode instruir sua máquina a fazer algo perigoso, como apagar seus arquivos ou roubar suas senhas. Por isso, especialistas em segurança construíram scanners (como detectores de metal em aeroportos) para verificar essas receitas antes que sua máquina as leia. Se o scanner detectar uma instrução perigosa, ele interrompe o processo.
O Problema: Três Cozinheiros Diferentes, Três Regras Diferentes
Aqui está a reviravolta: as pessoas que construíram o "leitor de receitas" (a máquina que lê o Pickle) não escreveram um único livro de regras. Em vez disso, construíram três versões diferentes do leitor:
- Cozinheiro A (Python): Escrito em Python, a linguagem padrão.
- Cozinheiro B (C): Escrito em uma linguagem mais rápida e de baixo nível chamada C.
- Cozinheiro C (O Inspetor): Uma ferramenta usada por scanners de segurança para ler a receita antes que os outros cozinheiros a preparem.
O problema é que esses três cozinheiros nem sempre concordam sobre o que conta como uma receita válida. Às vezes, uma instrução específica pode fazer o Cozinheiro A e o Cozinheiro B dizerem: "Ah, isso está tudo bem, vou prepará-la", enquanto o Cozinheiro C (o Inspetor) diz: "Espere, isso está quebrado! Não consigo ler isso."
Se um hacker souber disso, pode criar uma "receita envenenada" que parece quebrada para o Inspetor (para que seja liberada pelo scanner de segurança), mas parece perfeitamente válida para o Cozinheiro A ou o Cozinheiro B (que então executam felizmente os comandos perigosos). Isso é como mostrar a um guarda uma identidade falsa que parece suspeita para ele, fazendo com que ele o deixe passar, e depois mostrar uma identidade real ao porteiro de dentro, que o deixa entrar.
A Solução: PICKLEFUZZER
Os pesquisadores deste artigo construíram uma ferramenta chamada PICKLEFUZZER. Pense nela como um prova-de-sabores super-rápido e automatizado.
Em vez de contratar um humano para ler os livros de regras e adivinhar onde os cozinheiros podem discordar, o PICKLEFUZZER faz o seguinte:
- Gera Receitas Aleatórias: Cria milhões de sequências de instruções aleatórias e que parecem válidas (receitas) usando uma gramática especial (um conjunto de regras que ele descobriu estudando os cozinheiros).
- Serve a Todos os Cozinheiros: Entrega exatamente a mesma receita ao Cozinheiro A, ao Cozinheiro B e ao Cozinheiro C ao mesmo tempo.
- Verifica a Reação: Observa atentamente para ver se um cozinheiro trava, faz um berrante (levanta um erro) ou termina com um resultado diferente dos outros.
Se o Cozinheiro C disser "Erro!" mas o Cozinheiro A disser "Delicioso!", o PICKLEFUZZER marca essa receita como uma discrepância. Ele não precisa saber a resposta "correta"; basta saber que, se os cozinheiros discordarem, há uma falha de segurança.
O Que Eles Encontraram
Os pesquisadores executaram essa ferramenta por uma semana e encontraram 14 maneiras diferentes de os cozinheiros discordarem.
- As Grandes Vitórias: Quatro dessas discordâncias eram críticas. Elas provaram que um hacker poderia usá-las para enganar os scanners de segurança em sites populares (como o Hugging Face, onde pessoas compartilham modelos de IA), fazendo com que código perigoso fosse liberado.
- A Recompensa: Os pesquisadores informaram a equipe do Python sobre essas falhas. Eles também as relataram a um programa de recompensa por bugs (um sistema de recompensa para encontrar falhas de segurança) e receberam US$ 750.
- Velocidade vs. Humanos: Para mostrar quão boa era sua ferramenta, eles a compararam com um especialista humano em segurança. O humano gastou 60 horas lendo manualmente o código e encontrou 14 discrepâncias. O PICKLEFUZZER encontrou o mesmo número de discrepâncias em apenas 10 minutos.
A Conclusão
O artigo mostra que, quando você tem múltiplas versões de uma ferramenta de segurança sem um único livro de regras oficial, elas inevitavelmente discordarão. Essas discordâncias são como rachaduras em uma barragem que hackers podem explorar. O PICKLEFUZZER é uma nova e rápida maneira de encontrar essas rachaduras automaticamente, observando onde as diferentes versões do software param de concordar entre si, ajudando a corrigi-las antes que agentes mal-intencionados possam usá-las.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.