
CTF MCP basé sur le navigateur — confusion de jeton OAuth et échec d'isolation de session (modèle CVE-2025-49596). DevTools uniquement.
La console affiche Session Active.
Chaque appel d'outil réussit.
Le jeton OAuth admin est dans chaque réponse.
Trust Boundary est un laboratoire CTF basé sur un navigateur, construit autour d'une véritable défaillance d'isolation de session dans un serveur MCP exécuté localement. La vulnérabilité n'est pas simulée — elle s'exécute dans le processus en cours. Trois flags. DevTools uniquement.
Un objet de contexte mutable partagé. Des identifiants admin définis au démarrage. Des requêtes utilisateur qui le réécrivent partiellement — mais ne suppriment jamais ce qui compte.
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:#ffaa00
Le serveur ne renvoie jamais d'erreur. L'interface indique que tout va bien. Les identifiants se trouvent quelque part dans le trafic — trouvez-les.
Vous êtes un analyste SOC chez Elefunk répondant à une alerte MDR :
"Jeton de session inattendu observé dans la réponse d'un appel d'outil d'agent. Source : contexte utilisateur. Le motif du jeton correspond au préfixe des identifiants admin. Confiance : HIGH."
La console d'agent interne sur http://localhost:3000 semble normale. Votre mission est de confirmer la défaillance d'isolation et de trouver les trois flags qu'elle a produits — en utilisant uniquement les DevTools de votre navigateur.
Tous les flags suivent le format CTF{...}. Soumettez-les à l'aide du validateur en bas de la console.
Node.js 18+. Pas de Docker. Pas de variables d'environnement. Pas de configuration.
git clone https://github.com/acseguin21/trust-boundary-ctf
cd trust-boundary-ctf
npm install
npm start
Ouvrez http://localhost:3000 — la console d'agent Elefunk vous attend.
SPOILERS.md est le document compagnon pour les instructeurs, les ingénieurs en détection et les sessions purple team. Il contient :
Fermez-le si vous êtes là pour jouer. Ouvrez-le si vous êtes là pour enseigner.
Swadee Security · Opération : Ivory Chain
| Flag | Difficulté | Emplacement DevTools | Comment |
|---|
| 🟢 | FLAG 1 | Facile | Network → Response Headers | Chaque appel d'outil divulgue le jeton admin dans un en-tête de réponse |
| 🟡 | FLAG 2 | Moyen | Network → WS → Frames | Deux trames WebSocket arrivent au chargement de la page — un ID de session est incorrect |
| 🔴 | FLAG 3 | Difficile | Application → Session Storage | Une séquence spécifique + un timing précis déclenchent l'écriture d'une trace de débogage |