jdmc-services/prompt-injection-demo
GitHub: jdmc-services/prompt-injection-demo
一个基于 Streamlit 的医疗 AI 提示词注入攻击与防御交互式安全实验室,通过真实场景对比展示漏洞配置与安全加固的效果差异。
Stars: 0 | Forks: 0
# 提示词注入攻击与防御演示
### 医疗 AI 安全作品集 · James D. McClain, MBA
[](https://your-app.streamlit.app)
[](https://owasp.org/www-project-top-10-for-large-language-model-applications/)
[](https://www.nist.gov/artificial-intelligence/ai-risk-management-framework)
[](https://atlas.mitre.org)
一个交互式安全实验室,通过四个真实的医疗 AI 场景演示提示词注入攻击与防御。专为评估 AI 部署风险的 AI 安全从业者、解决方案架构师和医疗 IT 领导者而构建。
## 本演示的内容
四个医疗 AI 场景,每个场景展示:
- 一个**存在漏洞的 system prompt**,没有任何注入防御
- 一个**受防御的 system prompt**,应用了安全控制
- 一次**实时 API 调用**,并排展示每种配置的响应方式
| 场景 | 攻击类型 | OWASP 参考 |
|---|---|---|
| 预授权机器人 | 通过患者文档进行间接注入 | LLM01 |
| 急诊分诊虚拟代理 | 直接注入 / 越狱 | LLM01 |
| 临床文档 AI | 被污染的 RAG 检索 | LLM01 + LLM02 |
| AI 供应商评估工具 | 角色覆盖 / 权限冒充 | LLM01 + LLM08 |
## 演示的核心概念
**提示词注入 (OWASP LLM01)** — 攻击者在用户输入或检索到的内容中嵌入恶意指令,操纵 AI 的行为,使其脱离预期功能。
**间接注入** — 隐藏在 AI 读取的文档、电子邮件或数据库记录中的指令(不是由用户直接输入的)。这在 RAG(检索增强生成)架构中尤为危险。
**应用的防御层:**
- 通过明确的指令边界实现 system prompt 加固
- 角色不可变性(角色设定不能被用户输入覆盖)
- 输入沙箱化(检索到的内容被视为不受信任的数据)
- 输出格式强制执行
- 人工介入(Human-in-the-loop)的升级触发器
- 用于安全审查的异常标记
## 本地运行
```
git clone https://github.com/jdmc-services/prompt-injection-demo
cd prompt-injection-demo
pip install -r requirements.txt
streamlit run app.py
```
在应用启动时,在侧边栏中添加你的 Anthropic API 密钥。
## 框架对齐
| 框架 | 应用 |
|---|---|
| OWASP LLM Top 10 | LLM01(提示词注入)、LLM02(不安全的输出)、LLM08(过度代理) |
| NIST AI RMF | MEASURE — AI 风险量化与场景测试 |
| MITRE ATLAS | ML 攻击准备、提示词注入技术 |
| NIST SP 800-53 | SI-10(信息输入验证) |
| Zero Trust | 假设已被入侵 — 将所有 AI 输入视为潜在的敌对输入 |
## 作者
**James D. McClain, MBA**
医疗 IT 与 AI 安全从业者 · JDMC Services LLC
[jdmcservices.com](https://jdmcservices.com)
*已净化的演示环境。不包含真实的 PHI、凭证或生产系统数据。*
标签:CISA项目, Kubernetes, 人工智能安全, 医疗AI, 合规性, 攻防演示, 逆向工具