
Browser-basiertes MCP CTF — OAuth-Token-Verwirrung und Sitzungsisolierungsfehler (CVE-2025-49596-Muster). Nur DevTools.
Die Konsole zeigt Sitzung aktiv an.
Jeder Tool-Aufruf gelingt.
Das Admin-OAuth-Token ist in jeder Antwort enthalten.
Trust Boundary ist ein browserbasiertes CTF-Labor, das um einen echten Sitzungsisolierungsfehler in einem lokal laufenden MCP-Server herum aufgebaut ist. Die Schwachstelle ist nicht simuliert – sie wird im laufenden Prozess ausgeführt. Drei Flags. Nur DevTools.
Ein gemeinsames veränderbares Kontextobjekt. Admin-Anmeldedaten werden beim Start gesetzt. Benutzeranfragen überschreiben es teilweise – löschen aber nie, worauf es ankommt.
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:#ffaa00Der Server gibt nie einen Fehler aus. Die UI meldet, dass alles in Ordnung ist. Die Anmeldedaten befinden sich irgendwo im Traffic – finden Sie sie.
Sie sind ein SOC-Analyst bei Elefunk und reagieren auf einen MDR-Alarm:
"Unexpected session token observed in agent tool call response. Source: user context. Token pattern matches admin credential prefix. Confidence: HIGH."
Die interne Agent-Konsole unter http://localhost:3000 sieht normal aus. Ihre Aufgabe ist es, den Isolierungsfehler zu bestätigen und die drei davon produzierten Flags zu finden – nur mit den DevTools Ihres Browsers.
| Flag | Schwierigkeit | DevTools-Ort | Wie | |
|---|---|---|---|---|
| 🟢 | FLAG 1 | Einfach | Netzwerk → Antwort-Header | Jeder Tool-Aufruf gibt das Admin-Token in einem Antwort-Header preis |
| 🟡 | FLAG 2 | Mittel | Netzwerk → WS → Frames | Beim Laden der Seite treffen zwei WebSocket-Frames ein – eine Sitzungs-ID ist falsch |
| 🔴 | FLAG 3 | Schwer | Anwendung → Sitzungsspeicher | Eine bestimmte Sequenz + Zeitablauf löst einen Debug-Trace-Schreibvorgang aus |
Alle Flags folgen dem Format CTF{...}. Reichen Sie sie mit dem Validator am unteren Ende der Konsole ein.
Node.js 18+. Kein Docker. Keine Umgebungsvariablen. Keine Konfiguration.
git clone https://github.com/acseguin21/trust-boundary-ctf
cd trust-boundary-ctf
npm install
npm start
Öffnen Sie http://localhost:3000 – die Elefunk Agent Console wartet.
SPOILERS.md ist das Begleitdokument für Ausbilder, Erkennungsingenieure und Purple-Team-Sitzungen. Es enthält:
Schließen Sie es, wenn Sie hier sind, um zu spielen. Öffnen Sie es, wenn Sie hier sind, um zu lehren.
Swadee Security · Operation: Ivory Chain