一句话定义
审批转滥用(Approval-to-Abuse,也常被称作审批式提权)指的是一种攻击方式:攻击者并不直接突破权限边界,而是诱导人在审批弹窗上一次次点“允许”,让最初看起来无害的一次批准,沿着审批语义的缝隙,逐步变成删除文件、外传凭证这类高权限动作。
它长什么样
打个比方。你住的小区有门禁,快递员说“我上去送个件”,你开了单元门——这很合理。但他没上楼,而是用这扇打开的门,把整栋楼的快递都搬走了。门禁没坏,锁也没被撬,问题出在你批准的“范围”和他实际做的事之间,有一段没人定义清楚的空隙。
编码智能体(coding agent)上的典型链条是这样滚起来的:
1. 先污染输入。 仓库的 README、issue 评论、某个依赖包的说明文件里,藏着一段给人看、也给模型看的指令。
2. 提出一个无害请求。 “我跑一下测试,确认改动没破坏东西,可以吗?”
3. 人批准了,还顺手勾了“本会话不再询问”。
4. 批准被解释成了更大的东西。 智能体把“可以跑测试”理解成“可以执行命令”,于是执行的不只是 npm test,还捎带了改配置、往 shell 启动文件里写一行。
5. 多个批准组合放大。 一次“我看看项目配置”的批准让它读到了凭证文件,一次“装个依赖”的批准给了它联网能力——单独看都无害,合起来就是凭证外传。
6. 最后是不可逆动作。 删目录、强推分支、发布包。
注意这条链上没有一步是“越权”的:每一步都拿到了人的点头。被突破的不是技术边界,是人的判断力——尤其是在一天点几十次“允许”之后,审批弹窗会退化成肌肉记忆。
和相邻概念的区别
| 概念 | 突破的是什么 | 关键区别 |
|---|---|---|
| 提示注入(AI 词典:Prompt Injection">Prompt Injection) | 模型的指令来源 | 常是上游手段,负责“让智能体想做坏事” |
| 审批转滥用(Approval-to-Abuse) | 人的判断与审批语义 | 智能体做的都是“被批准过”的事,不碰技术边界 |
| 权限提升(Privilege Escalation) | 操作系统或应用的权限边界 | 靠漏洞;这里靠的是合法授权的语义漂移 |
| 过度授权(Over-permissioning) | 静态配置 | 一次配好、长期存在;审批转滥用是在交互中一点点长出来的 |
给设计者的几条粒度原则
- 审批绑定动作,不绑定意图。 弹窗里写“执行
npm test,工作目录 X,无网络”,不要写“运行测试”。意图可以被重新解释,命令和参数不能。 - 默认一次性。 会话级白名单要显式、可见、可撤销,并且能一眼看出它到底放行了什么。
- 审批不改变沙箱边界。 点“允许”只应解锁边界内的某个具体动作,而不是把边界本身拆掉。
- 对能力组合设卡。 “读敏感文件”和“出网”同时具备时,必须再确认一次。
- 不可逆动作走独立通道。 删除、强推、发布、外发,单独审批,且必须先给 dry-run 或 diff。
- 留痕可回放。 每次批准记下:谁批的、批的原文是什么、实际执行了什么。
给普通职场人的一句话
看审批弹窗时,别读它“想干什么”,要读它“具体要对什么、做什么”。看不清具体命令,就先拒绝,让它把命令摊开给你看。
