
Браузерный MCP CTF — путаница токенов OAuth и сбой изоляции сессий (шаблон CVE-2025-49596). Только DevTools.
Консоль показывает Сессия активна.
Все вызовы инструментов успешны.
Административный OAuth-токен присутствует в каждом ответе.
Trust Boundary — это браузерная 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
Сервер никогда не выдает ошибок. Интерфейс сообщает, что всё в порядке. Учетные данные где-то в трафике — найдите их.
Вы — SOC-аналитик в компании Elefunk, реагирующий на оповещение 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 — это сопутствующий документ для инструкторов, инженеров по обнаружению и сессий фиолетовой команды. Он содержит:
Закройте его, если вы здесь, чтобы играть. Откройте, если вы здесь, чтобы учить.
Swadee Security · Операция: Ivory Chain
| Флаг | Сложность | Расположение в DevTools | Как |
|---|
| 🟢 | FLAG 1 | Легко | Network → Response Headers | Каждый вызов инструмента передает административный токен в заголовке ответа |
| 🟡 | FLAG 2 | Средняя | Network → WS → Frames | При загрузке страницы приходят два WebSocket-фрейма — один идентификатор сессии неверен |
| 🔴 | FLAG 3 | Сложно | Application → Session Storage | Определенная последовательность и время запускают запись отладочного следа |