CVE-2026-1462: qué sistemas afecta y cómo parchear

La vulnerabilidad identificada como CVE-2026-1462 representa una brecha crítica en los mecanismos de seguridad de deserialización de la biblioteca de aprendizaje automático Keras, específicamente en su versión 3.13.0. Esta falla permite a un atacante remoto ejecutar código arbitrario en el contexto de la aplicación víctima durante el proceso de inferencia de un modelo, anulando por completo las garantías que debería ofrecer el parámetro safe_mode=True.

📋 Ficha técnica

CVE ID CVE-2026-1462
Severidad (CVSS) 8.8 – ALTA
Vector CVSS CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Productos afectados Keras 3.13.0. Proyectos y aplicaciones que dependen de esta versión para cargar modelos serializados (.keras).
Exploit público No (en el momento de la publicación)
Fecha publicación 2026-04-13

El descubrimiento, reportado a través de la plataforma huntr, pone en evidencia un fallo de diseño en la clase TFSMLayer, que maneja la interoperabilidad con modelos TensorFlow SavedModels. Desde nuestra perspectiva como analistas, la CVE-2026-1462 es especialmente preocupante porque ataca un flujo de trabajo central en el despliegue de modelos de IA: la carga y ejecución de modelos preentrenados, una operación común en entornos de producción de todo tipo.

Puntos clave de la vulnerabilidad CVE-2026-1462

  • Bypass de safe_mode: El parámetro safe_mode=True, diseñado para prevenir la deserialización de código no fiable, no se aplica correctamente al cargar SavedModels externos referenciados.
  • Ejecución de código arbitrario (RCE): Un atacante puede incrustar una ruta a un SavedModel malicioso dentro de un archivo .keras. Durante la deserialización, se carga y ejecuta sin validación.
  • Alcance de red (Network): El vector de ataque es remoto (AV:N), no requiere privilegios previos (PR:N) y su complejidad es baja (AC:L).
  • Impacto total en la triada CIA: Compromete la confidencialidad, integridad y disponibilidad (C:H/I:H/A:H) del sistema donde se ejecuta el intérprete de Keras.
  • Contexto de ataque: La explotación requiere que la víctima interactúe (UI:R), como cargar un modelo proporcionado por un tercero no confiable.

Sistemas y versiones afectadas por CVE-2026-1462

🤖 ¿Tu empresa ya automatiza con Inteligencia Artificial? En Iberia Intelligence diseñamos e implementamos agentes de IA y flujos de automatización a medida: desde la integración de LLMs en procesos internos hasta la orquestación de agentes autónomos que reducen costes operativos y liberan a tu equipo para tareas de mayor valor.

El epicentro de esta vulnerabilidad es una versión específica de la biblioteca Keras, ampliamente utilizada en el ecosistema de Python para el desarrollo de modelos de aprendizaje profundo. A continuación, detallamos el alcance exacto.

Producto / Biblioteca Versiones vulnerables Versión parcheada / Solución
Keras (paquete principal) Versión 3.13.0 exactamente. Actualizar a una versión posterior a 3.13.0. El commit de reparación es b6773d3decaef1b05d8e794458e148cb362f163f.
Proyectos con dependencias Cualquier aplicación, servicio o pipeline de ML que utilice Keras 3.13.0 para cargar modelos serializados (formato .keras) desde fuentes no confiables. Actualizar la dependencia de Keras en el archivo requirements.txt, pyproject.toml o Pipfile.
Entornos de despliegue Servidores de inferencia, APIs REST/GRPC que exponen endpoints para cargar y predecir con modelos Keras, notebooks en entornos colaborativos (Colab, SageMaker). Reconstruir imágenes de Docker y reimplementar servicios con la versión parcheada.

Nota: Las versiones anteriores a la 3.13.0 no son afectadas por este bug específico, ya que la funcionalidad de TFSMLayer y el manejo de SavedModels en la serialización fue introducida con cambios recientes. No obstante, recomendamos mantener siempre todas las dependencias actualizadas.

Visualización abstracta de una red neuronal, representando el código vulnerable en la biblioteca Keras.
Visualización abstracta de una red neuronal, representando el código vulnerable en la biblioteca Keras. — Foto: BoliviaInteligente vía Unsplash

Análisis técnico de la vulnerabilidad en Keras

Para entender la gravedad del CVE-2026-1462, debemos adentrarnos en su mecánica. El flujo vulnerable reside en el proceso de deserialización de un modelo guardado en formato .keras. Cuando un desarrollador usa keras.saving.load_model(..., safe_mode=True), espera que Keras valide y cargue solo componentes seguros.

El mecanismo de bypass en safe_mode

El fallo se manifiesta en la clase TFSMLayer, una capa puente para integrar modelos TensorFlow SavedModel dentro de un modelo Keras. Durante la deserialización del archivo .keras (que es esencialmente un zip con configuraciones JSON y pesos), se llama al método from_config() de esta clase. Este método, de forma incondicional, reconstruye la capa leyendo un archivo SavedModel desde una ruta de disco que está serializada dentro de la configuración JSON del modelo.

Terminal de comandos mostrando la ejecución del comando de actualización de pip para parchar Keras.
Terminal de comandos mostrando la ejecución del comando de actualización de pip para parchar Keras. — Foto: Clint Patterson vía Unsplash

El problema es triple:

  1. La ruta al SavedModel es controlada por el atacante y se serializa sin sanitización.
  2. El método from_config() no valifica si el archivo referenciado es de confianza, incluso cuando safe_mode=True.
  3. El SavedModel cargado puede contener operaciones de TensorFlow (ops) arbitrarias, incluyendo funciones personalizadas en Python (@tf.function) que ejecutan código en el momento de la inferencia.

Así, un atacante puede crear un archivo .keras malicioso que, al ser cargado por la víctima, fuerza a Keras a cargar un SavedModel externo y hostil, logrando la ejecución de código en el contexto del proceso de Python.

Impacto en entornos de producción de machine learning

El escenario de ataque más plausible implica el compromiso de un modelo aparentemente legítimo. Imaginad un repositorio público de modelos, un marketplace de IA o un simple intercambio entre investigadores. Un actor de amenaza puede tomar un modelo popular, inyectar la configuración maliciosa en su archivo .keras y redistribuirlo. Cuando un equipo de desarrollo o un sistema automatizado lo cargue para realizar una predicción, se activará la carga del SavedModel remoto, otorgando al atacante un punto de apoyo en el servidor.

Este tipo de vulnerabilidad, denominada a veces «Model Supply Chain Attack», es particularmente insidiosa porque el artefacto principal (el modelo) puede seguir funcionando correctamente para su tarea prevista, enmascarando la actividad maliciosa que ocurre en segundo plano durante la inferencia.

Cómo parchear CVE-2026-1462: guía paso a paso

La mitigación primaria y más efectiva es actualizar inmediatamente la biblioteca Keras a una versión que incluya el commit de reparación. El equipo de Keras ha corregido el fallo asegurando que, cuando safe_mode=True, no se carguen SavedModels externos y se valide estrictamente el contenido.

Seguid estos pasos para asegurar vuestros entornos:

Concepto de protección y escudo de ciberseguridad, ilustrando las medidas de mitigación.
Concepto de protección y escudo de ciberseguridad, ilustrando las medidas de mitigación. — Foto: Rostislav Uzunov vía Unsplash
  1. Identificar la versión instalada: Primero, verificad si estáis corriendo la versión vulnerable.
    python -c "import keras; print(keras.__version__)"

    Si el resultado es 3.13.0, debéis proceder con la actualización.

  2. Actualizar usando pip (entornos globales o virtuales): Ejecutad el siguiente comando para obtener la última versión estable que contiene el parche.
    pip install --upgrade keras

    Para mayor precisión y evitar posibles regresiones, podéis especificar una versión posterior conocida (ej., pip install keras>=3.13.1).

  3. Actualizar en entornos Docker: Reconstruid vuestras imágenes modificando la línea correspondiente en el Dockerfile.
    RUN pip install --upgrade keras

    Luego, reimplementad los servicios afectados.

  4. Verificar entornos de CI/CD y orquestadores: Revisad los scripts de despliegue y los archivos de definición de servicios (Kubernetes Helm charts, Terraform, etc.) para asegurar que también referencian la versión actualizada.
  5. Revisar modelos en producción: Si almacenáis modelos serializados (.keras) cargados desde fuentes externas antes de aplicar el parche, considerad volver a generarlos o al menos volver a cargarlos y guardarlos con la nueva versión segura para eliminar cualquier configuración maliciosa potencial.

Medidas adicionales de mitigación

Si la actualización inmediata no es viable por razones de compatibilidad, existen medidas compensatorias que pueden reducir la superficie de ataque. Sin embargo, insistimos en que estas son soluciones temporales y el parche sigue siendo obligatorio.

  • Restringir el uso de `safe_mode=False`: Aplicad políticas estrictas en vuestro código base y revisiones de código para prohibir el uso de load_model(..., safe_mode=False) en producción, especialmente cuando se cargan modelos de origen no controlado.
  • Sanitización de entrada de modelos: Implementad un proceso de cuarentena y análisis para cualquier archivo .keras procedente de fuentes externas antes de cargarlo en sistemas críticos. Podéis analizar el contenido del archivo zip (especialmente el config.json) en busca de referencias a rutas de archivos sospechosas o URLs.
  • Ejecución en contenedores con permisos mínimos: Aseguraros de que los procesos que ejecutan Keras lo hacen con un usuario sin privilegios (non-root) y en un entorno de contenedor con capacidades reducidas, limitando así el daño potencial de una explotación exitosa.
  • Segregación de redes: Aislad los servidores de inferencia de modelos en segmentos de red restringidos, sin acceso saliente a Internet o a recursos internos sensibles, para dificultar la extracción de datos o el movimiento lateral por parte del atacante.
  • Monitorización de actividad anómala: Configurad reglas en vuestro SIEM o sistema de monitorización para alertar sobre la carga inusual de archivos desde el sistema de ficheros por parte del proceso de Python/Keras, o sobre intentos de conexión de red salientes iniciados desde el servicio de inferencia.
✅ Lista de verificación post-parche:

  • Verificad que import keras; print(keras.__version__) muestra una versión superior a 3.13.0.
  • Ejecutad vuestras pruebas unitarias e integrales, especialmente las que cargan modelos serializados, para confirmar que no hay regresiones funcionales.
  • Consultad la referencia oficial en el NVD (CVE-2026-1462) y el commit de GitHub para confirmar que no hay nuevas actualizaciones o workarounds.

La CVE-2026-1462 sirve como un recordatorio potente de que los pipelines de machine learning son parte integral de la superficie de ataque de una organización. La deserialización de datos complejos, como los modelos de IA, debe tratarse con el mismo nivel de escepticismo y control que cualquier otra entrada de usuario. La actualización rápida y la adopción de prácticas de seguridad en el ciclo de vida del desarrollo de ML (MLSec) son, a día de hoy, no solo recomendables, sino imprescindibles.

Infraestructura de centro de datos donde se despliegan modelos, enfatizando la necesidad de segmentación de red.
Infraestructura de centro de datos donde se despliegan modelos, enfatizando la necesidad de segmentación de red. — Foto: Kier in Sight Archives vía Unsplash

Referencias y recursos oficiales


Automatiza tu empresa con Agentes de IA — diseño e implementación a medida

En Iberia Intelligence construimos agentes de IA y workflows de automatización adaptados a tu negocio: análisis de procesos, selección de herramientas, integración y formación del equipo. Resultados medibles desde el primer mes.

→ Solicita información sin compromiso

Deja un comentario