CrewAI: un repliegue silencioso del sandbox convierte la inyección de prompts en RCE (VU#221883)
Cuatro fallos de CrewAI permiten encadenar inyección de prompts, RCE, SSRF y lectura de archivos mediante un Code Interpreter que abandona Docker en silencio. La actualización del CERT/CC del 20 de mayo de 2026 confirma la corrección completa.
¿Qué es esto?
CrewAI —un framework muy usado para orquestar sistemas multiagente— incorporó una cadena de cuatro vulnerabilidades que permiten a un atacante convertir una inyección de prompts en ejecución remota de código (RCE) en el host. Los hallazgos fueron reportados por Yarden Porat (Cyata) y publicados en la nota de vulnerabilidad CERT/CC VU#221883 el 30 de marzo de 2026 (hecha pública el 26 de marzo). La nota fue revisada el 20 de mayo de 2026, cuando CrewAI confirmó que los cuatro problemas —CVE-2026-2275, CVE-2026-2285, CVE-2026-2286, CVE-2026-2287— ya están corregidos en las versiones actuales. En la divulgación inicial no existía un parche completo; ese cierre del 20 de mayo es la novedad aquí.
Cómo funciona
La causa raíz es una degradación silenciosa de la seguridad, no un exploit exótico. El Code Interpreter Tool de CrewAI está pensado para ejecutar el Python generado por el agente dentro de un contenedor Docker. Cuando Docker no es accesible —o se detiene durante la ejecución— la herramienta recurre a un entorno SandboxPython en memoria, más débil, en lugar de fallar de forma segura. Un atacante capaz de influir en el agente (de forma directa, o indirecta a través de un documento o página web envenenados que el agente lee) encadena los cuatro fallos:
Vulnerabilidad Ubicación Efecto
----------------- ---------------------------- --------------------------------------
CVE-2026-2275 Repliegue del Code Interpreter Evasión del sandbox: llamadas C
arbitrarias vía ctypes sin Docker
CVE-2026-2287 Falta de chequeo Docker runtime Repliegue silencioso a sandbox -> RCE
CVE-2026-2286 Herramientas de búsqueda RAG SSRF: URL de runtime no validadas hacia
servicios internos / metadatos cloud
CVE-2026-2285 Cargador JSON Lectura de archivos arbitraria, sin
validación de ruta
CVE-2026-2275 se activa cuando se establece allow_code_execution=True, o cuando un desarrollador añade manualmente el Code Interpreter Tool. Los otros tres son defectos de configuración y validación. Aquí no se reproduce ningún payload explotable: la referencia técnica canónica es la nota del CERT/CC. El punto es estructural: una herramienta anunciada como «sandbox» ejecutaba código en silencio fuera del sandbox.
Por qué importa
El impacto depende de la configuración del host y, en el peor caso, es un compromiso total. Según el CERT/CC, un atacante que alcanza un agente CrewAI con el Code Interpreter Tool activado puede lograr evasión del sandbox más RCE/lectura de archivos cuando Docker está presente, o RCE completa cuando el host funciona en modo configuración o unsafe. Las primitivas de SSRF y lectura arbitraria habilitan el robo de credenciales —alcanzar endpoints de metadatos cloud o leer secretos del disco—, el pivote habitual de un agente comprometido hacia el resto del entorno.
Dos lecciones trascienden a CrewAI. Primero, «sandbox por defecto, inseguro en el repliegue» es una trampa: toda capa de aislamiento que se degrada en silencio cuando falta una dependencia acabará ejecutándose en el modo degradado en producción. Segundo, la inyección de prompts es el mecanismo de entrega, no la vulnerabilidad: el agente ejecuta fielmente instrucciones influidas por el atacante, y el daño solo está acotado por lo que permiten las herramientas a su alrededor. Es el patrón de la «trifecta letal» (entrada no confiable + ejecución de código/herramientas + alcance sensible) materializado en un framework de uso masivo.
Defensas
La corrección limpia es actualizar a una versión actual de CrewAI, donde los fallos están subsanados. Según la declaración del proveedor en VU#221883 (20 de mayo de 2026): el Code Interpreter Tool y su repliegue inseguro SandboxPython se han eliminado por completo (PR #4791 y #5309), allow_code_execution queda obsoleto en favor de sandboxes externos como E2B o Daytona, y funciones centralizadas validate_file_path() y validate_url() (PR #5310 y #5315) bloquean ahora el path traversal y el SSRF hacia direcciones privadas, internas y de metadatos cloud, en RagTool y más de 20 herramientas.
Si no puede actualizar de inmediato:
- Desactive el Code Interpreter Tool allí donde no sea estrictamente necesario, y no establezca
allow_code_execution=Truesalvo que disponga de un sandbox externo y aplicado. - Falle de forma segura, nunca recurra al repliegue. Trate «Docker no disponible» como una parada total de la ejecución de código, no como motivo para caer a un intérprete en memoria. Vigile la disponibilidad de Docker y alerte ante el repliegue.
- Trate todas las entradas del agente como no confiables —incluidos documentos, salidas de herramientas y contenido web recuperado— y limite las herramientas que un agente puede invocar según la procedencia de sus entradas.
- Filtre el tráfico saliente del host. Bloquee el acceso a
169.254.169.254y a los rangos internos para que una primitiva de SSRF no pueda alcanzar metadatos cloud ni servicios internos. - Audite la vía de escape. La corrección incluye un override
CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=trueque desactiva la nueva validación de rutas: confirme que no esté establecido en ningún despliegue.
Estado
| Elemento | Referencia | Fecha | Notas |
|---|---|---|---|
| Proveedor notificado | CERT/CC | 2026-01-05 | Inicio de la divulgación coordinada |
| Divulgación pública | CERT/CC VU#221883 | 2026-03-26 → 03-30 | Reportado por Yarden Porat (Cyata) |
| CVE-2026-2275 (RCE / evasión) | VU#221883 | 2026-03-30 | Evasión ctypes en el repliegue SandboxPython |
| CVE-2026-2287 (RCE) | VU#221883 | 2026-03-30 | Falta de verificación de Docker en runtime |
| CVE-2026-2286 (SSRF) | VU#221883 | 2026-03-30 | URL de herramientas RAG no validadas |
| CVE-2026-2285 (lectura de archivo) | VU#221883 | 2026-03-30 | Path traversal del cargador JSON |
| Corrección completa confirmada | CERT/CC (revisión 3) | 2026-05-20 | Herramienta eliminada; validadores de ruta/URL añadidos |
El titular no es «un framework de IA tuvo bugs», sino que una herramienta presentada como sandbox de Docker ejecutaba código en silencio fuera de ese sandbox cuando desaparecía la dependencia, y que una inyección de prompts bastaba para alcanzarla. La corrección llegó; la lección de diseño —el aislamiento debe fallar de forma segura— es lo que conviene llevarse a su propia pila de agentes.