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.
| 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 |
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:
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.
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.
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:
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.
- Verifica que la versión de PraisonAI es 1.5.115 o superior ejecutando
pip show praisonaio 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
- NVD – CVE-2026-39888 — Base de datos nacional de vulnerabilidades (NIST)
- Referencia: github.com
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.