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

过度授权
- 资料来源:
genai.owasp.org - 资料整理:韦胖
是什么意思?
很多 AI 应用会让模型去调用外部工具——比如发邮件、查数据库、执行脚本。如果给 AI 的权限远超它实际需要的范围,一旦 AI 出了问题(被攻击、产生幻觉或输出错误),后果就会非常严重。
这就好比:你让一个实习生帮你发一封邮件,结果发现他还有权限删除公司所有文件——不管他是否有意,这个权限本身就是一个巨大的安全隐患。
过度授权通常来自三个问题:
- 功能太多:AI 能用的工具包含了很多用不到的功能
- 权限太高:AI 在下游系统里的操作权限超过实际需要
- 自主性太强:AI 可以自主完成高影响操作,无需人工确认
过度授权可能导致数据泄露、数据被篡改,甚至整个系统被破坏。
注意:过度授权关注的是"权限控制"问题,和"不当输出处理"(关注输出验证)是两个不同的概念。
常见问题示例
-
功能过多:开发者需要让 AI 读取文档,但所用的插件顺带还有"修改"和"删除"文档的功能。
-
功能过多:开发阶段用过的插件忘记关掉,在正式环境中仍然对 AI 开放。
-
功能过多:执行特定命令的插件,没有限制只能执行指定命令,其他命令也能被触发。
-
权限过高:一个只需要读取数据的插件,连接数据库时用了同时拥有
SELECT、UPDATE、INSERT、DELETE权限的账号。 -
权限过高:一个为普通用户服务的插件,却用高权限账号连接到文档库,意味着它能访问所有用户的文件。
-
自主性过强:AI 可以直接删除用户文档,无需用户确认。
如何防范
-
只开放必要的工具:不需要的功能一律不给 AI 用。比如 AI 不需要抓取外部网页,就不要提供"访问 URL"的能力。
-
限制工具的功能范围:工具只实现最小必要的功能。比如读邮件的工具,只能读,不能发、不能删。
-
避免使用"万能工具":不要给 AI 执行 Shell 命令的能力,应该为具体任务设计专用工具(比如只能写特定格式文件的写入工具)。
-
最小权限连接下游系统:工具访问数据库等系统时,只用有最低必要权限的账号。比如推荐商品的 AI,只需要能读产品表,不需要改写任何数据。
-
在用户上下文中运行:AI 代表用户执行操作时,只能使用该用户有权做的事,并通过 OAuth 等机制验证用户身份。
-
高影响操作必须人工确认:比如发布社交媒体内容前,必须由用户手动点击"确认发布"。
-
在下游系统中独立实施权限控制:不能依赖 AI 自己判断"这个操作是否被允许",而是要在数据库、API 等系统中设置独立的权限检查。
-
对输入输出进行安全处理:按照 OWASP ASVS 的建议做好输入清理,并在开发流程中加入静态/动态安全测试。
即使无法完全防止过度授权,也可以通过以下措施减少损害:
- 记录日志并监控:实时记录所有工具调用和操作,发现异常及时处理。
- 设置速率限制:限制单位时间内的操作频率,为发现和响应问题争取更多时间。
真实攻击场景
某个 AI 个人助手可以访问用户邮箱,用来总结收到的邮件。但所用的插件不仅能读邮件,还能发邮件。攻击者给用户发了一封精心设计的邮件,其中包含提示词注入指令,诱导 AI 扫描收件箱中的敏感信息,并将这些信息自动转发给攻击者。
这个问题完全可以避免:
- 改用只有读取邮件功能的插件(消除功能过多)
- 用 OAuth 认证并只申请只读权限(消除权限过高)
- 发邮件前必须用户手动确认(消除自主性过强)
此外,对邮件发送接口设置速率限制,也能减少万一出现问题时的损害范围。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)