A CVE-2026-44827 permite que um invasor execute código arbitrário ao carregar um modelo Hugging Face Diffusers, mesmo que a flag trust_remote_code esteja desativada. Pesquisadores nomearam a falha como “FaceHugger” e a rastrearam até uma condição de corrida (race condition) no processo de carregamento de modelos em duas fases da biblioteca. Qualquer pipeline que baixe modelos do hub pode ser afetado.
Por que a vulnerabilidade é importante
O Diffusers alimenta modelos de texto para imagem e outros modelos de difusão. Em julho de 2026, registrou 8,1 milhões de downloads, portanto, inúmeros jobs de CI/CD, imagens de contêiner e serviços de inferência corporativos dependem dele. O bug derrota o principal mecanismo de segurança (trust_remote_code) que os desenvolvedores ativam para bloquear código Python não confiável enviado junto com um modelo.
Como o bypass funciona
- Carregamento em duas fases: O Diffusers primeiro busca uma configuração do modelo e, em seguida, uma segunda requisição baixa os pesos do modelo e qualquer código associado.
- Condição de corrida: A verificação de segurança que inspeciona a primeira requisição não se estende à segunda.
- Inserção de payload: Um invasor que controla a segunda requisição injeta código malicioso que a biblioteca executa posteriormente, contornando completamente o controle de confiança.
Como a verificação analisa apenas a requisição inicial, desativar o trust_remote_code proporciona uma falsa sensação de proteção.
Medidas imediatas para desenvolvedores
- Fixe a versão do Diffusers no
requirements.txtou no seu arquivo de lock para evitar atualizações acidentais para uma versão vulnerável. - Evite o download de modelos em tempo real (on-the-fly) em produção. Baixe os modelos para um repositório de artefatos confiável (ex: um bucket S3 interno) e carregue-os a partir de lá.
- Audite os repositórios de modelos antes do uso. Verifique se os arquivos de código do modelo correspondem aos hashes esperados ou se vêm de uma fonte verificada.
- Aplique controles de saída de rede (egress) para que agentes de build e servidores de inferência não consigam acessar o hub público do Hugging Face, a menos que você permita.
- Execute o carregamento de modelos dentro de contêineres isolados ou sandboxes com privilégios mínimos, limitando o impacto da execução de código malicioso.
Conclusão:
O bug FaceHugger mostra que desativar o trust_remote_code não é suficiente. Até que você atualize o Diffusers e reforce seu pipeline de ingestão de modelos, cada download de modelo remoto continua sendo um ponto de entrada potencial para código malicioso.
