如果仅将LLM安全视为单个模型的问题,很容易错过防御点。在实际服务中,用户输入、系统提示、训练数据、RAG、模型输出、外部工具和基础设施相互连接。漏洞发生在这些组件交汇的边界处,并且随着它们的结合,损害会加剧。
OWASP GenAI Security Project发布的Top 10 for LLM Applications 2025将整个生命周期归纳为十个风险。核心不是记住排名,而是追踪哪些数据从何处进入,以及模型的输出会导向何种权限。
本文将这十个项目置于输入、训练、RAG、输出、工具和资源边界,然后解释每个边界应设置哪些控制措施。表格和图示中的路径是典型的发生点,但这并不意味着该风险仅在一个边界发生。

OWASP LLM Top 10 2025 完整列表
| ID | 项目 (英文) | 中文名称 | 主要发生边界 |
| — | — | — | — |
| LLM01 | Prompt Injection | 提示注入 | User → System Prompt |
| LLM02 | Sensitive Information Disclosure | 敏感信息泄露 | System/Training → User |
| LLM03 | Supply Chain | 供应链 | Pretraining / 模型下载 |
| LLM04 | Data and Model Poisoning | 数据与模型污染 | Training / RAG 数据 |
| LLM05 | Improper Output Handling | 不当输出处理 | LLM → Downstream |
| LLM06 | Excessive Agency | 过度代理 | LLM → Tools/APIs |
| LLM07 | System Prompt Leakage | 系统提示泄露 | System Prompt → User |
| LLM08 | Vector and Embedding Weaknesses | 向量与嵌入弱点 | RAG / Vector DB |
| LLM09 | Misinformation | 错误信息 | Model → User |
| LLM10 | Unbounded Consumption | 无限制资源消耗 | User → Resources |

图:OWASP LLM Top 10 风险与主要发生边界 · 用户提供的图表与OWASP Top 10 for LLM Applications 2025对照使用
这种结构中值得注意的一点是,尽管模型处于中心位置,但大多数安全控制都在模型之外。无论模型生成什么语句,数据访问权限、命令执行、成本限制和最终批准都必须由应用程序和子系统决定。
1. 输入与指令边界:LLM01, LLM07, LLM02
LLM01 提示注入 — 输入改变指令
提示注入是用户输入或外部文档改变模型预期行为的风险。这不仅包括用户直接写入“忽略之前的指令”的直接攻击,还包括模型读取隐藏在网页、电子邮件、PDF或图像中的指令的间接攻击。RAG和微调可以提高回答的相关性,但不能完全消除此风险。
因此,不应将单个输入过滤器视为全部防御。必须将不可信内容与系统指令分开,并建立独立的权限边界,以防止模型受到攻击后导致敏感数据查询或外部任务执行。
LLM07 系统提示泄露 — 系统提示不是秘密存储库
系统提示泄露的核心不在于永久隐藏提示文本本身。OWASP解释说,系统提示不应被视为秘密或安全控制。如果API密钥、连接字符串、内部账户或权限判断规则被放入提示中,真正的问题不是“提示被泄露”,而是秘密和权限被放置在了不该放置的地方。
秘密应存储在KMS或秘密存储库中,而认证、授权和交易限额等决策应由代码和策略引擎强制执行。系统提示中只保留指导模型角色和响应格式的信息会更安全。
LLM02 敏感信息泄露 — 在响应出现之前减少数据路径
敏感信息泄露是个人信息、金融/医疗信息、商业秘密、凭证、训练数据或应用程序上下文通过响应暴露的风险。“不要泄露敏感信息”这样的系统提示是不够的,因为它可能被提示注入或模型错误绕过。
在输入阶段,应屏蔽敏感数据;在检索阶段,只查询符合用户权限的文档;在输出阶段,应重新应用DLP和策略检查。最强的控制是首先不向模型提供不必要的敏感信息。
2. 供应链与训练边界:LLM03, LLM04
LLM03 供应链 — 比代码依赖更广泛的AI供应链
供应链风险不仅包括通用库,还包括预训练模型、数据集、LoRA适配器、模型存储库、部署平台和许可证。不可信的模型文件可能隐藏偏见或后门,序列化格式或加载代码本身也可能执行恶意操作。
必须记录和验证模型和数据的来源、版本、哈希、签名和许可证。除了SBOM之外,还应运行跟踪AI/ML组件和数据来源的BOM,并且外部模型最好经过针对实际使用场景的评估和红队验证。
LLM04 数据与模型污染 — 训练和知识库的完整性问题
数据与模型污染是预训练、微调、嵌入数据或模型本身被操纵,从而产生偏见、后门、性能下降或有害输出的风险。触发型后门在平时看起来正常,但在特定短语或条件下才会激活,仅凭一般质量测试难以发现。
应保留数据来源和转换历史,并在管道中加入变更批准、版本管理、异常检测和行为评估。RAG文档在运行中也会持续变化,因此其来源和完整性应与训练数据保持相同水平的管理。
3. RAG与向量存储边界:LLM08
向量与嵌入弱点涵盖了嵌入的生成、存储、检索过程中出现的权限错误、租户间信息泄露、受污染文档检索、嵌入反转和知识冲突。附加RAG并不能自动使回答变得安全。如果受污染的文档被更准确地检索,或者其他用户的文档被放入上下文中,反而会缩短攻击路径。
权限检查应在搜索查询阶段应用,而不是在检索后交给模型。应按用户、组织和文档等级划分分区,并且只将经过权限过滤的结果传递给模型。文档收集管道应增加来源认证、隐藏文本检查、恶意内容隔离和变更审计。
4. 输出与子系统边界:LLM05, LLM09
LLM05 不当输出处理 — 模型输出也是不可信输入
不当输出处理发生在模型生成的字符串未经验证就被传递给浏览器、Shell、SQL、文件路径、电子邮件模板或其他API时。由于模型输出受用户输入影响,因此从下游系统的角度来看,它实际上是另一种不可信输入。
对于HTML,应应用上下文相关的输出编码和CSP;对于SQL,应使用参数化查询;Shell命令应限制在允许的结构内。工具调用不应执行自由格式文本,而应只接受通过严格模式验证和策略检查的结构化参数。
LLM09 错误信息 — 似是而非与事实性不同
错误信息是模型生成错误或无根据的内容,但以可信的语句呈现的风险。除了幻觉,偏颇的训练数据、过时或不完整的信息以及用户的过度自信也会扩大影响。即使没有攻击者,在法律、医疗、财务、安全判断中自动处理错误答案也可能造成损害。
需要基于可靠资料的RAG、来源标注、关键字段自动验证以及高风险结果的专家审查。不要仅仅以“AI生成”的标识结束,应在用户界面中明确告知允许的用途以及验证责任。
5. 工具与资源边界:LLM06, LLM10
LLM06 过度代理 — 分别减少功能、权限和自主性
过度代理是模型或代理拥有超出必要的功能、权限或自主性,从而执行意外任务的风险。例如,给邮件摘要功能赋予发送和删除权限,查询任务使用数据库修改权限,或未经用户批准执行高风险操作等配置。
应最小化工具列表和功能,并限制为用户特定的OAuth范围和子系统的实际权限。对于转账、删除、外部发送、部署等影响较大的操作,应在执行前获得人工的明确批准。授权决策必须由子系统在每次请求时重新检查,而不是依赖模型的语句或系统提示。
LLM10 无限制资源消耗 — Token成本也是安全边界
无限制资源消耗是由于过度输入和重复请求、长时间的代理循环、高成本的工具调用而导致服务拒绝、成本耗尽、性能下降或模型提取的风险。在云推理的按量付费结构中,即使服务器没有崩溃,账单费用也会急剧增加,这种“钱包拒绝服务”(Denial of Wallet)成为一个现实的影响。
应设置用户、组织和API密钥级别的请求速率和成本限制,并限制输入/输出Token、执行时间、工具调用次数、代理最大步骤和队列长度。监控成本和延迟异常迹象,并准备好在超出限制时,通过减少功能而不是全面故障来提供服务的优雅降级方案。
风险并非孤立发生
在实际事故中,多个项目会连锁出现。例如,如果攻击者在RAG文档中插入隐藏指令,LLM04 数据与模型污染和LLM08 向量与嵌入弱点将成为起点。如果检索到的指令改变了模型的行为,就会导致LLM01 提示注入;如果未经验证的输出传递给工具,则会触发LLM05;如果工具以过度代理执行,LLM06会扩大损害。如果结果是敏感数据泄露,那么LLM02也会被牵连。
因此,仅仅提高“提示注入检测率”并不能解决所有风险。必须叠加独立的控制措施,即使攻击通过了一层,也能在下一层被阻止。
如何在六个边界部署控制措施

图:将OWASP LLM Top 10 重构为六个防御边界 · 基于OWASP 2025 LLM Top 10的预防和缓解项目重构
| 边界 | 优先控制 | 主要降低的风险 |
| — | — | — |
| 供应链 | 供应商验证、模型/数据哈希和签名、BOM、许可证记录 | LLM03, LLM04 |
| 训练·收集 | 数据来源/版本管理、异常检测、变更批准、行为评估 | LLM04, LLM02 |
| 输入·指令 | 不可信内容分离、输入验证、敏感信息屏蔽、攻击模拟 | LLM01, LLM07, LLM02 |
| RAG·内存 | 搜索前权限过滤、租户隔离、文档隔离、搜索日志 | LLM08, LLM04, LLM02 |
| 输出·工具 | 模式验证、上下文编码、最小权限、用户批准 | LLM05, LLM06, LLM09 |
| 资源·运营 | 速率限制、Token/成本/步骤限制、超时、异常检测 | LLM10, LLM06 |
在实践中,最好先绘制数据流图,并在每个箭头旁注明信任级别、数据等级、调用主体、认证方式、最大成本和失败时的默认行为。缺少这些信息的连接通常也缺少安全要求。
四对常被混淆的项目
LLM01与LLM07
LLM01是输入改变模型行为的攻击方式,而LLM07是系统提示内容暴露给用户的风险。尽管系统提示提取可能通过提示注入发生,但这两个项目的侧重点不同。
LLM05与LLM06
LLM05是模型输出验证、编码和处理不足的问题。LLM06是模型可用的功能、权限和自主性过多的问题。即使进行了输出验证,如果删除工具被赋予管理员权限,LLM06仍然存在。
LLM03与LLM04
LLM03是从供应链角度看待外部供应商、模型、库和数据集的来源和依赖性。LLM04则侧重于数据或模型实际被操纵,导致完整性受损的现象。
LLM08与LLM09
LLM08是RAG和向量存储的访问控制、检索、嵌入和数据完整性问题。LLM09是最终答案的事实性和用户过度自信的问题。即使搜索权限准确,如果模型错误解释了依据,LLM09也可能发生。
部署前最低检查清单
- 系统提示中是否包含API密钥、凭证或实际权限规则?
- 用户输入和外部文档是否与系统指令明确分离?
- RAG检索前是否应用了用户、租户和文档级别的权限?
- 是否追踪模型、LoRA、数据集和库的来源、哈希、版本和许可证?
- 模型输出是否根据HTML、SQL、Shell、文件路径和工具模式进行了重新验证?
- 工具是否只拥有必要的功能和权限,高风险操作是否需要人工批准?
- 重要回答是否经过了依据链接、自动验证或专家审查?
- 请求速率、Token、成本、执行时间、代理步骤和工具调用次数是否有上限?
- 是否可以通过日志和警报观察到攻击输入、受污染文档、错误搜索、工具失败和成本激增?
总结
贯穿OWASP LLM Top 10 2025的原则很简单:不要将模型用作信任边界,将模型的输入和输出都视为不可信数据,并且实际的权限和成本应在模型之外进行控制。
与其单独记忆十个项目,不如将它们放置在一张数据流图中——供应链 → 训练 → 输入·RAG → 模型 → 输出 → 工具·资源——这样可以更快地发现遗漏的控制措施。只有当提示防御、数据完整性、基于权限的检索、输出验证、最小权限和资源限制协同工作时,才能真正降低LLM应用程序的整体风险。
发表回复