Picklescan: falhas expõem modelos PyTorch a ataques de código

As falhas no Picklescan que permitem bypass e a execução de código em modelos PyTorch maliciosos.

Escrito por
Jardeson Márcio
Jardeson Márcio é Jornalista e Mestre em Tecnologia Agroalimentar pela Universidade Federal da Paraíba. Com 8 anos de experiência escrevendo no SempreUpdate, Jardeson é um especialista...

As falhas no Picklescan e o risco de modelos PyTorch maliciosos revelam uma vulnerabilidade estrutural na forma como o Machine Learning moderno distribui e consome modelos treinados. Em um ecossistema acelerado pela corrida da IA, o formato pickle, amplamente usado no Python, continua sendo um dos pontos mais frágeis e paradoxais da segurança em Inteligência Artificial, pois combina praticidade com um potencial de risco elevado. A descoberta recente de vulnerabilidades críticas no Picklescan, ferramenta criada justamente para identificar artefatos maliciosos em arquivos pickle, acende um alerta importante para todos que dependem de pipelines seguros de ML.

As vulnerabilidades tornaram possível o bypass da verificação e permitiram que payloads maliciosos permanecessem ocultos dentro de modelos PyTorch, criando um cenário ideal para ataques à cadeia de suprimentos, uma ameaça cada vez mais comum em ambientes corporativos e open source. O objetivo deste artigo é explicar de forma clara por que essas falhas são tão graves, como foram exploradas e o que você pode fazer para mitigar riscos em seu ambiente.

A situação também evidencia um problema estrutural: o PyTorch, por padrão, utiliza pickle para serialização de modelos. Essa escolha histórica facilita o desenvolvimento, mas abre portas para ataques sofisticados, especialmente em plataformas Linux e ambientes de pesquisa e produção que dependem da troca constante de modelos.

Entendendo o risco inerente do formato pickle

PyTorch

O formato pickle é um mecanismo poderoso de serialização do Python, projetado para transformar objetos em um fluxo de bytes capaz de ser reconstruído posteriormente. O problema central é que esse processo não é apenas uma reconstrução de dados, mas envolve a execução de funções Python durante a desserialização. Ou seja, se alguém insere instruções maliciosas dentro de um arquivo pickle, essas instruções são executadas automaticamente no momento do carregamento.

Isso torna a desserialização um risco crítico. Em um cenário com modelos PyTorch distribuídos pela comunidade, muitas vezes baixados de repositórios públicos ou compartilhados internamente em equipes, basta um único arquivo adulterado para comprometer um ambiente inteiro. Ataques dessa natureza podem instalar backdoors, exfiltrar dados, abrir shells reversos ou modificar sistemas de forma furtiva.

Em outras palavras, o risco não está no PyTorch em si, mas na combinação explosiva entre pickle, automatização de ML e falta de validação robusta.

Picklescan: a linha de defesa que falhou

O Picklescan surgiu como uma tentativa de contornar esses riscos. Sua função é escanear arquivos pickle e inspecionar seu conteúdo, analisando bytecode, detectando operações potencialmente perigosas e aplicando uma lista de bloqueio (blocklist) de módulos ou funções conhecidas por possibilitar execução arbitrária de código.

No entanto, essa abordagem sofre das mesmas limitações de qualquer sistema de assinatura ou filtragem. Se o atacante consegue:

  • contornar a blocklist com chamadas equivalentes
  • manipular estruturas internas do pickle para esconder instruções
  • explorar caminhos não previstos pelo scanner

então a ferramenta perde totalmente sua eficácia. Foi exatamente isso que ocorreu nas falhas descobertas recentemente.

As falhas críticas: como o scanner foi burlado

As três vulnerabilidades principais, CVE-2025-10155, CVE-2025-10156 e CVE-2025-10157, mostraram que era possível manipular arquivos pickle de modo a evitar completamente a detecção pelo Picklescan. Os pesquisadores demonstraram formas engenhosas e altamente perigosas de esconder payloads maliciosos, resultando em bypass total da análise de segurança.

A seguir, detalhamos como cada vulnerabilidade funcionava.

CVE-2025-10155: Manipulação de extensões para ocultar instruções maliciosas: Ataques exploravam opcodes específicos do pickle que permitiam encapsular chamadas de função de maneira não prevista pelo scanner. O Picklescan simplesmente não identificava essas instruções, permitindo que código arbitrário fosse executado durante a desserialização.

CVE-2025-10156: Erros CRC em arquivos ZIP mascarando payloads: Alguns modelos são distribuídos dentro de arquivos compactados. Atacantes descobriram que era possível inserir arquivos maliciosos com erros propositais de CRC que impediam ferramentas comuns de abrir o conteúdo corretamente, mas ainda permitiam que Python acessasse partes internas, criando uma zona cega para o Picklescan.

CVE-2025-10157: Burla da lista de bloqueio de variáveis globais: A blocklist do Picklescan monitorava variáveis globais específicas no pickle. No entanto, ataques conseguiram usar diferentes caminhos de importação, aliases e estruturas intermediárias do Python para invocar funções críticas sem tocar diretamente nas variáveis monitoradas.

Todos os problemas foram corrigidos na versão 0.0.31, que endureceu a análise e adicionou verificações mais robustas. No entanto, o impacto dessas falhas mostra que scanners dessa natureza devem ser tratados como apoio, não como garantias absolutas de segurança.

O vetor de exfiltração de dados (cve-2025-46417)

Além das falhas acima, outro ataque já relatado anteriormente, identificado como CVE-2025-46417, demonstrou um vetor ainda mais perturbador: era possível criar um pickle que, ao ser desserializado, lia conteúdos sensíveis do sistema, como /etc/passwd em Linux, e enviava essa informação para fora via consultas DNS. Essa técnica explorava módulos legítimos como linecache e ssl, que não seriam normalmente associados à extração de dados.

Esse ataque reforça a gravidade da situação. Não se trata apenas de execuções pontuais, mas de exfiltração silenciosa, muito mais difícil de detectar em ambientes corporativos ou clusters de IA.

Diretrizes de segurança: protegendo seu ambiente de machine learning

Para mitigar riscos associados a falhas no Picklescan e o risco de modelos PyTorch maliciosos, é essencial adotar uma postura de segurança proativa. Scanners ajudam, mas são insuficientes quando lidamos com um formato tão dinâmico quanto pickle. A segurança em modelos PyTorch depende de práticas que envolvem cultura, processos e tecnologia.

A seguir, algumas recomendações essenciais.

Atualize o Picklescan imediatamente: Se você usa a ferramenta, atualize para a versão 0.0.31 ou posterior. As correções incluíram validações estruturais, maior robustez na análise de bytecode e bloqueios aprimorados.

Evite modelos de fontes desconhecidas: Priorize repositórios confiáveis e assinaturas oficiais. Evite baixar modelos PyTorch de sites não verificados, repositórios pessoais ou arquivos compartilhados sem revisão.

Considere formatos alternativos ao pickle: Tecnologias como TorchScript, ONNX ou formatos exportados para C++ reduzem significativamente o risco de execução arbitrária.

Isolamento é fundamental: Sempre que possível, carregue modelos em ambientes isolados como containers, VMs ou entornos sandbox. Isso reduz o impacto de possíveis ataques.

Reveja sua cadeia de suprimentos de ML: Além do Picklescan, adote soluções de monitoramento, análise estática e validação contínua. Ataques à cadeia de suprimentos estão crescendo rapidamente e exigem abordagens multifatoriais.

A complexidade do ecossistema de IA exige maturidade na gestão de riscos. O bypass Picklescan demonstrou que confiar apenas em uma camada de defesa é insuficiente, especialmente quando trabalhamos com um formato tão flexível e perigoso quanto o pickle. O objetivo é construir defesas em profundidade.

Compartilhe este artigo