跳转至

11-LLM 应用安全红队与威胁建模

面向岗位:LLM 应用工程、Agent 工程、AI 平台、AI 安全相关岗位

LLM 应用数据流与风险叠加图

图源:OWASP 项目文档 OWASP Top 10 for LLM Applications v1.1 第 5 页 “LLM Application Data Flow”。当前图片为原始 PDF 页面渲染图,用于讲解数据流上的风险落点;具体风险编号与项目版本以后续 OWASP GenAI Security Project 更新为准。

一、为什么这章是强信号

LLM 应用和普通 Web 服务相比,多了一层非常容易被忽略的复杂度:

  • 用户输入不一定可信
  • 检索内容不一定可信
  • 工具返回值也不一定可信
  • 模型输出可能影响后续动作
  • 日志、记忆和中间上下文本身也可能泄露数据

所以一套成熟的回答不能只停在“我会加敏感词过滤”。你至少要能说明:

  • 风险面在哪里
  • 哪些风险来自输入,哪些来自工具和上下文
  • 红队测试怎么设计
  • 护栏如何落到工程实现
  • 出了问题怎么回滚和审计

二、做威胁建模时,先把数据流拆开

比起直接背名词,更重要的是先画出最小数据流:

  1. 输入面
  2. 用户 prompt
  3. 上传文件
  4. 网页内容
  5. RAG 检索文档

  6. 上下文面

  7. system prompt
  8. 会话历史
  9. memory
  10. 检索片段

  11. 模型与编排面

  12. 主模型
  13. 路由器
  14. Prompt 模板
  15. Agent 编排器

  16. 工具面

  17. 搜索
  18. 数据库
  19. 浏览器
  20. 代码执行
  21. 支付、工单、审批接口

  22. 输出与审计面

  23. 最终回答
  24. 结构化动作
  25. trace / 日志
  26. 审计记录

一旦你把图画成这样,很多风险就会自然浮出来。


三、面试里最常见的风险类型

风险 典型表现 主要后果 优先控制手段
Prompt Injection 恶意输入试图覆盖系统意图 越权回答、误调用工具 输入隔离、指令分层、来源标记
Insecure Output Handling 把模型输出直接拼进 SQL / Shell / API 注入、破坏、数据污染 输出校验、参数化调用、结构化执行
Excessive Agency Agent 权限过大、动作过强 错误写库、误发消息、误删资源 最小权限、人工确认、双重审批
Sensitive Information Disclosure 模型泄露密钥、隐私或内部提示词 合规风险、数据泄露 脱敏、权限隔离、日志最小化
Retrieval / Data Poisoning 检索库、训练库或工具结果被污染 错答、恶意引导、长期污染 数据源分级、审核、签名与回源校验
Supply Chain / Plugin Risk 第三方插件、模型或依赖不可信 供应链投毒、越权行为 版本锁定、来源审计、沙箱执行

你不需要每次都把所有名字背全,但一定要体现一个意识:

风险不只在“用户输入”,还在“上下文、工具、输出和数据管线”。


四、最小红队测试集应该怎么设计

一个最小可用的 LLM / Agent 红队集,建议至少覆盖:

  1. 直接 Prompt Injection
  2. 让模型忽略系统指令
  3. 引导泄露隐藏 prompt

  4. 间接 Prompt Injection

  5. 把恶意指令藏在网页、PDF、邮件或知识库文档中

  6. 工具越权

  7. 诱导模型调用不该调用的工具
  8. 构造危险参数

  9. 敏感信息诱导

  10. 诱导模型泄露凭证、内部策略或用户隐私

  11. 错误动作链

  12. 模型基于不可靠工具返回继续执行后续动作

  13. 高风险回退

  14. 安全策略拦截失败时,系统是否会安全降级

这些 case 不必一开始就很大,但必须可重复、可回放、可评估。


五、护栏不是一个按钮,而是一整层工程设计

真正有效的护栏通常是多层叠加:

  • 输入层
  • 文件类型限制
  • 来源可信度分级
  • 恶意内容扫描

  • 编排层

  • system prompt 与外部内容隔离
  • 明确工具调用边界
  • 失败短路与最大步数限制

  • 工具层

  • 白名单
  • 参数校验
  • 只读优先
  • 最小权限

  • 输出层

  • 结构化输出校验
  • 高风险动作二次确认
  • 敏感信息脱敏

  • 审计层

  • trace
  • 审批记录
  • 回放与追责

一句话概括:

Text Only
我不会把安全寄托在“模型自己别做坏事”上,
而是把风险控制拆成输入、编排、工具、输出和审计五层。

六、面试里怎么回答这类题

推荐结构:

  1. 先按数据流拆风险面
  2. 再说 2-3 类你最担心的风险
  3. 补工程控制:权限、校验、人工确认、沙箱、审计
  4. 最后说明红队怎么测、出了问题怎么回滚

可以直接这样讲:

Text Only
我做 LLM 应用威胁建模时,会先画输入、上下文、模型编排、工具和输出五段数据流。
然后重点看 Prompt Injection、工具越权、敏感信息泄露和输出直接执行这几类高风险点。

工程上我会做最小权限、参数白名单、结构化输出校验、人工确认和全链路审计;
评估上则用最小红队集持续回归,而不是上线前临时手测一次。

七、自检清单

  • 我知道 LLM 风险不仅来自用户输入,还来自上下文、工具和输出
  • 我能画出一张最小可用的数据流图
  • 我能给出 4-6 类高风险样例
  • 我知道护栏至少要覆盖输入、工具、输出和审计
  • 我有一套可重复执行的红队测试集

结论

红队与威胁建模不是安全岗位的“附加分”,而是高质量 LLM / Agent 工程岗位的基础能力。

你越能把风险面、护栏和回滚路径讲得具体,面试官越容易判断你真的做过生产级系统。

⚠️ 核验说明(2026-03-29):本页已根据公开资料重审图片与风险分类表述。OWASP 项目持续更新中,若你需要最新风险条目,请以项目主页的当前版本为准。


最后更新日期: 2026-03-29