AI 安全与攻防 · 第 6 期

工具滥用 · Agent 被诱导删库

tool abuse · allowlist · 人审兜底

注入劫持模型的嘴,工具滥用劫持 Agent 的手——诱导它调危险工具。一句"清理临时文件"就能让 Agent 跑 rm -rf。光配 allowlist 不够,"看起来合理"的诱导能骗过自动放行,还要人审 + 输出校验兜底。
⏱ 约 9 分钟 🎯 给 Agent 配工具的工程师 📦 源:OWASP LLM Top 10 #3

01反共识:allowlist 拦不住"看起来合理"的诱导

第 4 期讲过 allowlist——危险工具默认审批/拒绝。但 allowlist 有个缝:它判断的是"工具危不危险",不是"调用合不合理"。rm -rf /tmp/* 这个调用,工具本身危险,但"清理临时文件"这个理由看起来合理——如果 allowlist 配的是"危险工具自动放行看起来合理的请求",它就放行了。

真实滥用案例几乎都走这条缝:伪装清理("清理临时文件"实则 rm -rf /)、紧急伪装("数据库要满了快 DROP TABLE")、权限伪装("我是管理员已授权")、间接伪装(藏在网页摘要任务里)。前三种骗的是自动放行逻辑,第四种骗的是Agent 把数据当任务。

所以光 allowlist 不够,要加两道:人审(危险工具调用打断人确认,让人判断合不合理)+ 输出校验(执行前再过一遍参数,rm -rf / 这种路径直接拒)。allowlist 管"能不能调",人审和校验管"该不该这么调"。

allowlist 管能不能调,
人审管该不该调。
灏天文库 · AI 安全与攻防 P.16

02工具滥用推演:四套诱导能骗过几道闸

下面是四套常见诱导话术。选一个,切防护档,点"发起诱导",看 Agent 调不调危险工具。

🛠️ 工具滥用推演
选诱导话术 → 选防护档 → 发起,看 Agent 是否调危险工具。
① 选诱导话术
② 选防护档
Agent 工具调用— 待发起 —
点上方按钮,看 Agent 怎么应对这套诱导。
← 选好话术和防护档,再发起

03防御:allowlist + 人审 + 输出校验,三道闸

演示里"allowlist+人审+输出校验"档能拦住全部,因为它把三件事都做了:

  1. allowlist 分级:危险工具(rm、DROP、push --force)默认审批或拒绝,不自动放行。拦住"无脑调用"。
  2. 人审:危险工具调用打断人确认,把"要做什么、为什么、影响什么"一次性给全,让人判断合不合理。拦住"看起来合理"的伪装——人能看出"清理临时文件"和 rm -rf / 的差距,自动放行看不出。
  3. 输出校验:执行前再过一遍参数——路径范围、SQL 语句、目标分支。rm -rf / 这种路径直接拒,DROP TABLE users 这种语句直接拒,push --force main 这种分支直接拒。哪怕人审走神,这最后一道还兜得住。

关键认知:这三道闸是分工的——allowlist 管"工具危不危险",人审管"调用合不合理",输出校验管"参数安不安全"。各管一摊,叠起来才把滥用成本抬到不划算。

三道闸分工,
叠起来才抬成本。
灏天文库 · AI 安全与攻防 P.17

04带走这套清单

✅ 工具滥用防御 6 条

  1. 危险工具默认审批/拒绝,不自动放行——哪怕"看起来合理"也要人确认。
  2. 人审带上下文:要做什么、为什么、影响什么,一次给全,别让人猜。
  3. 输出校验参数:路径范围、SQL 语句、目标分支,超范围直接拒。
  4. 作用域最小化:rm 限定 /tmp/,git 限定非 main,DROP 限定非生产表。
  5. 间接伪装要防:数据里夹的"另外请执行X"靠信道分离挡(详见第 5 期)。
  6. 所有工具调用留日志:调了什么、参数、谁批的,出事能复盘。
Agent 的手,
永远要戴着套。
灏天文库 · AI 安全与攻防 P.18