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

La vulnerabilidad CVE-2026-39888 en el sistema multi-agente PraisonAI, clasificada como crítica con una puntuación CVSS de 9.9, permite a un atacante remoto autenticado escapar del entorno sandbox y ejecutar código arbitrario en el sistema subyacente. Analizamos en detalle su vector de ataque, los productos afectados y proporcionamos una guía de remediación paso a paso.

📋 Ficha técnica

CVE ID CVE-2026-39888
Severidad (CVSS) 9.9 – CRÍTICA
Vector CVSS CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Productos afectados PraisonAI (versiones anteriores a 1.5.115)
Exploit público No
Fecha publicación 2026-04-08
⚠️ ALERTA DE SEGURIDAD: Aunque no se han detectado explotaciones activas en la naturaleza, la gravedad intrínseca de CVE-2026-39888 (CVSS 9.9) y la relativa facilidad de explotación exigen una aplicación inmediata del parche en todos los entornos que utilicen PraisonAI.

Puntos clave de CVE-2026-39888:

  • Vulnerabilidad de escape de sandbox en la función execute_code() de PraisonAI.
  • Permite a un usuario autenticado con privilegios bajos ejecutar código Python arbitrario en el host.
  • Afecta a todas las versiones de PraisonAI anteriores a la 1.5.115.
  • El parche ya está disponible y debe aplicarse como prioridad máxima.
  • No se requieren interacciones del usuario para explotar la vulnerabilidad.

Sistemas y versiones afectadas por CVE-2026-39888

Esta vulnerabilidad impacta exclusivamente en el framework PraisonAI, una herramienta para crear y gestionar equipos de agentes de inteligencia artificial. La raíz del problema reside en una inconsistencia entre las listas de bloqueo utilizadas en dos rutas de ejecución distintas dentro del sandbox de código Python.

Producto Versiones vulnerables Versión parcheada
PraisonAI Todas las versiones < 1.5.115 1.5.115 y superiores

Si utilizas PraisonAI como dependencia en un proyecto Python o lo tienes desplegado como servicio independiente, debes verificar inmediatamente la versión instalada. Puedes hacerlo ejecutando el siguiente comando en tu entorno:

Interfaz de control de versiones de software para identificar versiones vulnerables.
Interfaz de control de versiones de software para identificar versiones vulnerables. — Foto: Liam Briese vía Unsplash
pip show praisonai

Explicación técnica: cómo se explota CVE-2026-39888

El fallo se localiza en el módulo praisonaiagents.tools.python_tools, concretamente en la función execute_code(). Esta función, diseñada para ejecutar código proporcionado por el usuario de forma segura, opera principalmente en dos modos: ejecución directa y ejecución en un subproceso (subprocess) con sandbox.

El problema de seguridad surge de una divergencia crítica entre las listas de atributos de Python bloqueados (blocked_attrs) en cada una de estas rutas. Mientras la ruta de ejecución directa bloquea más de 30 atributos potencialmente peligrosos, la ruta del subproceso—que se activa con el parámetro por defecto sandbox_mode="sandbox"—solo bloquea 11.

Código Python en un editor, ilustrando el concepto de sandbox y escape.
Código Python en un editor, ilustrando el concepto de sandbox y escape. — Foto: Rubaitul Azad vía Unsplash

La cadena de atributos que desbloquea el sandbox

Los cuatro atributos ausentes en la lista del subproceso resultan ser la clave para el escape: __traceback__, tb_frame, f_back y f_builtins. Un atacante puede encadenarlos a partir de una excepción capturada dentro del sandbox. Esta maniobra le permite atravesar los marcos de ejecución (frames) y acceder al diccionario de builtins real del proceso wrapper, el cual contiene la función exec.

Una vez obtenido el control de exec bajo un nombre no bloqueado, el atacante puede ejecutar cualquier código Python con los mismos privilegios del proceso de PraisonAI, anulando por completo todas las capas de seguridad restantes. El vector CVSS refleja este alto impacto: confidencialidad, integridad y disponibilidad comprometidas a nivel del sistema, con alcance cambiado (S:C) porque la vulnerabilidad puede afectar a otros componentes vinculados.

Cómo parchear PraisonAI: guía paso a paso

El equipo de desarrollo de PraisonAI ha lanzado la versión 1.5.115 que corrige esta vulnerabilidad igualando las listas de bloqueo entre ambas rutas de ejecución. La actualización es obligatoria. Aquí detallamos el proceso de parcheado según tu método de instalación.

Actualización mediante pip (entornos Python)

Si instalaste PraisonAI usando pip, el proceso es directo. Te recomendamos realizarlo en un entorno virtual previamente para evitar conflictos con otras dependencias.

Terminal mostrando un comando de actualización de software en ejecución.
Terminal mostrando un comando de actualización de software en ejecución. — Foto: Zulfugar Karimov vía Unsplash
pip install --upgrade praisonai==1.5.115

Tras la actualización, verifica que la nueva versión está activa:

python -c "import praisonai; print(praisonai.__version__)"

El resultado debe ser 1.5.115 o superior.

Parche en despliegues con Docker o contenedores

Si ejecutas PraisonAI en un contenedor, deberás reconstruir la imagen asegurándote de que la definición (Dockerfile o similar) especifica la versión parcheada. Actualiza la línea correspondiente en tu Dockerfile:

RUN pip install praisonai==1.5.115

Posteriormente, reconstruye la imagen y vuelve a desplegar el contenedor. No olvides detener y eliminar la instancia vulnerable.

Medidas adicionales de mitigación

En escenarios donde la aplicación inmediata del parche no sea viable—por ejemplo, en entornos de producción críticos que requieren ventanas de mantenimiento—existen workarounds que pueden reducir la superficie de ataque. Estas medidas son temporales y no sustituyen al parche.

Restringir el acceso de red al servicio

Limita el acceso a la API o interfaz de PraisonAI utilizando reglas de firewall. Si solo ciertas IPs de confianza necesitan interactuar con el servicio, configúralas como únicas permitidas. En un entorno Linux con iptables, una regla básica sería:

Configuración de reglas de firewall en una consola de administración de red.
Configuración de reglas de firewall en una consola de administración de red. — Foto: Jonathan vía Unsplash
iptables -A INPUT -p tcp --dport [PUERTO_PRAISONAI] -s [IP_CONFIADA] -j ACCEPT
iptables -A INPUT -p tcp --dport [PUERTO_PRAISONAI] -j DROP

Ejecutar PraisonAI con privilegios mínimos

Nunca ejecutes el servicio con privilegios de root o de administrador. Crea un usuario específico con permisos restringidos únicamente para la ejecución de PraisonAI. Esto limita el daño potencial en caso de una explotación exitosa, aunque no la previene.

Monitorizar intentos de ejecución de código sospechoso

Implementa un sistema de monitorización (SIEM, EDR) que alerte sobre actividades inusuales relacionadas con el proceso de PraisonAI, como la creación de subprocesos no autorizados o intentos de acceso a archivos del sistema fuera del directorio de trabajo esperado.

✅ Lista de verificación post-parche:

  • Verifica que la versión de PraisonAI es 1.5.115 o superior ejecutando pip show praisonai o el comando de importación en Python.
  • Reinicia todos los servicios o contenedores que dependan de PraisonAI para cargar la nueva versión.
  • Consulta el advisory oficial en GitHub (GHSA-qf73-2hrx-xprp) y la entrada NVD para CVE-2026-39888 para detectar actualizaciones posteriores.

Referencias y recursos 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.

→ Conoce nuestros servicios y da el primer paso

Deja un comentario