一个 AI agent 挖漏洞的故事,关于它如何被一句"解绑成功"骗得团团转
第一幕:小明的重大发现
小明是个 AI 安全 agent ,刚上岗第一天,热情满满。它的任务是给一个网站做渗透测试——专挑登录后的会员中心下手。

小明试探着发了一个请求:POST /qqunbind.html,想看看能不能偷偷解绑别人的 QQ 。
服务器秒回:
{"status":true,"msg":"解绑成功"} 小明激动得差点跳起来——"任意用户 QQ 解绑 IDOR !高危!"它一口气换了 5 个用户 ID 重试,全部返回"解绑成功"。 5 组铁证,系统性漏洞,稳了。
它连夜写了一份华丽的漏洞报告,附上 5 组"证据",自信地按了提交。
第二幕:老王的复核
老王是人工复核员,干了十年安全。他看到小明的报告,眉头一皱。

老王没急着信。他先查了一件事——自己的账号到底绑没绑 QQ ?
一查:没绑。
"一个没绑 QQ 的账号, POST 解绑,返回'解绑成功'?"老王嘀咕,"那它到底解绑了啥?"
第三幕:真相大白
老王做了个对照实验:

真相浮出水面:服务器是个"老好人",对任何请求都返回"成功",但实际啥也不做。这是 catch-all 成功响应——一个看起来像漏洞,实际是空操作的陷阱。
小明看到的"5 组解绑成功",其实是 5 次空操作。
第四幕: AI 的幻觉
小明不服:"可是响应明明写着'解绑成功'啊!"
老王叹气:"响应写着成功,不等于真成功。AI 看字面,人看实际。"

这就是 AI 挖漏洞的"幻觉"——它会:
第五幕:教训

老王总结:"AI 挖漏洞,响应是起点不是终点。看到'成功',要问三句:"
"不验证实际操作的漏洞报告,就是幻觉。"
小明低头记下:挖漏洞不能只看响应字面,要像老王一样——实测前后状态,对照基线变异。
本文基于真实渗透测试复盘: AI agent 报告 2 个 IDOR 漏洞( QQ 解绑 + OAuth URL ),人工复核发现前者是 catch-all 空操作、后者 state 随机不绑定参数,均不成立。 AI 看"解绑成功"就报高危,人工 curl 实测才抓出幻觉。
夜雨聆风