
브라우저 기반 MCP CTF — OAuth 토큰 혼동 및 세션 격리 실패 (CVE-2025-49596 패턴). DevTools 전용.
콘솔에는 세션 활성이라고 표시됩니다.
모든 도구 호출은 성공합니다.
관리자 OAuth 토큰은 모든 응답에 포함되어 있습니다.
Trust Boundary는 로컬에서 실행 중인 MCP 서버에서 발생한 실제 세션 격리 실패를 기반으로 구축된 브라우저 기반 CTF 랩입니다. 이 취약점은 시뮬레이션이 아니라 실행 중인 프로세스에서 실제로 동작합니다. 플래그는 세 개입니다. 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만 사용해서요.
모든 플래그는 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**는 강사, 탐지 엔지니어, purple team 세션을 위한 동반 문서입니다. 여기에는 다음이 포함되어 있습니다:
플레이하려면 닫아 두세요. 가르치려면 열어 두세요.
Swadee Security · Operation: Ivory Chain
| 플래그 | 난이도 | DevTools 위치 | 방법 |
|---|
| 🟢 | FLAG 1 | 쉬움 | Network → Response Headers | 모든 도구 호출이 응답 헤더에 관리자 토큰을 유출합니다 |
| 🟡 | FLAG 2 | 보통 | Network → WS → Frames | 페이지 로드 시 두 개의 WebSocket 프레임이 도착합니다 — 그중 하나의 세션 ID가 잘못되었습니다 |
| 🔴 | FLAG 3 | 어려움 | Application → Session Storage | 특정 시퀀스 + 타이밍이 디버그 추적 기록을 트리거합니다 |