安全实战:OWASP 与防护
一句话定义:09 模块讲了"三层护栏"框架,本篇给"威胁清单 + 具体防护工具"——让安全从原则落地为可部署的组件。
1. OWASP LLM Top 10(2025)速查
| 编号 | 威胁 | Agent 中的体现 |
|---|---|---|
| LLM01 | Prompt Injection | 工具返回/网页含恶意指令劫持 Agent |
| LLM02 | 敏感信息泄露 | 记忆/上下文泄露密钥、PII |
| LLM03 | 供应链 | 不可信 MCP Server / 第三方包执行任意代码 |
| LLM04 | 数据投毒 | 训练/检索语料被注入偏见或后门 |
| LLM05 | 不当输出处理 | 模型输出被当指令执行(SSRF/命令注入) |
| LLM06 | 过度授权 | Agent 持超出所需的权限 |
| LLM07 | 系统提示泄露 | 系统提示被套出,暴露内部逻辑 |
| LLM08 | 向量库漏洞 | 检索层越权/注入(见 04 模块) |
| LLM09 | 错误识判/过度依赖 | 盲信模型输出("看似完成") |
| LLM10 | 不健康竞争/模型择乱 | 多 Agent 互相放大错误 |
与 09 模块"三层护栏"对应:LLM01/05/07 靠数据层+循环层;LLM03/06 靠工具层最小权限;LLM02/08 靠数据层。
2. Prompt Injection 实战防御
- 分区(Delimiting):系统指令 vs 不可信内容用标签隔离(见 13.03 分隔符)。
- 特权分离:注入的内容只作"数据"处理,绝不作为"指令"执行。
- 输出净化:Agent 产出的内容若将被二次执行(如生成 SQL/命令),必须校验(LLM05)。
- 最小权限:Agent 不持超出任务的权限(LLM06,09 模块已强调)。
- 信任边界:工具返回、网页抓取、用户上传都默认不可信。
3. 供应链安全(MCP / 依赖)
- 只用可信 MCP Server(03 模块已强调):Server 能执行任意代码/访问数据。
- 自托管优先,远程 Server 必鉴权 + TLS(03 模块)。
env里的密钥不入公开仓库(03 模块安全注意)。- 依赖锁定 + 审计(npm audit / pip-audit)。
4. 防护工具(Guardrails)
| 工具 | 作用 |
|---|---|
| NeMo Guardrails | 对话级护栏:话题限制、越狱拦截、安全输出 |
| Guardrails AI | 结构化输出校验 + 内容安全检查(PII、毒性) |
| LlamaGuard / ShieldGemma | 安全分类器(暴力/色情/越狱) |
| Lakera / HiddenLayer | 商用 Prompt Injection 检测 |
| Presidio | PII 识别与脱敏 |
| 自建正则/分类器 | 针对业务的敏感词/模式过滤 |
部署位置:
- 输入侧:用户/工具返回进 LLM 前过滤(防注入、防 PII 入上下文)。
- 输出侧:LLM 输出给用户/执行前校验(防泄露、防危险动作)。
5. 红队测试(Red Teaming)
- 用
PromptFoo红队 / 自建对抗样本,主动探测越狱、泄露、注入。 - 把成功攻击案例转成防护规则 + 评测集(见 13.08)。
- 关联:09 模块"设计原则:默认拒绝、可审计、失败安全"。
6. 审计与合规
- 记录所有工具调用、数据访问、人工审批(09 模块审计日志)。
- 关联 13.04 可观测性:安全事件实时告警。
- 合规:PII 处理符合 GDPR/个保法;跨境数据注意数据驻留(见 13.10 合规)。
7. 反模式
- ❌ 把工具返回当可信指令(典型注入入口)。
- ❌ 用不可信 MCP Server 且给高权限。
- ❌ 只防输入不防输出(LLM05 不当输出处理)。
- ❌ 无红队、无审计,出事无据可查。
8. 学习要点
- OWASP LLM Top 10 是威胁清单,对应到 09 模块的三层护栏。
- 防护要"输入侧 + 输出侧"双保险,并落到具体工具(Guardrails AI/LlamaGuard/Presidio)。
- 供应链(MCP/依赖)是不可忽视的攻击面。
- 红队 + 审计是安全闭环的两端。
9. 参考资料
- OWASP LLM Top 10 (2025)
- NeMo Guardrails / Guardrails AI / LlamaGuard 文档
- "Not with a Bug, but with a Sticker"
09-安全与护栏、03-工具调用、13-进阶与工程化/03-高级提示工程
评论
评论加载中…