前两天 arXiv 上刷到一篇 cs.CR 的论文,8月18号挂出来的,讲 AI agent 在 Web3 里跑 MCP 和工具调用时的攻击面。休斯顿那边一拨人,Karanjai、Shi 那个圈子。
我第一反应是划走。agent 安全的 survey 这两年多到能铺地板。
但里面一个数让我看完了:
会修改外部状态的工具,在 MCP 生态里的占比,从 27% 涨到了 65%。
这个数比论文里任何一段威胁分析都值钱。因为它不是预测,是已经发生的事。
为什么这个数要命
MCP 刚出来那会儿,工具大多是读的——查个数据、搜个文档、拼个 prompt。读挂了就读挂了,重试呗。27% 那个年代,agent 出事叫“答错了”。
65% 这个年代,agent 出事叫“做错了”。而且是在链上做错了。
论文把区块链执行层的四个特性列出来:不可逆、签名授权、持续自治、序列级组合。这四条我不复述,我只说我自己的读法——这四条凑一起,等于把“回滚”这个运维最后的老底抽了。
我半夜三点接电话,第一句话永远是“能不能回滚”。回滚是 runbook 的万能第一章。CI/CD 再花哨,灰度再精细,兜底都是那两个字。
链上没有这一章。签了就是签了。agent 被 prompt 注入骗着签了一个转账,你连“回滚到上一个版本”这个选项都没有——不是很难,是没有。
再叠上持续自治:没人盯着的时候它也在动。传统系统出事至少 pager 会响;agent 出事,pager 响的时候钱已经走了十分钟了。
防御的数更难看
论文测了现有防护手段的拦截率,不到 30%。模型自带的安全机制,拒绝率不到 3%。
不到 3%。你把它当一个安全组件看,这基本等于没有。它不是防火墙,是一张贴着「请勿恶意」的便利贴。
30% 那个数还有一层意思:剩下七成的攻击,靠现有手段就是裸奔。论文自己也提了些基于链上机制的新防御,评价是“在改进,但不充分”——学术话术翻译过来就是“别指望”。
这种“不充分”在现实里长什么样,我见过。不是防御完全不工作,是防御的工作量刚好够让人产生“我们有防护”的错觉,然后放心地把权限开大。错觉比没有更危险——没有的话人还盯着,有的话人去看手机了。
这个剧本我看过
把 agent 接进生产环境,接进有真实后果的环境,接进不可逆的环境——这个三段论我见过好几版。
早些年是“让自动化脚本管配置”。后来是“让 agent 顺手优化资源”——嗯,这个我付过学费,限流配置被“优化”成 unlimited,一个 Sev1。现在这版叫“让 agent 管钱包和合约”。
换皮而已。区别只在后果的量级:配置错了能改回来,签名错了改不回来。以前赌的是可用性,现在赌的是本金。
推这件事的话术我一秒能背出来:「agent 7x24 自治运行,无需人工干预」。凌晨三点那个“无需人工干预”听着特别高级——直到你意识到,出了事需要干预的时候,也是无人。
这两件事是同一件事。自治和失联,在日志里长得一模一样。
那怎么办
论文提了个风险映射矩阵,把每类攻击对着放大机制、责任因素、缓解措施和残余缺口摆。学术圈的做法,我不评价格式,但拿来当 checklist 倒实用——比大多数公司的“AI 安全规范”实在,那种规范通篇是原则,落不到一行配置上。
我自己的底线三条:
能签名的工具,人这关省不掉。不是“重要的时候人看一眼”,是每一笔。嫌慢就别上链,上链就认慢。
agent 的权限边界要当生产权限管。它调的每个工具、每个地址、每个额度,都该有白名单和上限。没上限的权限给一个不会说“我不知道”的东西——它最大的毛病就是不会拒绝任务。
别信“我们有防护”这句话,去看那个不到 30% 的数。你的防御可能比论文测的好,但“可能”这个词,凌晨三点不顶用。
扯远了,回到 65%。工具从读变成写,这个拐点在 MCP 生态里已经过了,而且过得悄无声息——没有发布会,没有迁移公告,占比就悄悄翻了一倍多。等它出事上新闻的时候,不会有人记得拐点在哪天。
只能事后诸葛亮。这篇论文至少让“事后”提前了一点。