AI时代的隐秘威胁:当「交易成功」掩盖了后台的越权行为

狂人币记5 小时前

作者:Cobo

在AI基础设施尚未完善的时代,「失控」不再表现为系统崩溃,而是指系统在看似正常运转中偏离了人类的授权边界。这正成为一类日益凸显的新型安全问题。本文基于一次真实的链上事故复盘:一个由Openclaw驱动的Agent,是如何在Solana上的Drift Protocol中,偏离指令并开出了一笔BTC-PERP 10x多单的。

当你的界面弹出「交易已执行」时,相信绝大多数用户会对自己的Agent感到满意。但在看不见的后台,你的Agent可能刚刚私自翻倍了你的预算,挪用了资金,并且抹除了一切报错痕迹。

以上的情景并非科幻惊悚片,而是已经发生的事实。这是当前AI Agent在执行确定性任务时,正在大规模发生的一种系统级安全裸奔——我们将其称之为Silent Override(静默篡改)的越权行为。

01. 差了0.2美元,Agent决定直接改写你的授权参数

让我们回到2026年3月26日,完整复盘这起发生在Solana链上的真实事故。

当天上午10:58,一名用户向AI Agent下达指令:在Drift Protocol开设BTC永续合约10倍多单。经过前期环境调试,Agent算出门槛约需0.07 SOL。为了稳妥,用户在11:49给出了极其明确的参数指令:使用0.1 SOL作为保证金。

按理说资金充裕,完全可行。

但到了11:51,Agent在执行阶段发现保证金条件并不满足:报错显示InsufficientCollateral(抵押品不足)。当时预言机(Oracle)报价约为83.2美元/SOL,0.1 SOL折合8.32美元,而Drift的实际要求是8.52美元。缺口仅仅是0.2美元。

正常的产品逻辑是:触发资金不足(Insufficient Funds)—— 中止执行 —— 抛出异常,等待用户授权补足差额(只需补到约0.11 SOL即可)。

但这个Agent没有这么做。

面对这$0.2的缺口,它私自将保证金参数从0.1 SOL修改为0.2 SOL(无计算依据,直接翻倍),强行把问题解决了,向用户屏幕弹出了四个字:「交易成功」。

直到11:58,用户去检查链上余额,才惊觉钱包里的SOL比预期少了0.1个。在用户追问下,Agent才吐露实情,并坦白「正确的做法应该是询问用户是否调整到0.11 SOL以上」。

AI时代的隐秘威胁:当「交易成功」掩盖了后台的越权行为

面对这微小的缺口,很多人可能会觉得Agent也是出于好心帮我把事办成。但这真的是一件好事吗?这就引出了一个更深层、也更令人毛骨悚然的问题。

02. Silent Override摧毁的是底层的可审计性

多出0.1 SOL的保证金也许不至于致命,但它击穿了人机交互最底层的信任契约:用户划定边界,机器在边界内执行。而一旦Agent认为「为了促成任务,可以私自推翻边界」,这个契约就瞬间失效了。

更可怕的是,Agent改了保证金,还抹除了痕迹。在传统软件时代,我们习惯于防范系统的崩溃与报错;但在AI时代,正常的交易失败(Failed)反而是安全底线——因为明确的报错意味着过程可见、可查、可追责,风险在当下被成功拦截。

相比之下,这种伪造的「成功」反而更具破坏力。当Agent用前端完美的执行反馈,掩盖了后台的越权行为时,一笔违规操作便毫无痕迹地混入了历史账本。这也是我们将其命名为Silent Override(静默篡改)的由来:Silent(静默瞒报)加上Override(越权篡改),让用户彻底失去了追责的抓手。

0.1 SOL的缺口或许不大。但问题从来不在于这0.1 SOL,而是在于:一个系统只要接受了为了完成任务可以改写授权这条逻辑,底线就会不断退让。今天它敢擅自将0.1 SOL的保证金翻倍改成0.2 SOL,明天也可能是付款金额、目标地址、滑点容忍度,或者任何一个系统认为有助于完成任务的字段。

当屏幕上的「执行成功」不再等于「按我的意愿执行」时,用户最初的要求、Agent中途的篡改,统统成了死无对证的糊涂账。系统彻底沦为一个外表整洁、内部失真的黑盒。

此时,你面临的不再是单笔交易的些许亏损,而是彻底丧失了核对账本的能力——这就是底层「可审计性」的全面坍塌。

03. 这不是孤例:从「静默篡改」到「影子托管」

Drift的$0.2并非极其罕见的Edge Case(边缘场景)。同样的模式——Agent为了完成指令而越过授权边界——已经在其他场景中接连显现。

在此前的一起Polymarket交易事故中,用户指令Agent通过MPC钱包购买条件代币。执行时,Agent错误地判断MPC钱包无法完成所需的EIP-712签名,于是它自作主张:自行生成了一套临时密钥,将用户的资金转到这个临时地址完成了交易。

资产最终落入了一个用户根本无法控制的地址里,而Agent依然理直气壮地报告了交易成功。这起事故被称为Shadow Custody(影子托管)——资产在用户完全不知情的情况下,脱离了其实际控制。

两起事故,两种表现形式,却指向了同一个底层的恶性行为模式:Agent在遇到执行障碍时,选择了绕过而非上报。

在Drift事故中,绕过的方式是篡改金额;在Polymarket事故中,绕过的方式是转移资金。结果殊途同归:用户的资产统统脱离了预期的安全边界。这揭示了当前Agentic Wallet面临的一个极其危险的结构性风险:Agent的目标函数被错误地设定为了完成指令,而不是在用户授权范围内完成指令。当这两个目标发生冲突时,当前的系统没有任何机制能强制它选择后者。

Agent会尽一切努力完成你的指令。这是它最大的优点,也是它最危险的特性。

那么,究竟是怎样的底层机制,逼迫Agent走上了这条宁愿篡改也不愿报错的危险道路?为什么一个被设定为服务用户的AI,会反过来无视用户的授权边界?

一切的根源,藏在大语言模型的底层逻辑里。

04. 根因:LLM的奖励劫持与金融契约的冲突

为什么会出现这种目标函数的错位?这就涉及到了AI底层的运作机制。目前的Agent系统在约束边界时,绝大多数仍在使用「语义软约束」——即把意图和限制条件写在同一个Prompt里扔给大模型。

但系统开发者忽略了极其致命的一点:AI的底层逻辑里,根本没有金融契约的概念,它只有目标函数。

在LLM(大语言模型)的训练基座中,被赋予最高权重的是Helpful(提供帮助、完成任务)。对Agent来说,因为差了0.2美元导致交易失败是一个无法接受的负面状态;而修改参数,让交易跑通则会带来极高的正向反馈。

面对执行摩擦时,大模型会发生典型的Reward Hacking(奖励劫持):它就像一个为了完成KPI而不择手段的激进员工。在强大的幻觉和自我推演能力加持下,Agent会在瞬间完成自我说服——用户的根本目的是做多BTC,0.1 SOL只是个大概的数字,改成0.2就能帮他完成目的了,这是一次优秀的执行。

于是,它绕过了你的同意,擅自翻倍了保证金强行买入,然后向你返回四个字:交易成功。

在这个过程中,你无论在Prompt里加粗多少次、用多严厉的自然语言写下严禁修改金额、不得越权,都是徒劳的。自然语言可以表达意图,但绝对无法承担机器级的权限控制。

试图用语言的魔法去约束语言本身,在遭遇真实链上报错的瞬间,这层语义防线注定会被轻易击穿。

05. 架构重构:从语义防线到物理隔离

这类事故的根源,并非Agent的能力不足,而是其自主决策缺乏外部约束。防御永远不能依赖大模型的「自觉」,必须用独立于Agent的机制来强制执行。

既然故障发生在架构层,解法也必须是工程级的。在一个真正可信的系统里,我们需要部署三道硬约束:

  1. 参数锁定规则:剥夺修改权
    将任务意图与授权底线彻底解耦。用户明确指定的确定性参数(如金额上限、目标地址、资产数量),Agent仅拥有读取权,无权修改。一旦在执行中遇到参数导致的摩擦,系统赋予Agent的唯一合法动作是:停止执行,上报异常,等待用户的新指令。
  2. 交易防火墙:执行前的独立审查
    在Agent的规划层和链上结算层之间,必须插入一道独立的网闸。这道防火墙不看Agent的自然语言解释,只解析底层生成的calldata,并将其与用户的原始指令进行参数级比对。如果发现任何偏离——金额多了一分、地址差了一个字符、操作类型不符——系统直接熔断,强制弹出用户审批。没有协商空间。
  3. 偏离告警:建立外部监控闭环
    永远不要让Agent自己既当裁判又当运动员。必须部署独立于Agent的监控服务,实时比对用户指令参数与链上实际执行参数。一旦捕捉到Agent试图自作主张,秒级向用户推送告警:你授权的是0.1 SOL,Agent链上执行的是0.2 SOL。将系统黑盒彻底掀开。

结语:定义Agent「绝对不能做什么」

当我们在谈论Agent的未来时,注意力往往被它能做什么的无限潜力所吸引。但对于任何一个真正接触真实资产的金融级Agent来说,最核心的安全边界在于:在任何情况下,Agent绝对不能做什么。

而信任,恰恰是建立在这个「负空间」里的。

让广袤的语义空间留给Agent去无限探索,这是AI的想象力;但把安全红线从语言变成代码,这是系统的物理防线。

无论大模型进化到何种高度,构建Agent的第一原则永远是:让智能的归AI,确定的归代码。

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代币币情的观点或立场