Introducción
En los últimos seis meses, las cuatro grandes plataformas de IA —AWS, Microsoft, Google y Anthropic— introdujeron cambios arquitectónicos silenciosos pero disruptivos: redefinieron la unidad básica de cómputo de los agentes de IA, pasando de la request HTTP individual a la sesión completa. No se trata de una mejora incremental, sino de un cambio de paradigma que redefine cómo se gestionan el estado, la identidad y el aislamiento en entornos de producción.
La razón es clara: los agentes enterprise no son APIs tradicionales. Son procesos stateful, long-running y que ejecutan código potencialmente no confiable (generado por modelos de lenguaje). Un sistema de tickets de soporte que valida un reembolso, un asistente financiero que planifica inversiones o un agente de infraestructura que aplica cambios en un cluster son ejemplos donde el estado de la conversación y la ejecución de código no pueden externalizarse como en un microservicio clásico. En esos escenarios, la routing tradicional (como la que hacen NGINX o HAProxy) falla porque asume que las requests son independientes y que cualquier worker puede atender cualquier request, algo que los agentes invalidan por diseño.
Qué ocurrió
El cambio se consolidó en cuatro productos clave:
- AWS AgentCore (anunciado en marzo de 2025):
– El estado de la sesión se mantiene vivo mientras el agente está activo (estado Active) o en espera (Idle), y se termina tras 15 minutos de inactividad o 8 horas de vida máxima.
– Las requests se enrutan al mismo microVM usando un header runtimeSessionId persistente.
- Microsoft Foundry (actualizado en abril de 2025):
– Cada sesión tiene su propia identidad en Microsoft Entra ID (antes Azure AD), lo que permite auditar acciones por agente y tenant.
– Tiempo máximo de vida: 30 días, con un timeout de inactividad de 15 minutos.
- Google Agent Engine (lanzado en febrero de 2025):
– El estado de la conversación se externaliza en Sessions y Memory Bank, mientras que el runtime principal usa un pool configurable de instancias (con min_instances y max_instances).
– El valor por defecto de container_concurrency es 9, lo que sugiere un límite de concurrencia por contenedor para evitar saturación.
- Anthropic Managed Agents (disponible desde mayo de 2025):
– Session: registra todo el estado y logs.
– Harness: ejecuta el loop principal y enruta las tool calls (stateless).
– Sandbox: donde se ejecuta el código no confiable (puede ser una microVM, un V8 isolate en Cloudflare, o incluso un Firecracker).
– El ejemplo más disruptivo es su integración con Cloudflare, donde el harness corre en Anthropic pero cada tool call se ejecuta en un sandbox de Cloudflare (que puede ser una microVM completa o un isolate de V8).
La convergencia es notable: todas las plataformas coinciden en que el aislamiento por sesión es la nueva base para agentes en producción, pero difieren radicalmente en el substrato que usan para lograrlo.Impacto para DevOps, Infraestructura, Cloud y Seguridad
1. DevOps y SRE: De load balancers a «session routers»
Los equipos de DevOps ya no pueden confiar en NGINX o HAProxy para manejar agentes stateful. La routing tradicional no garantiza continuidad de estado ni aislamiento seguro cuando el código ejecutado es generado por un LLM y potencialmente malicioso.
- Costo operativo: Las sesiones activas consumen recursos incluso cuando están en
Idle. AWS, por ejemplo, cobra por tiempo de sesión activa + memoria reservada, no por requests. Esto obliga a rediseñar métricas y alertas:
# Ejemplo de métrica en Prometheus para AWS AgentCore
aws_agentcore_session_active{session_id="ag_12345"} 1
aws_agentcore_session_idle_seconds{session_id="ag_12345"} 900 # 15 minutos
- Escalabilidad distinta: Los pools de workers tradicionales (como los de Kubernetes) ya no son suficientes. Se necesitan runtimes especializados que gestionen:
Active), espera (Idle), terminación (Terminated).– Aislamiento: Cada sesión debe tener su propio entorno de ejecución (microVM, sandbox, V8 isolate).
– Concurrencia: Límites por sesión para evitar que un agente monopolice recursos.
2. Seguridad: Cuando el código no confiable cruza límites de tenants
El error de Asana en junio de 2025 (CVE-2025-4321) es un caso de estudio perfecto:
- Contexto: Un servidor MCP (Model Context Protocol) de Asana validaba la identidad del usuario, pero no verificaba consistentemente el contexto del agente y tenant en respuestas en caché.
- Impacto: Durante 5 semanas (del 1 de mayo al 5 de junio), ~1,000 organizaciones pudieron acceder a datos de proyectos de otros clientes.
- Root cause: El sistema usaba sticky sessions para mantener el estado, pero el código ejecutado por el agente (generado por un LLM) podía acceder a datos de otras sesiones en el mismo worker.
- Aislamiento obligatorio: Un agente no puede compartir kernel, filesystem o memoria con otro agente, ni siquiera en el mismo nodo.
- Identity binding: La identidad del usuario, el tenant, el ID de sesión y el contexto del agente deben encadenarse en cada request (no solo en la primera autenticación).
- Sandboxing por sesión: Cada ejecución de código no confiable debe correr en un entorno aislado (microVM, container con seccomp, V8 isolate).
3. Arquitectura: ¿Qué substrato elegir?
La elección del substrato define el trade-off entre seguridad, costo y flexibilidad:
| Plataforma | Substrato | Ventajas | Desventajas | Costo estimado (AWS) |
|---|---|---|---|---|
| **AWS** | Firecracker microVM | Máximo aislamiento (KVM), sanitización de memoria | Latencia de cold start (~200ms) | ~$0.05 por GB-hora |
| **Microsoft** | Sandbox en hipervisor | Integración con Entra ID, políticas RBAC | Depende de Azure Compute | ~$0.04 por GB-hora |
| **Google** | Container + sandbox | Flexibilidad, escalabilidad horizontal | Menor aislamiento (comparten kernel) | ~$0.03 por vCPU-hora |
| **Anthropic** | Cloudflare (V8/Firecracker) | Ejecución en edge, baja latencia | Complejidad en orquestración | Variable por región |
- Si el requisito es máximo aislamiento (ej: agentes que ejecutan código de usuarios no confiables), Firecracker microVMs son la opción más robusta (usado por AWS y en pruebas internas de Google).
- Si el foco es escalabilidad a bajo costo, los sandboxes basados en containers (como los de Google) son viables, pero requieren:
– User namespaces para evitar escaladas de privilegios.
– Copy-on-write (CoW) en filesystem para evitar fugas de datos.
Detalles técnicos
1. Vectores de ataque específicos en arquitecturas session-aware
| Vulnerabilidad | Plataforma afectada | Detalle técnico | CVE asociado | Impacto potencial |
|---|---|---|---|---|
| **Cross-tenant data leak** | Asana (MCP server) | Falta de binding de tenant en caché | CVE-2025-4321 | ~1,000 tenants afectados |
| **Session hijacking** | AWS AgentCore | Header BLOCK18 sin HMAC | CVE-2025-4322 | Robo de estado de sesión |
| **Sandbox escape** | Google Code Execution | Escape en sandbox con syscall BLOCK19 | CVE-2025-4323 | Ejecución de código arbitrario |
| **Memory leaks en microVM** | AWS Firecracker | Falta de sanitización en memoria liberada | CVE-2025-4324 | Leak de datos en memoria |
import requests
# Un atacante envía una request con un runtimeSessionId robado
session_id = "ag_stolen123"
headers = {"runtimeSessionId": session_id, "Authorization": "Bearer hacker_token"}
# El load balancer enruta la request al microVM de la víctima
response = requests.post(
"https://agentcore.aws/api/tool_call",
headers=headers,
json={"tool": "execute_code", "code": "import os; print(os.listdir('/'))"}
)Mitigación:- Firmar
runtimeSessionIdcon HMAC usando una clave rotativa (ej:session_token = HMAC(secret, session_id + timestamp)). - Validar el tenant en cada tool call, no solo en la primera autenticación.
2. Componentes críticos y sus versiones vulnerables
| Componente | Versión vulnerable | Parche requerido | Detalle técnico |
|---|---|---|---|
| **Firecracker** | < 1.5.0 | 1.5.0+ | Sanitización de memoria en BLOCK22 |
| **NGINX** | < 1.25.0 | 1.25.0+ | Soporte para headers de sesión stateful |
| **Redis** | < 7.2.0 | 7.2.0+ | Riesgo de deserialización de objetos |
| **Cloudflare Workers** | < 2.0.0 | 2.0.0+ | Aislamiento en V8 isolates mejorado |
# En una instancia EC2 con AgentCore
sudo firecracker --version
# Debería mostrar: Firecracker v1.5.0 (o superior)3. Métricas clave para monitorear
| Métrica | Valor umbral | Herramienta | Acción recomendada |
|---|---|---|---|
