# Os ficheiros de modelo Hugging Face podem executar código oculto

Published: 2026-10-12

Pacotes de modelos maliciosos podem executar código durante o carregamento inseguro. Três exemplos documentados explicam shells reversos Pickle, comportamento de scanner de ficheiros corrompidos e confusão de nomes de modelos demonstrada em pesquisa, com limites claros nas alegações de roubo de credenciais.

Canonical: https://thedailydiff.dev/pt-PT/video/2026-10-12-huggingface-model-malware/

## O que este vídeo aborda

- Pesos numéricos de modelo, serialização executável e código de repositório personalizado são coisas diferentes.
- A JFrog e a ReversingLabs documentaram payloads de shell reverso; os seus relatórios selecionados não estabelecem roubo de credenciais de vítimas nomeadas.
- A Confusão de Modelo da Checkmarx foi uma demonstração de pesquisa que exigiu um modelo remoto correspondente e carregamento inseguro.
- Prefira safetensors e carregadores corrigidos, revise e fixe o código personalizado e isole pacotes desconhecidos de segredos pessoais e acesso desnecessário à rede.

## Capítulos

- 0:00 Como pode o download de um modelo convidar um hóspede?
- 0:35 Como um carregador executa as instruções do pacote?
- 1:09 Quais segredos estão ao alcance do processo?
- 1:38 Por que um caminho local ausente pode se tornar um modelo remoto?
- 1:55 Como os pacotes quebrados evadiram o scanner antigo?
- 2:44 O que mantém a chave fora do alcance do hóspede?
- 3:12 Por que eu carimbaria isso com "REVISÃO NECESSÁRIA"?

## Transcrição traduzida

Traduzido da narração original em inglês. Áudio e legendas disponíveis são controlados pelo YouTube.

### Como pode o download de um modelo convidar um hóspede?

0:00 Um ficheiro de modelo são apenas números no disco. Carregar um pacote malicioso do Hugging Face abriu um shell remoto, o que é uma interpretação ambiciosa da IA local. Como o carregamento se torna execução? Que segredos pode alcançar? O que realmente o impede? E mantenha um enigma em mente. Um modelo pode falhar ao carregar depois que a parte perigosa já aconteceu.

0:18 Este é o The Daily Diff, por trás dos bastidores. Hugging Face é uma plataforma para partilha de modelos de machine learning, conjuntos de dados e aplicações. Os pesos do modelo são os números aprendidos. Um repositório também pode conter configuração e código Python. O perigo aqui é a embalagem executável entrar no seu computador quando você a carrega. Pickle armazena objetos Python com instruções para reconstruí-los.

### Como um carregador executa as instruções do pacote?

0:37 Um carregador inseguro pode seguir essas instruções e chamar funções ao desempacotar. Fazer o download dos bytes coloca o pacote no seu disco. A desserialização abre-o. Em algum lugar, um formato de ficheiro foi promovido a administrador de sistema não remunerado. A JFrog relatou o Goober Two em fevereiro de dois mil e vinte e quatro. O seu payload Pickle abriu um shell reverso, conectando-se para oferecer acesso remoto a comandos. O repositório foi excluído. A JFrog também encontrou pistas que sugerem envolvimento de pesquisadores,

1:02 portanto, a atribuição é incerta. O hóspede indesejado foi documentado. O roubo de credenciais de vítimas reais não foi estabelecido.

### Quais segredos estão ao alcance do processo?

1:09 O código em execução como o seu utilizador pode ler tudo o que esse processo pode ler. Uma chave de nuvem montada ou um token acessível tornam-se um alvo possível. Enviá-lo também requer uma rota de rede em funcionamento. Os pesos numéricos sozinhos não têm poderes mágicos de credencial. As suas permissões fornecem a parte interessante do cartão do modelo. Há outra porta. Alguns modelos pedem que você confie em código remoto, o que autoriza Python do repositório. Os ficheiros de tensor seguro podem estar ao lado desse código.

1:32 Verificar o formato do peso cobre uma entrada, enquanto o código do repositório ainda está à espera que você lhe entregue um crachá de visitante.

### Por que um caminho local ausente pode se tornar um modelo remoto?

1:38 A Checkmarx demonstrou a Confusão de Modelo. Um caminho de modelo local ausente poderia resolver para um repositório público com um nome correspondente. Combine isso com código remoto ativado, e o pacote errado pode ser executado. Esta foi uma demonstração de pesquisa envolvendo uma amostra de uma empresa não nomeada, corrigida em um dia. Uma pasta ausente adquiriu um proprietário. A ReversingLabs relatou duas amostras em fevereiro de dois mil e vinte e cinco,

### Como os pacotes quebrados evadiram o scanner antigo?

1:58 chamando a técnica de nullify AI. Ambas continham shells reversos. A sua embalagem 7zip bloqueou o carregamento comum do PyTorch, então este caminho exigiu extração e desserialização insegura. Streams Pickle corrompidos também expuseram um ponto cego do scanner. Uma varredura falhada merece investigação antes que alguém abra o pacote. No teste inofensivo dos pesquisadores, as instruções escreveram um ficheiro antes que o carregador

2:18 atingisse a parte quebrada e gerasse um erro. Imagine abrir um pacote, libertar o guaxinim e depois notar que a etiqueta de envio é inválida. A mensagem de erro chega com excelente gramática e péssimo timing. O Hugging Face removeu as amostras relatadas em vinte e quatro horas e mudou o scanner. Essa descoberta específica levou a uma correção. Uma varredura de segurança é uma evidência útil, e tratar todo erro de scanner como um atestado de boa saúde continua sendo uma interpretação notavelmente generosa de falha.

2:43 Prefira tensors seguros e carregadores corrigidos atuais.

### O que mantém a chave fora do alcance do hóspede?

2:46 O PyTorch restringiu o seu carregador padrão a partir da versão dois ponto seis. Revise o código personalizado e fixe a revisão analisada. Execute pacotes desconhecidos isoladamente, sem chaves pessoais, com acesso restrito à rede. Um contêiner cheio de credenciais montadas é uma cesta de presentes com namespaces. Aquele enigma inicial tem uma resposta. A falha no carregamento informa onde a execução parou. Instruções anteriores já podem ter sido executadas.

3:08 Mantenha os segredos fora do seu alcance antes de abrir o pacote. Veredito, nos bastidores.

### Por que eu carimbaria isso com "REVISÃO NECESSÁRIA"?

3:16 carregador. O download gratuito deve vir com um modelo, e a lista de convidados deve permanecer a minha decisão. Se preferir ler isto a ouvir-me dizer, o diff chega à sua caixa de entrada todas as manhãs, gratuitamente em the daily diff dot dev, link abaixo. E esse é o diff de hoje. Sou o Niko da Axrisi. Junte-se de forma responsável.

## Fontes

- [Data Scientists Targeted by Malicious Hugging Face ML Models with Silent Backdoor](https://jfrog.com/blog/data-scientists-targeted-by-malicious-hugging-face-ml-models-with-silent-backdoor/) — JFrog
- [Malicious ML models discovered on Hugging Face platform](https://www.reversinglabs.com/blog/rl-identifies-malware-ml-model-hosted-on-hugging-face) — ReversingLabs
- [AI Model Confusion: An LLM/AI Model Supply Chain Attack](https://checkmarx.com/zero-post/hugs-from-strangers-ai-model-confusion-supply-chain-attack/) — Checkmarx Zero
- [Pickle Scanning](https://huggingface.co/docs/hub/en/security-pickle) — Hugging Face
- [Safetensors](https://huggingface.co/docs/safetensors/en/index) — Hugging Face
- [Loading custom models](https://huggingface.co/docs/transformers/en/models) — Hugging Face
- [Serialization semantics](https://docs.pytorch.org/docs/2.14/notes/serialization.html) — PyTorch
