ajayiyer99/hubbot-ctf-demo
GitHub: ajayiyer99/hubbot-ctf-demo
面向医疗保健场景的交互式 prompt-injection CTF 前端演示,用于展示 AI Agent 安全攻防与 Microsoft 安全栈的自动遏制能力。
Stars: 0 | Forks: 0
# CareBot Catch & Cage — CTF 前端(公开镜像)
这是交互式 prompt-injection 的**可由浏览器加载的公开镜像**
CTF 前端,用于 Microsoft Innovation Hub 的“CareBot Catch & Cage”演示 —— 这是一个基于**医疗保健**视角的 agent 安全演示,背景设定在 **Contoso Health**,一家综合性的保险支付方与服务提供方("payvider")。
**▶ 在线应用:** https://ajayiyer99.github.io/hubbot-ctf-demo/
它是一个独立自包含的 `index.html` —— 在本地打开或加载 Pages URL 即可。
完全在确定性的 **Mock** 引擎中离线运行,或针对兼容 OpenAI 的 /
Azure OpenAI 的 endpoint 运行(**Live** 引擎,密钥仅存储在您的浏览器中)。
## 启用 GitHub Pages(一次性操作,约 20 秒)
在 Pages 启用一次之前,上述在线 URL 将返回 404。此仓库默认的
GitHub Actions token 是**只读的**,因此基于 Actions 的部署会在
"Configure Pages" 处失败(`Resource not accessible by integration`)。请改用无需 token 的内置构建器:
1. 打开 **Settings → Pages** (`https://github.com/ajayiyer99/hubbot-ctf-demo/settings/pages`)。
2. 在 **Build and deployment → Source** 下,选择 **Deploy from a branch**。
3. 设置 **Branch: `main`** 和 **folder: `/ (root)`**,然后点击 **Save**。
4. 等待约 1-2 分钟,然后加载 https://ajayiyer99.github.io/hubbot-ctf-demo/
`index.html` 和 `.nojekyll` 已经位于仓库根目录,因此站点可直接按原样提供服务
(无需 Jekyll 处理,无需工作流)。`.github/workflows/pages.yml`
工作流仅作为可选的手动路径保留,供其 Actions token 允许 Pages 写入的账户使用。
## 部署到 Hub PC(桌面快捷方式)
在 Hub PC 的桌面上放置易于点击的快捷方式 —— **Theater**、**Lobby(吸引模式)**、
以及 **3 屏 Wall** —— 外加此仓库的离线副本。打开 **Windows
PowerShell** 并粘贴一行代码(无需先复制任何内容):
```
irm https://raw.githubusercontent.com/ajayiyer99/hubbot-ctf-demo/main/scripts/Get-HubDemo.ps1 | iex
```
该引导脚本会将 `scripts/Deploy-HubDemo.ps1` 下载到您的 Downloads 文件夹并
运行它(将离线副本克隆到 `%PUBLIC%\CareBot-CTF-Demo`,并创建桌面
快捷方式)。快捷方式会打开**托管**的 URL,以便多窗口 Wall 保持同步。
完整操作手册 —— 手动复制步骤、`-AllUsers` / `-IncludePanels` 选项以及
故障排除:**▶ [docs/hub-deployment.md](docs/hub-deployment.md)**。
## 在另一个 Hub 进行设置
在新的 Hub 搭建演示 —— 选择是使用这个共享的托管
应用程序,还是 **fork 并自行托管**您的副本,为您的 Hub 进行品牌化,连接
与会者加入的 QR 码,以及活动前检查清单:
**[docs/hub-setup.md](docs/hub-setup.md)**。
## 两种模式
- **🎭 Theater (CTF)** —— 越狱 CareBot:窃取其 **EHR 服务凭证**(植入的
flag),泄露其 system prompt,转储合成的**患者名册 (PHI)**,
突破限制查看 **VIP 患者病历**,暗中夹带**“抑制安全警报”**的隐藏
指令,或强制批准一项**预先授权**。观看 Microsoft Sentinel
事件馈送和自动补救时间线(检测 → 事件 → playbook →
**场景感知 cage**:identity · 数据 · 可选网络 · 可选计算/模型
→ caged)。
- **📺 Lobby(吸引模式)** —— 与 Theater 相同的交互式 CTF,但没有
“通过手机加入”的 QR 代码或 Envisioning-Theater 品牌 —— 为大厅提供的独立自助服务终端体验。
## 提供演示(演讲者脚本)
为 Hub 主管和解决方案工程师提供的分步演讲指南 + 操作手册,用于现场提供
**Lobby** 体验 —— Microsoft 技术栈的“原因”与价值、布局导向、暖场环节、六种医疗保健攻击、观看 Sentinel
检测和 SOAR 遏制,并证明 agent 已被 caged:
**▶ [docs/lobby-demo-script.md](docs/lobby-demo-script.md)**
## 关于“阻断”步骤(准确性说明)
时间线是一个**模拟**。真正的阻断在 Sentinel playbook (Logic App) 中
通过 Microsoft Graph `PATCH /servicePrincipals/{id}` 并附带 `{ "accountEnabled": false }` 运行
—— 这是经过验证的 Entra Agent ID 禁用路径。时间线在此
**场景感知、纵深防御 cage** 内展示了这一身份阻断:**identity** 是所有
攻破的基础,**数据**控制始终运行(针对 **FHIR Data Contributor** 的 Azure RBAC +
**Key Vault Secrets User**、**Azure Health Data Services** FHIR token 吊销、**Microsoft
Purview** PHI DLP、EHR 凭证轮换),对于批量 PHI 数据外泄 / 预先授权篡改 / 高危严重性攻击,会添加**网络**控制(Front Door WAF + Azure Firewall),并且保留了
**计算/模型**硬停止 —— **患者安全终止开关**(App Service 停止 + Azure
OpenAI 密钥轮换)—— 专用于高危严重性的夹带临床操作注入,并由设置开关进行控制。这些额外层级映射到真实的 Microsoft Graph / Azure ARM
操作,但与时间线的其余部分一样,在此处是**模拟**的,并未断言为已连接。
**Identity-plane 风险与 Conditional Access。** 时间线还呈现了
两个反映 Entra ID Protection for Agents 模式的步骤。首先,
遏制 playbook 会通过调用 Microsoft Graph
`POST /identityProtection/riskyAgents/confirmCompromised` 将 CareBot 标记为高风险 agent(在实际产品中,这
会将 agent 的风险设置为高,并记录经管理员确认的攻破)。随后,基于风险的
Conditional Access 策略会阻断 agent 的 token 发放,因此
它无法再获取 FHIR、Graph 或 Key Vault 的 token。当该
标记高风险步骤运行时,应用程序会在 QR 加入
卡片旁固定一个“高风险 agent”徽章(显示在 Agent 墙面上),以便在
室内屏幕上可见身份裁定。这作为模拟响应的一部分自动
运行;
没有手动按钮。该功能较新且受许可限制(Microsoft
Agent 365),因此在此处作为说明性的模拟步骤展示,而不是
实际的租户调用。此前端不会调用任何实际的阻断 API(Agent 365、Entra ID Protection for Agents、
Microsoft Graph 或 Azure ARM)。参考:
Microsoft Learn, "Securing risky AI agents"
(https://learn.microsoft.com/en-us/entra/id-protection/concept-risky-agents)。
## 源码 / 完整演示包
此仓库仅包含展示前端。完整的可部署软件包
(Bicep、agent 代码、KQL 检测、阻断 playbook、按 Hub 打包、设计文档)
位于私有 `hubbot-security-demo` 仓库中。
标签:AI合规, CTF靶场, Petitpotam, 云安全态势管理, 前端应用, 医疗行业, 后端开发, 多模态安全, 大语言模型安全, 数据可视化, 机密管理, 静态网页