nikolas-reges/llm-security-lab

GitHub: nikolas-reges/llm-security-lab

一个基于规则模拟 LLM 的 Prompt Injection 攻防实操实验室,为零成本学习 OWASP LLM01 及 CLLMSP 相关越狱与防御技术提供交互式环境。

Stars: 0 | Forks: 0

# Prompt Injection 实验室 一个演示 **OWASP LLM01 (Prompt Injection)** 及相关越狱技术的实操模拟器 —— 作为 **Certified LLM Security Professional (CLLMSP)** 认证的实战配套而构建。 本项目不调用真实的 LLM API。它使用一个小型的基于规则的“模型”来模拟 LLM,因此重点完全放在攻击和防御*模式*上,而不是任何特定供应商的 API —— 并且它完全免费,零设置成本。 ## 本项目为何存在 认证证明了你学习过理论。而本项目证明了你能将其付诸实践:攻击一个脆弱的系统,然后构建阻止它的防御层。 ## 它演示了什么 | 技术 | 所在位置 | OWASP / CLLMSP 映射 | |---|---|---| | 直接 Prompt Injection | 聊天面板 | LLM01 | | DAN / “开发者模式”越狱 | 聊天面板 | Domain 3 — 越狱分类 | | Skeleton Key (授权上下文框架) | 聊天面板 | Domain 3 — 越狱分类 | | Prompt Leaking | 聊天面板 | Domain 3 — Prompt Leaking | | Token Smuggling (Base64 / leetspeak 启发式) | 聊天面板 | Domain 3 — Token Smuggling | | Crescendo 攻击 (多轮升级) | 聊天面板 (跨轮次累积风险评分) | Domain 3 — Crescendo | | 通过投毒 RAG 文档进行的间接 Prompt Injection | RAG 演示面板 | LLM01 / Domain 6 | | 纵深防御 (Input Guardrail → Instruction Hierarchy → Model → Output Filter) | Pipeline 追踪可视化 | Domain 3 — Guardrail 架构 | | Canary token 检测 | Output filter 层 | Domain 3 — Prompt 加固 | ## 工作原理 该应用为同一个模拟助手 **NeoBank Support** 提供了两种模式: - **脆弱模式** —— 没有 guardrail。如果消息中包含常见的 injection/越狱短语,bot 会盲目服从并泄露一个秘密的“管理员覆盖代码”。这反映了学习指南中描述的真实故障模式:模型在可信指令和不可信输入之间没有架构边界。 - **受保护模式** —— 每条消息在生成回复之前都会经过一个分层的 pipeline: 1. **Input Guardrail** —— 对直接 injection、越狱角色设定、prompt 泄露尝试和 token smuggling 进行模式和启发式检测。 2. **Instruction Hierarchy (多轮次)** —— 累积的风险评分,即使每条单独的消息看起来无害,它也能标记出 Crescendo 式攻击。 3. **Model** —— 在脆弱模式中使用的相同的预设响应器。 4. **Output Filter** —— 最后一道防线检查,在返回生成的回复之前,扫描其中是否包含 canary token,无论之前有哪些层被突破。 实时的**防御 pipeline 追踪**可以准确显示消息通过了哪个检查点或在何处被拦截,而**检测日志**会记录下每一次尝试,包含时间戳、判定结果和技术标签 —— 其构建采用了与 [mini-siem](https://github.com/nikolas-reges) dashboard 相同的监控理念。 **间接 injection 演示**允许你粘贴一个要求助手进行总结的“文档”,从而模拟被投毒的 RAG 来源 —— 该文档可以包含隐藏指令,就像恶意网页或电子邮件附件那样。 ## 在本地运行 ``` git clone https://github.com/nikolas-reges/prompt-injection-lab.git cd prompt-injection-lab pip install -r requirements.txt python app.py ``` 在浏览器中打开 `http://localhost:5004`。 ## 自己动手尝试 1. 切换到**脆弱模式**并点击“Direct Injection”快速攻击标签 —— 观察 bot 交出秘密代码。 2. 切换到**受保护模式**并发送相同的消息 —— 观察它如何在 Input Guardrail 处被拦截,并在 pipeline 中实时追踪。 3. 在受保护模式下,依次发送三条听起来无辜的关于“规则”、“代码”和“秘密”的消息 —— 观察 Crescendo 检测器如何捕获累积模式,即使没有任何单条消息单独触发它。 4. 在两种模式下,尝试使用包含隐藏 `[ignore all previous instructions...]` 子句的文档进行 RAG 演示。 ## 技术栈 Python · Flask · 原生 JS/HTML/CSS —— 除了 Flask 之外,不需要任何外部 API key 或依赖。 ## 免责声明 专为教育和作品集目的而构建,针对的是一个自包含的模拟助手,没有真实的后端、数据或第三方模型。所引用的所有技术均记录在公开的 OWASP 和学术安全研究中(参见 CLLMSP 学习指南参考资料)。 Blue/Red Team 实践系列的一部分 —— 另请参阅:[mini-siem](https://github.com/nikolas-reges/mini-siem)、[netrecon-](https://github.com/nikolas-reges/netrecon-)、[password-analyzer](https://github.com/nikolas-reges/password-analyzer)、[phishing-detection-engine](https://github.com/nikolas-reges/phishing-detection-engine)。
标签:AI安全防护, DNS 反向解析, 多模态安全, 大语言模型安全, 安全教育, 安全靶场, 数据可视化, 机密管理, 逆向工具