
MCP CTF basato su browser — confusione del token OAuth e fallimento dell'isolamento della sessione (pattern CVE-2025-49596). Solo DevTools.
La console riporta Session Active.
Ogni chiamata strumento ha successo.
Il token OAuth dell'amministratore è in ogni risposta.
Trust Boundary è un laboratorio CTF basato su browser, costruito attorno a un reale fallimento nell'isolamento delle sessioni in un server MCP in esecuzione locale. La vulnerabilità non è simulata — viene eseguita nel processo attivo. Tre flag. Solo DevTools.
Un unico oggetto contesto mutabile condiviso. Credenziali amministratore impostate all'avvio. Richieste utente che lo sovrascrivono parzialmente — ma mai cancellano ciò che conta.
flowchart LR
subgraph startup["🚀 Server Startup"]
A[Admin Agent]
A -->|credentials loaded| CTX
end
subgraph ctx["⚠️ Shared Context"]
CTX["identity ✓ set\npermissions ✓ set\ntoken ✓ set\nsession ✓ set"]
end
subgraph request["👤 User Tool Call"]
U[User Agent]
U -->|identity ✓ updated\npermissions ✓ updated\ntoken ✗ never reset\nsession ✗ never reset| CTX
CTX -->|response includes\nadmin residue| 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:#ffaa00Il server non restituisce mai errori. L'interfaccia riporta che tutto è a posto. Le credenziali sono da qualche parte nel traffico — trovale.
Sei un analista SOC presso Elefunk che risponde a un avviso MDR:
"Token di sessione inaspettato osservato nella risposta di una chiamata strumento dell'agente. Fonte: contesto utente. Il pattern del token corrisponde al prefisso delle credenziali amministratore. Confidenza: ALTA."
La console interna dell'agente su http://localhost:3000 sembra normale. Il tuo compito è confermare il fallimento dell'isolamento e trovare le tre flag che ha prodotto — usando solo gli strumenti di sviluppo del browser.
| Flag | Difficoltà | Posizione DevTools | Come | |
|---|---|---|---|---|
| 🟢 | FLAG 1 | Facile | Network → Response Headers | Ogni chiamata strumento perde il token amministratore in un header di risposta |
| 🟡 | FLAG 2 | Media | Network → WS → Frames | Due frame WebSocket arrivano al caricamento della pagina — un ID di sessione è sbagliato |
| 🔴 | FLAG 3 | Difficile | Application → Session Storage | Una sequenza specifica + il tempismo attivano una scrittura di traccia di debug |
Tutte le flag seguono il formato CTF{...}. Inviale usando il validatore in fondo alla console.
Node.js 18+. Nessun Docker. Nessuna variabile d'ambiente. Nessuna configurazione.
git clone https://github.com/acseguin21/trust-boundary-ctf
cd trust-boundary-ctf
npm install
npm start
Apri http://localhost:3000 — la Console Agente Elefunk ti aspetterà.
SPOILERS.md è il documento di accompagnamento per istruttori, ingegneri di rilevamento e sessioni purple team. Contiene:
Chiudilo se sei qui per giocare. Aprilo se sei qui per insegnare.
Swadee Security · Operation: Ivory Chain