# Los archivos de modelos de Hugging Face pueden ejecutar código oculto

Published: 2026-10-12

Los paquetes de modelos maliciosos pueden ejecutar código durante una carga insegura. Tres ejemplos documentados explican los shells inversos de Pickle, el comportamiento del escáner de archivos dañados y la confusión de nombres de modelos demostrada en investigaciones, con límites claros en las afirmaciones de robo de credenciales.

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

## Qué cubre este vídeo

- Los pesos de modelos numéricos, la serialización ejecutable y el código de repositorio personalizado son cosas diferentes.
- JFrog y ReversingLabs documentaron cargas útiles de shell inverso; sus informes seleccionados no establecen el robo de credenciales de víctimas nombradas.
- La Confusión de Modelos de Checkmarx fue una demostración de investigación que requería un modelo remoto coincidente y una carga insegura.
- Prefiera safetensors y cargadores parcheados, revise y fije el código personalizado, y aísle los paquetes desconocidos de secretos personales y acceso de red innecesario.

## Capítulos

- 0:00 ¿Cómo puede una descarga de modelo invitar a un huésped?
- 0:35 ¿Cómo ejecuta un cargador las instrucciones del paquete?
- 1:09 ¿Qué secretos están al alcance del proceso?
- 1:38 ¿Por qué una ruta local faltante puede convertirse en un modelo remoto?
- 1:55 ¿Cómo evadieron los paquetes defectuosos el antiguo escáner?
- 2:44 ¿Qué mantiene la clave fuera del alcance del huésped?
- 3:12 ¿Por qué debería sellar esto con la etiqueta "NEEDS REVIEW"?

## Transcripción traducida

Traducido de la narración original en inglés. El audio y los subtítulos disponibles están controlados por YouTube.

### ¿Cómo puede una descarga de modelo invitar a un huésped?

0:00 Un archivo de modelo son solo números en el disco. Cargar un paquete malicioso de Hugging Face abrió un shell remoto, lo cual es una interpretación ambiciosa de la IA local. ¿Cómo se convierte la carga en ejecución? ¿A qué secretos puede acceder? ¿Qué lo detiene realmente? Y tenga en cuenta un enigma. Un modelo puede fallar al cargarse después de que la parte peligrosa ya haya ocurrido.

0:18 Esto es The Daily Diff, "bajo el capó". Hugging Face es una plataforma para compartir modelos de aprendizaje automático, conjuntos de datos y aplicaciones. Los pesos del modelo son los números aprendidos. Un repositorio también puede contener configuración y código Python. El peligro aquí es que el empaquetado ejecutable entre en su ordenador cuando lo carga. Pickle almacena objetos Python con instrucciones para reconstruirlos.

### ¿Cómo ejecuta un cargador las instrucciones del paquete?

0:37 Un cargador inseguro puede seguir esas instrucciones y llamar a funciones mientras desempaqueta. Descargar los bytes coloca el paquete en su disco. La deserialización lo abre. En algún lugar, un formato de archivo ha sido promovido a administrador de sistemas no remunerado. JFrog informó de Goober Two en febrero de dos mil veinticuatro. Su carga útil de Pickle abrió un shell inverso, conectándose hacia afuera para ofrecer acceso remoto por comandos. El repositorio fue eliminado. JFrog también encontró pistas que sugerían la participación de investigadores,

1:02 por lo que la atribución es incierta. El huésped no deseado fue documentado. El robo de credenciales de víctimas reales no fue establecido.

### ¿Qué secretos están al alcance del proceso?

1:09 El código que se ejecuta como su usuario puede leer todo lo que ese proceso pueda leer. Una clave de nube montada o un token accesible se convierte en un posible objetivo. Enviar esto también necesita una ruta de red que funcione. Los pesos numéricos por sí solos no tienen poderes mágicos de credenciales. Sus permisos proporcionan la parte interesante de la tarjeta del modelo. Hay otra puerta. Algunos modelos le piden que confíe en el código remoto, lo que autoriza a Python del repositorio. Los archivos "safetensor" pueden estar junto a ese código.

1:32 Comprobar el formato de peso cubre una entrada, mientras que el código del repositorio todavía espera que le entregue una insignia de visitante.

### ¿Por qué una ruta local faltante puede convertirse en un modelo remoto?

1:38 Checkmarx demostró la Confusión de Modelos. Una ruta de modelo local faltante podría resolverse a un repositorio público con un nombre coincidente. Combine eso con el código remoto habilitado, y el paquete incorrecto puede ejecutarse. Esta fue una demostración de investigación que involucró una muestra de una empresa no nombrada, corregida en un día. Una carpeta faltante adquirió un propietario. ReversingLabs informó de dos muestras en febrero de dos mil veinticinco,

### ¿Cómo evadieron los paquetes defectuosos el antiguo escáner?

1:58 llamando a la técnica "nullify AI". Ambas contenían shells inversos. Su empaquetado "seven zip" bloqueó la carga ordinaria de PyTorch, por lo que esta ruta requería extracción y deserialización insegura. Los flujos de Pickle rotos también expusieron un punto ciego del escáner. Un escaneo fallido merece investigación antes de que alguien abra el paquete. En la prueba inofensiva de los investigadores, las instrucciones escribieron un archivo antes de que el cargador

2:18 alcanzara la parte rota y generara un error. Imagine abrir un paquete, liberar al mapache y luego notar que la etiqueta de envío no es válida. El mensaje de error llega con una gramática excelente y un momento terrible. Hugging Face eliminó las muestras reportadas en veinticuatro horas y cambió el escáner. Ese hallazgo específico impulsó una solución. Un escaneo de seguridad es una evidencia útil, y tratar cada error del escáner como un certificado de buena salud sigue siendo una interpretación notablemente generosa del fracaso.

2:43 Prefiera los "safetensors" y los cargadores parcheados actuales.

### ¿Qué mantiene la clave fuera del alcance del huésped?

2:46 PyTorch redujo su cargador predeterminado a partir de la versión dos punto seis. Revise el código personalizado y fije la revisión revisada. Ejecute paquetes desconocidos de forma aislada sin claves personales, con acceso de red restringido. Un contenedor lleno de credenciales montadas es una cesta de regalo con espacios de nombres. Ese enigma inicial tiene una respuesta. El fallo de carga le indica dónde se detuvo la ejecución. Las instrucciones anteriores ya pueden haberse ejecutado.

3:08 Mantenga los secretos fuera de su alcance antes de abrir el paquete. Veredicto, "bajo el capó".

### ¿Por qué debería sellar esto con la etiqueta "NEEDS REVIEW"?

3:16 cargador. La descarga gratuita debería venir con un modelo, y la lista de invitados debería seguir siendo mi decisión. Si prefiere leer esto en lugar de oírme decirlo, la diferencia llega a su bandeja de entrada todas las mañanas, gratis en "the daily diff dot dev", enlace a continuación. Y esa es la diferencia de hoy. Soy Niko de Axrisi. Fusionar con responsabilidad.

## Fuentes

- [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
