acseguin21/trust-boundary-ctf

GitHub: acseguin21/trust-boundary-ctf

这是一个基于浏览器的 CTF 演练环境,旨在通过复现 OAuth 令牌混淆与会话隔离失败漏洞,帮助安全人员理解 CVE-2025-49596 攻击模式。

Stars: 0 | Forks: 0

# 🐘 信任边界:MCP 会话隔离 CTF ![Node.js](https://img.shields.io/badge/node-%3E%3D18-brightgreen) ![License](https://img.shields.io/badge/license-MIT-blue) ![Difficulty](https://img.shields.io/badge/flags-easy%20%E2%86%92%20hard-orange) ![CVE](https://img.shields.io/badge/CVE-2025--49596-red) ![purple team](https://img.shields.io/badge/purple%20team-ready-blueviolet) **信任边界** 是一个基于浏览器的 CTF 实验室,围绕本地运行的 MCP 服务器中的真实会话隔离失败构建。该漏洞并非模拟——它在运行进程中执行。三个标志。仅限 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` 的内部代理控制台看起来正常。你的任务是确认隔离失败并找到它产生的三个标志——仅使用你浏览器的 DevTools。 ## 三标志任务 | | 标志 | 难度 | DevTools 位置 | 方法 | |--|------|-----------|-------------------|-----| | 🟢 | 标志 1 | Easy | Network → Response Headers | 每个工具调用都会在响应头中泄露 admin token | | 🟡 | 标志 2 | Medium | Network → WS → Frames | 页面加载时会到达两个 WebSocket 帧——其中一个 session ID 是错误的 | | 🔴 | 标志 3 | Hard | 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 ``` 打开 **http://localhost:3000** —— Elefunk Agent Console 将在等待。 ## Purple Team 用途 **`SPOILERS.md`** 是讲师、检测工程师和 purple team 会议的配套文档。它包含: - 逐行注释的漏洞代码 - 作为可工作 diff 的修复方案 - 带有谈话要点的逐步 flag 解析 - **KQL**、**Splunk SPL** 和 **Sigma** 中的检测规则 如果你是来玩的,请关闭它。如果你是来教学的,请打开它。 ## 参考 - [CVE-2025-49596](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-49596) — 通过共享会话上下文导致的 MCP OAuth token 混淆 - [OWASP MCP Top 10 2025](https://owasp.org/www-project-mcp-top-10/) — MCP01: Token Mismanagement - [Model Context Protocol 规范](https://spec.modelcontextprotocol.io) *Swadee Security · 行动:象牙链*
标签:CVE-2025-49596, DevTools, GNU通用公共许可证, MCP, MITM代理, Model Context Protocol, Node.js, OAuth, Purple Team, SOC分析, 令牌混淆, 会话隔离失效, 前端安全, 安全实验室, 实战演练, 数据可视化, 漏洞复现, 网络安全, 自定义脚本, 身份验证绕过, 隐私保护