CVE-2026-39987 vulnerabilidad Marimo: Una vulnerabilidad crítica, identificada como CVE-2026-39987, en la herramienta de notebooks Python de código abierto Marimo, ha sido explotada activamente en la naturaleza en menos de 10 horas desde su divulgación pública. Con una puntuación CVSS de 9.3, este fallo de ejecución remota de código (RCE) pre-autenticación representa un riesgo severo para entornos de ciencia de datos y análisis que utilicen versiones vulnerables. Según el equipo de investigación de amenazas de Sysdig, los atacantes construyeron un exploit funcional a partir de la simple descripción del aviso, demostrando una velocidad y habilidad que redefine los tiempos de respuesta defensiva.
| CVE ID | CVE-2026-39987 |
| Severidad (CVSS) | 9.3 – CRÍTICA |
| Vector CVSS | No disponible |
| Productos afectados | Marimo (notebook Python de código abierto) |
| Exploit público | Sí (exploit activo en la naturaleza) |
| Fecha publicación | 8 de abril de 2026 |
Puntos clave sobre la vulnerabilidad CVE-2026-39987 en Marimo
- RCE Pre-Autenticación: El endpoint WebSocket
/terminal/wsomite por completo la validación de autenticación, permitiendo a un atacante remoto sin credenciales obtener una shell PTY completa. - Explotación ultrarrápida: Los primeros intentos de explotación se observaron a las 9 horas y 41 minutos de la publicación del aviso, y el robo de credenciales se completó en menos de 3 minutos.
- Software de nicho, riesgo elevado: Aunque Marimo es una herramienta con una comunidad más reducida (~20k estrellas en GitHub), los atacantes monitorizan sus vulnerabilidades con la misma diligencia.
- Modus operandi manual: La actividad observada sugiere un operador humano y metódico, enfocado en el robo de credenciales (.env, claves SSH) sin desplegar malware de persistencia inicial.
- Tendencia creciente: Este caso sigue a otros similares, como el CVE-2026-33017 en Langflow, y marca una tendencia hacia ventanas de explotación que se miden en horas, no en días.
Análisis técnico de la vulnerabilidad CVE-2026-39987
El fallo reside en una inconsistencia de seguridad dentro de la arquitectura de endpoints WebSocket de Marimo. Mientras que otros endpoints, como /ws, realizan una llamada correcta a la función validate_auth(), el endpoint /terminal/ws solo verifica el modo de ejecución y la compatibilidad de la plataforma antes de aceptar conexiones. Esta omisión crea una puerta trasera de acceso total al sistema, sin requerir ningún tipo de autenticación. CVE-2026-39987 vulnerabilidad Marimo es clave para entender el alcance de esta amenaza.
En la práctica, un atacante puede conectarse directamente a este endpoint WebSocket y recibir una terminal interactiva (PTY) en el servidor que ejecuta Marimo. Esto no solo permite la ejecución arbitraria de comandos, sino que otorga al atacante un punto de apoyo de alto privilegio desde el que escalar, moverse lateralmente y, como se ha observado, robar credenciales sensibles almacenadas en el entorno. CVE-2026-39987 vulnerabilidad Marimo es clave para entender el alcance de esta amenaza.
Por qué la explotación de CVE-2026-39987 fue tan rápida
Lo más preocupante para los equipos de ciberdefensa es la velocidad de la campaña. Los investigadores de Sysdig destacan que no existía un proof-of-concept (PoC) público en el momento de los primeros ataques. El atacante construyó el exploit funcional leyendo únicamente la descripción técnica del aviso de seguridad. Esta capacidad de «armar» una vulnerabilidad a partir de una descripción textual en cuestión de horas apunta a un alto nivel de habilidad y, potencialmente, al uso de herramientas de inteligencia artificial que aceleran el proceso de desarrollo de exploits.
Sistemas y versiones afectadas por CVE-2026-39987
La vulnerabilidad afecta a todas las versiones de Marimo anteriores a la que incluye el parche. Es fundamental verificar la versión instalada en tu entorno. A continuación, detallamos el panorama de afectación.
| Producto | Versiones vulnerables | Versión parcheada |
|---|---|---|
| Marimo | Todas las versiones hasta la 0.20.4 inclusive. | Versión 0.23.0 y superiores. |
Si ejecutas Marimo en modo servidor (por ejemplo, mediante marimo run o desplegado como una aplicación web), tu sistema es potencialmente vulnerable si no está actualizado a la versión corregida.
Indicadores de compromiso (IoCs) y detección
Los investigadores han compartido indicadores clave para detectar un posible compromiso. Monitoriza tus logs en busca de conexiones entrantes al puerto que aloja Marimo (por defecto el 2718) seguidas de acceso al path /terminal/ws. Además, busca actividad inusual de procesos hijos generados desde el proceso principal de Marimo, intentos de lectura de archivos como .env, id_rsa o known_hosts, y conexiones salientes SSH o de exfiltración de datos iniciadas desde el mismo host.
Cómo parchear CVE-2026-39987: guía paso a paso
La mitigación principal y más efectiva es actualizar Marimo a la versión 0.23.0 o posterior. El proceso es directo si utilizas el gestor de paquetes pip. Te guiamos paso a paso.
- Verifica tu versión actual: En el entorno donde ejecutas Marimo, usa el siguiente comando para conocer la versión instalada.
pip show marimo | grep Version - Actualiza a la última versión estable: Ejecuta el comando de actualización con pip. Es recomendable hacerlo en un entorno virtual aislado.
pip install --upgrade marimo>=0.23.0 - Reinicia la aplicación: Detén cualquier instancia en ejecución de Marimo (por ejemplo, el servidor iniciado con
marimo run) y vuelve a iniciarla para que los cambios surtan efecto. - Verifica la actualización: Repite el paso 1 para confirmar que ahora se ejecuta la versión 0.23.0 o superior.
marimo --version
Si Marimo forma parte de una imagen de Docker o está integrado en un pipeline CI/CD, asegúrate de reconstruir la imagen o actualizar la referencia en tus archivos de configuración (por ejemplo, en un requirements.txt o pyproject.toml).
Medidas adicionales de mitigación para CVE-2026-39987
Si la actualización inmediata no es viable, es imperativo aplicar medidas compensatorias para reducir la superficie de ataque. Estas medidas no sustituyen al parche, pero pueden servir como protección temporal.
- Restricción de acceso a la red: Configura reglas de firewall (por ejemplo, con iptables o un firewall de red) para restringir el acceso al puerto de Marimo (por defecto 2718/TCP) únicamente a direcciones IP de confianza o rangos de red estrictamente necesarios. Nunca expongas Marimo directamente a Internet.
- Uso de un proxy inverso con autenticación: Sitúa Marimo detrás de un proxy inverso como Nginx o Apache. Configura autenticación HTTP básica o mediante certificados de cliente en el propio proxy para añadir una capa de autenticación antes de que las peticiones lleguen a la aplicación vulnerable.
- Deshabilitar el endpoint terminal (si es posible): Investiga si la funcionalidad de terminal es imprescindible en tu flujo de trabajo. Si no lo es, consulta la documentación de Marimo para ver si existe una configuración que permita desactivar este módulo específico hasta que se pueda aplicar el parche.
- Monitorización y segmentación: Aísla los entornos que ejecutan Marimo de otras redes sensibles. Implementa una monitorización agresiva de logs de acceso al endpoint
/terminal/wsy de creación de procesos inusuales desde el servicio.
- He verificado que la versión de Marimo es la 0.23.0 o superior usando
marimo --version. - He reiniciado completamente todos los servidores o servicios que ejecutaban Marimo.
- He revisado los logs del sistema y de la aplicación en busca de intentos de acceso sospechosos previos al parche.
- He consultado el aviso oficial en el National Vulnerability Database (NVD) para cualquier actualización.
Lecciones para la ciberdefensa tras CVE-2026-39987
Este incidente refuerza varias lecciones críticas para los equipos de seguridad. Primero, la noción de «seguridad por oscuridad» o de que un software de nicho es menos atacado es completamente falsa en 2026. Los actores de amenazas automatizan la monitorización de avisos de seguridad a gran escala, probablemente ayudados por IA, y no discriminan por el tamaño del proyecto.
En segundo lugar, la velocidad de explotación ha alcanzado un umbral donde los procesos manuales de parcheo son insuficientes. Se requiere una alta automatización en la gestión de vulnerabilidades (Vulnerability Management) y una capacidad de respuesta a incidentes que pueda activarse en ventanas de tiempo de horas, no días.
Finalmente, el caso subraya un dilema para los investigadores: los avisos detallados son esenciales para que los administradores entiendan el riesgo, pero también arman a los atacantes. La respuesta no es ocultar información, sino acelerar drásticamente el ciclo de parcheo desde el lado de la defensa y asumir que el exploit será construido casi de inmediato.
El futuro de la respuesta a vulnerabilidades críticas
Como analistas, observamos que la línea temporal tradicional (divulgación → desarrollo de PoC → ataques masivos) se ha colapsado. Ahora, la explotación puede ser casi contemporánea a la divulgación, especialmente para fallos con vectores de ataque claros como este RCE pre-autenticación. Las organizaciones deben integrar sus fuentes de inteligencia sobre amenazas (Threat Intelligence) directamente con sus sistemas de parcheo y despliegue para reducir a minutos, no a horas, el tiempo de remediación.
Recursos y fuentes oficiales:
¿Tu organización está preparada ante las ciberamenazas?
En Iberia Intelligence combinamos Ciberinteligencia y Automatización con IA para anticipar amenazas, proteger activos digitales y blindar la operativa de empresas e instituciones hispanohablantes.