Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
SE6013_Project — CVE-2026-4372: Modelo de amenaza, análisis de causa raíz, replicación y detección | Kitploit
Herramientas/GitHubGitHub/alvin21mfmlai/se6013_project
Herramientas DefensivasAnálisis EstáticoAnálisis de VulnerabilidadesSeguridad de Cadena de SuministroPapers e InvestigaciónAprendizaje y EducaciónSeguridad de IA
GitHubalvin21mfmlai/se6013_project

SE6013_Project

CVE-2026-4372: Modelo de amenaza, análisis de causa raíz, replicación y detección

Ver Repositorio
hace 16 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-4372: Modelo de amenazas, causa raíz y defensa

Análisis defensivo de un error crítico de ejecución remota de código (RCE) en transformers de Hugging Face.


Contenido

  1. La vulnerabilidad de un vistazo
  2. Confirmar primero a partir de fuentes primarias
  3. Modelo de amenazas
  4. Causa raíz
  5. Defensa
  6. Detección

1. La vulnerabilidad de un vistazo

CampoValor
IdentificadorCVE-2026-4372 / GHSA-29pf-2h5f-8g72
Componentetransformers de Hugging Face
ClaseEjecución remota de código (CWE-94, inyección de código)
Punto de entradaAutoModelForCausalLM.from_pretrained(), cuando se carga un modelo
MecanismoUn ajuste de atención en el config.json del modelo (attn_implementation / _attn_implementation_internal) hace que la biblioteca descargue y ejecute código del atacante
Propiedad claveOmite trust_remote_code=False, el ajuste en el que los usuarios confían para impedir exactamente esto
Corregido entransformers 5.3.0

Un usuario que deliberadamente dejó trust_remote_code=False para mantenerse seguro seguía estando expuesto.


2. Confirmar primero a partir de fuentes primarias ⚠️

Verifique los detalles a continuación contra las fuentes oficiales antes de tratarlos como definitivos:

  • GHSA-29pf-2h5f-8g72 (aviso de GitHub): versiones afectadas y resumen.
  • Entrada de NVD para CVE-2026-4372: puntuación de gravedad y tipo de debilidad.
  • El commit de corrección enlazado desde el aviso: muestra exactamente qué ruta de código se cerró.

Hay dos descripciones del desencadenante en circulación:

  1. Un campo de atención en config.json (_attn_implementation_internal).
  2. El paquete kernels, a menudo instalado mediante transformers[all].

Lo más probable es que sean la misma ruta: el campo de atención nombra un repositorio del Hub, y el paquete kernels descarga y ejecuta código desde él. Trate los nombres de campo aquí como provisionales hasta que el commit de corrección los confirme.


3. Modelo de amenazas

3.1 Cómo se carga un modelo

[ Model repo on the Hub ]       untrusted source
        │  config.json, tokenizer, weights, (code)
        ▼
[ Download to local cache ]
        ▼
[ Read config.json ]            settings become a config object
        ▼
[ Pick model class + attention type ]
        ▼
[ Build model, load weights ]
        ▼
[ Model runs in the user's process, with the user's permissions ]

3.2 Límites de confianza

#LímiteProtección que debería aplicarse
TB-1Hub → disco localRepositorios de confianza, fijación a un commit concreto
TB-2Archivo de configuración → objeto de configuraciónPermitir solo valores conocidos y seguros
TB-3Objeto de configuración → código en ejecucióntrust_remote_code
TB-4Modelo → sistema operativoSandbox, mínimo privilegio

El fallo es una vulneración en TB-3: un valor del archivo de configuración llegó a la ejecución de código sin pasar la comprobación de trust_remote_code.

3.3 Cómo una víctima acaba con el modelo de un atacante

  • Nombre de repositorio que se parece, por ejemplo una copia casi idéntica del nombre de un modelo popular.
  • Editor malicioso o comprometido que publica una versión envenenada.
  • Un tutorial, notebook o dependencia que apunta a un repositorio malicioso.
  • Versión sin fijar: un repositorio que era seguro ayer sirve hoy un archivo malicioso.

En todos los casos la víctima solo ejecuta la llamada normal, AutoModelForCausalLM.from_pretrained("<repo-id>").


4. Causa raíz

4.1 La protección estaba en la ruta equivocada

trust_remote_code protege una forma de ejecutar código del repositorio: los archivos personalizados modeling_*.py. La configuración de atención era una segunda forma que nunca pasaba por esa protección.

     untrusted config.json attention setting
                    │
                    ▼
        "pick attention type" logic
                    │                  never checks:
                    ✗ ─────────────▶   trust_remote_code
                    ▼
     download + run code from the Hub (via `kernels`)

4.2 Factores contribuyentes

  1. Dos rutas hacia la misma acción peligrosa, solo una de ellas protegida.
  2. Una configuración que seleccionaba código fue tratada como datos simples, con el nivel de confianza de un número.
  3. Un campo "interno" (prefijo _) aún podía establecerse desde un archivo no confiable.
  4. Un paquete opcional (kernels) habilitaba silenciosamente el ataque cuando estaba instalado, por ejemplo mediante transformers[all].

4.3 Lección

Protege la acción peligrosa, no una sola ruta hacia ella. Cada ruta que pueda conducir a "ejecutar código" debe pasar por la misma comprobación.


5. Defensa

La defensa es un único script autocontenido, defence/safe_load.py. Su función safe_from_pretrained() reemplaza a from_pretrained() y ejecuta cuatro comprobaciones antes de que se cargue ningún modelo. Si una falla, lanza UnsafeModelLoad y no se carga nada.

#ComprobaciónQué hace
1VersiónRechaza si transformers es anterior a 5.3.0. Esta es la solución real.
2KernelsEn una versión antigua, rechaza si el paquete kernels está instalado, ya que el ataque lo necesita.
3ConfiguraciónLee los archivos de configuración del modelo y rechaza si contienen una configuración riesgosa (ver abajo). Los modelos del Hub se comprueban y cargan en el mismo commit.
4Código remotoSiempre establece trust_remote_code=False. Solo es una buena práctica: este CVE lo omite.

Una versión antigua se rechaza en la comprobación 1. Las comprobaciones 2 y 3 solo se ejecutan en una versión antigua si la opción exclusiva de laboratorio allow_vulnerable_env=True está establecida.

Qué bloquea la comprobación 3:

  • Una configuración de atención (attn_implementation, _attn_implementation, _attn_implementation_internal) que no esté integrada. Solo se permiten eager, sdpa, flash_attention_2, flash_attention_3 y flex_attention, por lo que un valor como attacker-org/evil-kernel queda bloqueado, incluso dentro de una subconfiguración anidada.
  • Los campos _attn_implementation_internal, auto_map y custom_pipelines.
  • Archivos de configuración que no se pueden leer.
  • Una configuración pasada directamente con config=, ya que omitiría la comprobación.

Para los modelos del Hub, solo se descargan los archivos de configuración, nunca los pesos ni el código. Se descargan en un commit fijo, y el modelo se carga luego desde ese mismo commit, por lo que los archivos no pueden intercambiarse entre la comprobación y la carga. Tras revisar las advertencias, una persona puede anular la comprobación 3 con accept_findings=True.

SituaciónQué detiene el ataque
transformers 5.3.0 o posteriorComprobación 1
Versión antigua, kernels instaladoComprobación 2
Versión antigua, configuración riesgosa en el configComprobación 3
Repositorio modificado después de ser comprobadoComprobación 3 (mismo commit comprobado y cargado)

Limitación: la comprobación 3 solo conoce las configuraciones enumeradas arriba, por lo que no puede detectar un nuevo ataque. Actualizar a transformers>=5.3.0 es la única solución completa.


6. Detección

Descargar herramienta