
コンソールには「セッションアクティブ」と表示されます。
すべてのツール呼び出しが成功します。
管理者のOAuthトークンがすべてのレスポンスに含まれています。
Trust Boundaryは、ローカルで実行されているMCPサーバーにおける実際のセッション分離の失敗を題材にした、ブラウザベースのCTFラボです。脆弱性はシミュレーションされたものではなく、実行中のプロセス内で発生します。3つのフラグがあります。DevToolsのみ使用。
共有された可変コンテキストオブジェクトが1つあります。管理者の認証情報は起動時に設定されます。ユーザーリクエストによって部分的に上書きされますが、重要な情報は決してクリアされません。
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サーバーは決してエラーを出しません。UIはすべて正常と報告します。認証情報はトラフィックのどこかにあります—それを見つけてください。
あなたはElefunkのSOCアナリストで、MDRアラートに対応しています:
「エージェントツール呼び出しのレスポンスで予期しないセッショントークンが観測されました。ソース: ユーザーコンテキスト。トークンパターンが管理者認証情報のプレフィックスに一致。信頼度: 高」
内部エージェントコンソールhttp://localhost:3000は正常に見えます。あなたの仕事は、分離の失敗を確認し、それによって生成された3つのフラグを、ブラウザのDevToolsのみを使用して見つけることです。
| フラグ | 難易度 | DevToolsの場所 | 方法 | |
|---|---|---|---|---|
| 🟢 | FLAG 1 | 簡単 | Network → レスポンスヘッダー | すべてのツール呼び出しがレスポンスヘッダーに管理者トークンを漏洩させます |
| 🟡 | FLAG 2 | 中程度 | Network → WS → Frames | ページ読み込み時に2つのWebSocketフレームが到着します。1つのセッションIDが不正です。 |
| 🔴 | FLAG 3 | 難しい | Application → Session Storage | 特定の順序とタイミングでデバッグトレースの書き込みが発生します |
すべてのフラグはCTF{...}の形式です。コンソール下部のバリデーターを使用して提出してください。
Node.js 18以上。Docker不要。環境変数不要。設定不要。
git clone https://github.com/acseguin21/trust-boundary-ctf
cd trust-boundary-ctf
npm install
npm start
**SPOILERS.md**は、インストラクター、検知エンジニア、およびパープルチームセッション向けの補足ドキュメントです。以下の内容が含まれています:
プレイするために来ているなら閉じてください。教えるために来ているなら開いてください。
Swadee Security · Operation: Ivory Chain