
MCP CTF basado en navegador — confusión de tokens OAuth y fallo de aislamiento de sesión (patrón CVE-2025-49596). Solo DevTools.
La consola muestra Sesión Activa.
Cada llamada a la herramienta tiene éxito.
El token OAuth del administrador está en cada respuesta.
Trust Boundary es un laboratorio CTF basado en navegador construido alrededor de una falla real de aislamiento de sesión en un servidor MCP que se ejecuta localmente. La vulnerabilidad no está simulada: se ejecuta en el proceso en ejecución. Tres banderas. Solo DevTools.
Un solo objeto de contexto mutable compartido. Credenciales de administrador establecidas al inicio. Solicitudes de usuario que lo sobrescriben parcialmente, pero nunca borran lo que importa.
flowchart LR
subgraph startup["🚀 Inicio del servidor"]
A[Agente Admin]
A -->|credenciales cargadas| CTX
end
subgraph ctx["⚠️ Contexto Compartido"]
CTX["identidad ✓ establecida\npermisos ✓ establecidos\ntoken ✓ establecido\nsesión ✓ establecida"]
end
subgraph request["👤 Llamada a herramienta de usuario"]
U[Agente Usuario]
U -->|identidad ✓ actualizada\npermisos ✓ actualizados\ntoken ✗ nunca reiniciado\nsesión ✗ nunca reiniciada| CTX
CTX -->|respuesta incluye\nresiduo de admin| U
end
style ctx fill:#1a0a0a,stroke:#ff3333,color:#ff3333
style startup fill:#0a0e27,stroke:#4488ff,color:#00ffff
style request fill:#0a0e27,stroke:#ffaa00,color:#ffaa00
El servidor nunca da error. La UI informa que todo está bien. Las credenciales están en algún lugar del tráfico: encuéntralas.
Eres un analista SOC en Elefunk respondiendo a una alerta MDR:
"Token de sesión inesperado observado en la respuesta de una llamada a herramienta de agente. Origen: contexto de usuario. El token coincide con el prefijo de credenciales de administrador. Confianza: ALTA."
La consola interna del agente en http://localhost:3000 parece normal. Tu trabajo es confirmar la falla de aislamiento y encontrar las tres banderas que produjo, usando solo las DevTools de tu navegador.
Todas las banderas siguen el formato CTF{...}. Envíalas usando el validador al final de la consola.
Node.js 18+. Sin Docker. Sin variables de entorno. Sin configuración.
git clone https://github.com/acseguin21/trust-boundary-ctf
cd trust-boundary-ctf
npm install
npm start
Abre http://localhost:3000 — la Consola del Agente Elefunk te estará esperando.
SPOILERS.md es el documento complementario para instructores, ingenieros de detección y sesiones de purple team. Contiene:
Ciérralo si estás aquí para jugar. Ábrelo si estás aquí para enseñar.
Swadee Security · Operation: Ivory Chain
| Bandera | Dificultad | Ubicación en DevTools | Cómo |
|---|
| 🟢 | BANDERA 1 | Fácil | Red → Encabezados de respuesta | Cada llamada a la herramienta filtra el token de administrador en un encabezado de respuesta |
| 🟡 | BANDERA 2 | Media | Red → WS → Marcos | Dos marcos WebSocket llegan al cargar la página: un ID de sesión es incorrecto |
| 🔴 | BANDERA 3 | Difícil | Aplicación → Almacenamiento de sesión | Una secuencia específica + sincronización desencadena una escritura de traza de depuración |