AI 学习资料 · OWASP 大语言模型应用 Top 10 安全威胁 2025(简体中文版)
LLM06:2025 过度授权
本页据《OWASP 大语言模型人工智能应用 Top 10 安全威胁 2025》简体中文版整理,以 CC BY-SA 4.0 发布。API GET 的改动:标题层级整体提升一级(原文从二级标题开始)。
描述
在基于LLM的系统中,开发者通常会赋予LLM一定的自主能力,例如调用函数或通过扩展(不同厂商称其为工具、技能或插件)与其他系统交互,以根据提示词执行操作。此外,调用哪个扩展也可能交给LLM“智能体”,由它根据输入的提示词或LLM输出动态决定。基于智能体的系统通常会反复调用LLM,用前几次调用的输出为后续调用提供依据和方向。
过度授权是这样一种漏洞:当LLM给出意外、含糊或被操控的输出时,系统会据此执行破坏性操作,无论LLM出错的原因是什么。其常见触发因素包括:
- 设计欠佳的善意提示词或性能欠佳的模型引起的幻觉/虚构输出;
- 来自恶意用户、此前调用过的恶意/受损扩展,或(在多智能体/协作系统中)恶意/受损的对等智能体的直接/间接提示词注入。
过度授权的根本原因通常是以下一项或多项:
- 功能过多;
- 权限过高;
- 自主性过强。
过度授权可导致广泛的机密性、完整性和可用性风险,具体取决于LLM应用能够访问的系统。
注:过度授权不同于不当输出处理,其关注点是对高权限操作的控制,而非LLM输出的验证问题。
常见风险示例
1. 功能过多
LLM智能体能访问的扩展包含系统预期操作并不需要的功能。例如,开发者需要让LLM智能体能从文档库读取文档,但所选的第三方扩展还包含修改和删除文档的功能。
2. 功能过多
开发阶段试用的扩展被替换为更好的选项,但原插件仍然可供LLM智能体使用。
3. 功能过多
开放式功能扩展未正确过滤输入指令。例如,用于执行特定Shell命令的扩展未能阻止执行其他Shell命令。
4. 权限过高
LLM扩展在下游系统上的权限超过所需。例如,一个用于读取数据的扩展通过具有SELECT、UPDATE、INSERT和DELETE权限的身份连接到数据库。
5. 权限过高
一个本应在单个用户上下文中执行操作的扩展,却通过高权限的通用身份访问下游系统。例如,一个读取用户文档存储的扩展使用具有访问所有用户文件权限的账户连接到文档库。
6. 自主性过强
一个允许删除用户文档的扩展无需用户确认即可直接执行删除操作。
防范与缓解策略
-
最小化扩展
限制LLM智能体可以调用的扩展,只允许必要的扩展。例如,若应用无需从URL获取内容,则不应为LLM智能体提供此类扩展。 -
最小化扩展功能
将扩展中实现的功能限制为最低需求。例如,一个用于总结电子邮件的扩展只需读取邮件,不应包含删除或发送邮件的功能。 -
避免开放式扩展
避免使用开放式扩展(如运行Shell命令、获取URL等),应选择功能更细粒度的扩展。例如,需要将输出写入文件时,应实现专用的文件写入扩展,而非使用运行Shell命令的扩展。 -
最小化扩展权限
限制扩展对其他系统的权限,确保仅执行必要操作。例如,一个为客户提供购买推荐的LLM智能体只需对“产品”表的读取权限,而无需其他表的访问或修改权限。 -
在用户上下文中执行扩展
跟踪用户授权和安全范围,确保代表用户执行的操作在下游系统中以该用户的上下文执行,并使用最低权限。例如,扩展读取用户代码库时,应要求用户通过OAuth认证,并限制为最低所需范围。 -
要求用户审批
对高影响操作启用人工审批控制。例如,一个创建并发布社交媒体内容的应用,应在执行“发布”操作之前由用户确认。 -
完全中介
在下游系统中实施授权,而非依赖LLM判断操作是否被允许。遵循“完全中介”原则,确保通过扩展对下游系统的所有请求均经过安全策略验证。 -
清理LLM输入和输出
遵循安全编码最佳实践,如OWASP ASVS(应用安全验证标准)的建议,特别是关注输入清理。在开发流水线中应用静态应用安全测试(SAST)和动态/交互式应用测试(DAST/IAST)。
额外措施:
即便无法完全防止过度授权,也可通过以下措施减少损害:
- 对扩展和下游系统的活动进行日志记录和监控,及时发现不当操作并采取应对措施。
- 实施速率限制,减少不当操作发生的频率,为通过监控发现问题争取更多时间。
示例攻击场景
一个基于LLM的个人助手应用通过扩展访问用户邮箱,以总结新邮件内容。此扩展需要读取邮件的功能,但所选插件还包含发送邮件的功能。应用程序还存在间接提示词注入漏洞,攻击者可以通过恶意构造的邮件诱使LLM命令智能体扫描用户收件箱中的敏感信息,并将其转发至攻击者邮箱。
此问题可通过以下措施避免:
- 使用仅具备读取邮件功能的扩展,消除过多的功能;
- 通过OAuth会话认证并限定为只读范围,消除过高的权限;
- 要求用户手动审阅LLM扩展起草的每封邮件并亲自点击“发送”,消除过强的自主性。
此外,通过对邮件发送接口实施速率限制可减少潜在损害。
参考链接
- Slack AI数据泄漏案例:PromptArmor
- 失控的智能体:防止AI滥用你的API:Twilio
- 跨插件请求伪造与提示词注入:Embrace The Red
- NeMo-Guardrails接口指南:NVIDIA Github
- 双LLM模式:Simon Willison