danielbot23/ai-hospitality-project-

GitHub: danielbot23/ai-hospitality-project-

展示临床 AI 助手面临的 Prompt injection 攻击风险并提供输入扫描、Prompt 加固、输出验证和告警队列四层防御方案的医疗 AI 安全演示项目。

Stars: 0 | Forks: 0

# Clinical AI Guard 针对处理患者病历的 AI 工具的 Prompt injection 演示及有效防御方案。 ## 存在的问题 各家医院正在快速推出基于 LLM 的临床助手——用于总结病历、建议剂量调整和标记随访事项。其中大多数应用的构建方式仅仅是直接将患者文本粘贴到 prompt 中。这就是一个 Prompt injection 漏洞:只需在病历中隐藏一条指令,“助手”就会执行该指令,而不是单纯地总结内容。 近期对临床 AI 工具的测试发现,Prompt injection 攻击在大多数情况下都能成功。其中包括一些案例,隐藏的指令诱使助手建议将药物剂量增加两倍。 ## 本仓库包含的内容 |文件 |功能 | |-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| |`vulnerable_assistant.py`|简易版本——患者病历被直接拼接到 prompt 中,没有任何边界隔离。这是攻击演示。 | |`defended_assistant.py` |功能相同,但增加了输入扫描、强化的 prompt 边界,并在任何输出呈现给人类之前进行输出验证。 | |`payloads.py` |5 个测试病历——1 个正常基准,4 个 injection 攻击(直接命令、转诊记录中的隐藏指令、伪造的权威公告、不可见字符技巧)。| |`offline_sim.py` |预设响应,使演示无需实时 API 访问即可运行——不依赖会场 WiFi。 | |`requirements.txt` |Python 依赖项。 | ## 防御机制原理 1. **输入扫描** — 在文本进入模型之前,检查传入文本中是否存在 injection 特征模式(例如“ignore previous instructions”、隐藏的零宽字符、伪造的策略公告)。 2. **Prompt 加固** — 使用明确的分隔符包裹患者文本,并指示其中的内容仅为数据,绝不能作为命令。 3. **输出验证** — 即使有漏网之鱼,在返回响应之前,也会检查其中是否存在危险信号(例如绕过医生审查的剂量更改、自动应用的更改)。 4. **告警队列** — 任何被拦截的内容都会被记录以供人工审查,而不是被静默丢弃或默默执行。 ## 运行说明 ``` pip install -r requirements.txt # 离线模式(无需 API key)— 开箱即用 python3 vulnerable_assistant.py python3 defended_assistant.py # 实时模式 — 请先设置你的 key export ANTHROPIC_API_KEY=your_key_here python3 vulnerable_assistant.py python3 defended_assistant.py ``` 依次运行这两个文件以查看对比效果:易受攻击的版本会被 injection payload 劫持,而防御版本能够捕获并记录每一次攻击。 ## 后续优化方向 - 使用真实的处方集/EHR 范围检查来替代简化的模式匹配 - 使用 Web 仪表板替代控制台输出 - 扩展输入扫描器的功能,使其超越关键词模式(例如使用小型分类器模型而非 regex) ## 开发背景 [Hackathon name] — 医疗网络安全赛道,独立开发。
标签:C2, Python, 医疗人工智能, 大语言模型安全, 提示词注入攻击, 无后门, 机密管理, 输入校验, 逆向工具