Vulnerabilidades en Hugging Face Diffusers Ponen en Riesgo la Seguridad de AI
Publicado el
Vulnerabilidades Críticas en Hugging Face Diffusers
Recientemente, se han descubierto tres vulnerabilidades de alta gravedad en la biblioteca Diffusers de Hugging Face, las cuales podrían permitir que repositorios de modelos manipulados ejecuten código arbitrario en los sistemas que los cargan. Esta situación representa un riesgo significativo para la cadena de suministro de la inteligencia artificial (IA).
Investigadores de Zafran Labs, Gal Zaban e Ido Shani, explicaron que estas vulnerabilidades logran eludir la función trust_remote_code, diseñada para prevenir la ejecución de código no revisado durante el proceso de carga en las pipelines personalizadas. Estas deficiencias han sido agrupadas bajo el nombre de FaceHugger.
Dada la creciente popularidad de Hugging Face, que se ha convertido en el "GitHub de la era de la IA", las vulnerabilidades en bibliotecas como Diffusers pueden facilitar a los atacantes un acceso extenso, dado que la biblioteca se integra en pipelines de producción, sistemas CI/CD y imágenes de contenedores.
Diffusers es un paquete de Python que proporciona una biblioteca de modelos de difusión previamente entrenados de última generación, utilizados para generar vídeos, imágenes y audio. Según datos de pepy.tech, este paquete ha sido descargado más de 8.1 millones de veces solo en julio de 2026.
Uno de los principales usos de la biblioteca es cargar modelos desde un repositorio de Hugging Face mediante la API DiffusionPipeline, que utiliza un archivo de configuración para inicializar clases específicas de pipeline y componentes, junto con código de pipeline personalizado. El parámetro trust_remote_code es una medida de seguridad que controla si se permite la ejecución de código Python personalizado almacenado en un repositorio de modelos durante el proceso de carga con from_pretrained(). Configurarlo como True permite la ejecución de código personalizado, mientras que False o su omisión impide la ejecución de código no verificado.
El problema fundamental detrás de estas vulnerabilidades radica en que la verificación de confianza se realiza únicamente en la primera fase del proceso de carga. Esto significa que cualquier método que permita al cargador ver código personalizado que la verificación no detectó, elude el mecanismo trust_remote_code. Cada variante ha sido vinculada a un problema de Time-of-Check to Time-of-Use (TOCTOU), donde la descarga del modelo se realiza mediante dos solicitudes HTTP secuenciales en lugar de una operación atómica única, y la puerta de seguridad trust_remote_code solo se aplica a la primera de ellas.
Las vulnerabilidades identificadas son: - CVE-2026-44827 (Puntuación CVSS: 8.8): Permite la inyección de código a través del flujo custom_pipeline desde un repositorio de Hub, incluso con trust_remote_code=False. - CVE-2026-45804 (Puntuación CVSS: 7.5): Una condición de carrera que permite introducir código arbitrario al modificar la configuración entre las llamadas HTTP hf_hub_download y snapshot_download al Hub. - CVE-2026-44513 (Puntuación CVSS: 8.8): Similar a la anterior, permite la inyección de código mediante el flujo custom_pipeline desde un Hub.
Tras la divulgación responsable, estas vulnerabilidades fueron corregidas en la versión 0.38.0 de Diffusers, lanzada a principios de mayo de 2026. Cualquier usuario que invoque DiffusionPipeline.from_pretrained con pipelines personalizadas se encuentra afectado.
Los investigadores subrayaron que el problema subyacente es que los artefactos extraídos de los repositorios de IA se tratan a menudo como datos pasivos, sin tener en cuenta que los archivos de configuración, cargadores y código de pipeline personalizado pueden convertirse silenciosamente en código ejecutable, transformando una carga de modelo rutinaria en un vector de acceso inicial.
Para aquellos que no puedan aplicar un parche inmediato, se han recomendado algunas medidas: - Solo invocar from_pretrained con pretrained_model_name_or_path, custom_pipeline y directorios de instantáneas locales de fuentes completamente confiables y auditadas. - No pasar custom_pipeline apuntando a un repositorio de Hub diferente del pretrained_model_name_or_path principal antes de leer su pipeline.py. - Inspeccionar la instantánea local antes de llamar a from_pretrained para detectar archivos .py inesperados, especialmente en subdirectorios de componentes.
Estas vulnerabilidades destacan la necesidad crítica de tratar los repositorios de modelos de IA como código no confiable, especialmente con el creciente uso de plataformas como Hugging Face en entornos empresariales. Un simple download de modelo puede convertirse fácilmente en un vector para la ejecución de código arbitrario si se eluden las fronteras de seguridad como trust_remote_code.