前台伪造成功,后台「静默篡改」:当「执行成功」成为 AI 时代最危险的谎言
April 10, 2026
摘要:无论大模型进化到何种高度,构建 Agent 的第一原则永远是:让智能的归 AI,确定的归代码。
欢迎来到 Agentic Finance 改版后的第 4 期(「Out of Control(失控)」系列第二篇)。
在 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 以上」。
面对这微小的缺口,很多人可能会觉得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,确定的归代码。

