控制台显示 会话活跃。
每次工具调用都成功。
管理员的 OAuth 令牌出现在每个响应中。
Trust Boundary 是一个基于浏览器的 CTF 实验室,围绕本地运行的 MCP 服务器中真实的会话隔离缺陷而构建。该漏洞并非模拟——它会在运行进程中真实执行。三个 Flag。仅需 DevTools。
一个共享的可变上下文对象。管理员凭据在启动时设置。用户请求会部分覆盖它——但绝不会清除真正关键的内容。
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 的内部代理控制台看起来一切正常。你的任务是确认隔离缺陷,并找到它产生的三个 Flag——仅使用浏览器中的 DevTools。
所有 Flag 均遵循 CTF{...} 格式。使用控制台底部的验证器提交。
Node.js 18+。无需 Docker。无需环境变量。无需配置。
git clone https://github.com/acseguin21/trust-boundary-ctf
cd trust-boundary-ctf
npm install
npm start
打开 **http://localhost:3000**——Elefunk 代理控制台将在此等候。
SPOILERS.md 是为讲师、检测工程师和紫队演练准备的配套文档。其中包含:
如果你是来玩的,请关闭它。如果你是来教学的,请打开它。
Swadee Security · Operation: Ivory Chain
| Flag | 难度 | DevTools 位置 | 方式 |
|---|
| 🟢 | FLAG 1 | 简单 | Network → Response Headers | 每次工具调用都会在响应头中泄漏管理员令牌 |
| 🟡 | FLAG 2 | 中等 | Network → WS → Frames | 页面加载时到达两个 WebSocket 帧——其中一个会话 ID 是错误的 |
| 🔴 | FLAG 3 | 困难 | Application → Session Storage | 特定的序列 + 时机触发调试跟踪写入 |