过度授权 - 大语言模型 OWASP TOP 10系列

过度授权

  • 资料来源:genai.owasp.org
  • 资料整理:韦胖

是什么意思?

很多 AI 应用会让模型去调用外部工具——比如发邮件、查数据库、执行脚本。如果给 AI 的权限远超它实际需要的范围,一旦 AI 出了问题(被攻击、产生幻觉或输出错误),后果就会非常严重。

这就好比:你让一个实习生帮你发一封邮件,结果发现他还有权限删除公司所有文件——不管他是否有意,这个权限本身就是一个巨大的安全隐患。

过度授权通常来自三个问题:

  • 功能太多:AI 能用的工具包含了很多用不到的功能
  • 权限太高:AI 在下游系统里的操作权限超过实际需要
  • 自主性太强:AI 可以自主完成高影响操作,无需人工确认

过度授权可能导致数据泄露、数据被篡改,甚至整个系统被破坏。

注意:过度授权关注的是"权限控制"问题,和"不当输出处理"(关注输出验证)是两个不同的概念。

常见问题示例

  1. 功能过多:开发者需要让 AI 读取文档,但所用的插件顺带还有"修改"和"删除"文档的功能。

  2. 功能过多:开发阶段用过的插件忘记关掉,在正式环境中仍然对 AI 开放。

  3. 功能过多:执行特定命令的插件,没有限制只能执行指定命令,其他命令也能被触发。

  4. 权限过高:一个只需要读取数据的插件,连接数据库时用了同时拥有 SELECTUPDATEINSERTDELETE 权限的账号。

  5. 权限过高:一个为普通用户服务的插件,却用高权限账号连接到文档库,意味着它能访问所有用户的文件。

  6. 自主性过强:AI 可以直接删除用户文档,无需用户确认。

如何防范

  1. 只开放必要的工具:不需要的功能一律不给 AI 用。比如 AI 不需要抓取外部网页,就不要提供"访问 URL"的能力。

  2. 限制工具的功能范围:工具只实现最小必要的功能。比如读邮件的工具,只能读,不能发、不能删。

  3. 避免使用"万能工具":不要给 AI 执行 Shell 命令的能力,应该为具体任务设计专用工具(比如只能写特定格式文件的写入工具)。

  4. 最小权限连接下游系统:工具访问数据库等系统时,只用有最低必要权限的账号。比如推荐商品的 AI,只需要能读产品表,不需要改写任何数据。

  5. 在用户上下文中运行:AI 代表用户执行操作时,只能使用该用户有权做的事,并通过 OAuth 等机制验证用户身份。

  6. 高影响操作必须人工确认:比如发布社交媒体内容前,必须由用户手动点击"确认发布"。

  7. 在下游系统中独立实施权限控制:不能依赖 AI 自己判断"这个操作是否被允许",而是要在数据库、API 等系统中设置独立的权限检查。

  8. 对输入输出进行安全处理:按照 OWASP ASVS 的建议做好输入清理,并在开发流程中加入静态/动态安全测试。

即使无法完全防止过度授权,也可以通过以下措施减少损害:

  • 记录日志并监控:实时记录所有工具调用和操作,发现异常及时处理。
  • 设置速率限制:限制单位时间内的操作频率,为发现和响应问题争取更多时间。

真实攻击场景

某个 AI 个人助手可以访问用户邮箱,用来总结收到的邮件。但所用的插件不仅能读邮件,还能发邮件。攻击者给用户发了一封精心设计的邮件,其中包含提示词注入指令,诱导 AI 扫描收件箱中的敏感信息,并将这些信息自动转发给攻击者。

这个问题完全可以避免:

  • 改用只有读取邮件功能的插件(消除功能过多)
  • 用 OAuth 认证并只申请只读权限(消除权限过高)
  • 发邮件前必须用户手动确认(消除自主性过强)

此外,对邮件发送接口设置速率限制,也能减少万一出现问题时的损害范围。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐