2026 年 10 月 16 日凌晨 4 点 39 分(UTC),以太坊区块 26202756 打包了一笔 Multicall3 批量交易,一次性结清了 15 笔陈旧的链上「呆账」。大部分是普通用户忘了领的桥提款。其中 5 笔不是。

三笔交易之后,86 ETH、109,000 USDT、0.9 WBTC 进了 0x89012a55cd6b88e407c9d4ae9b3425f55924919b,这个地址从 2025 年 5 月起就被各家安全公司的复盘公开标注为 Cetus 黑客在以太坊上的收款地址。

提交交易的不是黑客,是一个挂着 ENS 域名 lostandfound.eth 的自动化机器人。它的生意模式写在官网上:帮用户找回卡在桥上、忘了认领的资产,协议直接把钱付给资产主人,事后自愿给 5% 到 10% 的小费。

这件事的完整取证由 SigIntZero 和 PandaSecurity 两家先行完成。按本站惯例,我们发文前在 Etherscan 上独立复核了全部三笔交易、每个金额和钱包现状,还查出了一个两篇原文都没有的新进展。

这个机器人到底干了什么

机器人的地址是 0x7f2ee458d58e61345ad61a70e8072511bf9f6671,在 04:39:35 到 04:40:11 之间提交了三个 Multicall3 批量调用。解码桥合约的 TokensClaimed 事件,与黑客相关的交付如下:

交易时间 (UTC)交付资产
0x89ca33…dde8904:39:3584 ETH(3 笔 × 28)+ 93,000 USDT + 0.9 WBTC
0xce494e…36ac04:39:5916,000 USDT(2 笔 × 8,000)
0xe63cb0…1fc804:40:112 ETH

每一笔认领事件里,发送方都是同一个 Sui 地址(黑客的 Sui 地址 0xe28b50ce…ff06),收款方都是同一个以太坊地址。能识别出「这是黑客的钱」的两个信号,从始至终就写在事件数据里,只是没人看。

同一批调用还顺带结清了其他普通用户的呆账,包括别的协议的排队提款。这正是问题所在:这是一个通用的「替人收尾」机器人,黑客的消息混在里面,形状一样、金库一样、没有脸。

39.2 万美元这个数字要说明一下口径:它来自机器人操作者自己的链上留言,按认领当时的价格逐项估价。币的数量是链上事实,美元总额是估价,会随行情浮动。

60 秒回顾 Cetus 被黑

2025 年 5 月 22 日,Sui 链上最大的集中流动性交易所 Cetus 因为流动性数学里的整数溢出漏洞被卷走约 2.2 亿美元。慢雾的复盘统计损失超过 2.3 亿,各家口径在 2.2 亿到 2.23 亿之间。

案发数小时内,Sui 验证人做了一件行业内极具争议的事:直接冻结黑客的链上账户,约 1.62 亿美元(DL News 报道)。随后社区投票通过协议升级,不需要黑客签名就把冻结资金转进了赔偿多签,受害用户基本获全额赔偿。

这套操作当年被当作成功案例记住。它确实是。但它有一个盲区,而这个月,盲区的账单到期了。

案发当天的 10 笔桥存款:一枚定时炸弹

重点来了,这也是为什么说这件事是架构问题,而不只是一个机器人手滑。

案发当天,黑客往 Sui 跨链桥里锁了 10 笔转到以太坊的资产,全部以他自己的以太坊地址为收款人,nonce 编号 7020 到 7034。SigIntZero 查桥的存款事件得到这个清单,我们在 Etherscan 上复核到了其中已执行部分的对应流水。

当天 11:12(UTC),黑客自己只认领了一笔:3,000 USDT,nonce 7034。八分钟后他把这笔钱转走,然后停手了。12:52,桥委员会紧急暂停以太坊侧合约,当晚 22:13 解除暂停。

黑客为什么只领一笔、留下九笔更大的不要?公开记录里没有答案。可能是限流、可能是暂停、可能单纯分心了,SigIntZero 明确拒绝猜测。记录在案的只有结果:桥重新开放后,九条已批准的桥消息成为金库的合法债权,收款人写死为黑客,任何人都能代为执行,没有过期时间。

认领机制:一张写好抬头的不记名票据

Sui 跨链桥的以太坊侧合约有一个 transferBridgedTokensWithSignatures() 函数:任何人提交桥消息加足额的委员会签名,合约就把钱付给消息里编码的收款人,和提交者是谁无关。PandaSecurity 的文章逐行拆了这段代码。

可以把一条已批准的桥消息理解为一张写好抬头的不记名票据:谁拿到柜台都是这张票,金库照票面付款。nonce 机制保证每张票只能兑付一次,这层防重放逻辑和签名重放攻击里讲的签名防护是同一族。这个设计本身是对的,也是通行做法,它让跨链桥认领抗审查,用户不会因为中继器跑路而永久损失资产。

问题在于「对用户安全」的前提是收款人应该收到这笔钱。当收款人是黑客时,无许可认领就是一个谁都能拧开的单向阀:救援机器人、找 gas 返利的 MEV 机器人、任何一个跑脚本的人。Sui 验证人的冻结够不到这些消息,因为认领动作不需要被冻结的 Sui 地址参与,委员会的签名早就跟着消息离开了 Sui。

机器人还找黑客要了小费

把这件事从「事故」升级成「荒诞剧」的细节:04:42,最后一笔认领完成不到三分钟,机器人按它对每个「被帮助」钱包的标准流程,给黑客发了一条链上留言,列出 8 笔「已批准但从未认领」的金额,建议给 5% 到 10% 的自愿小费。按机器人自己的估价,金额在 19,598 到 39,196 美元之间。收款对象,是一个 17 个月前就被公开认定为 Cetus 黑客的地址。

留言还贴心地补了一句:「资金已经在你的钱包里了,不需要再做任何操作。」

「你说得对,是我们的错」

第一个发现问题的不是操作者,不是 Cetus,不是 Sui 基金会,也不是 Tether,是一个路人。05:08,一个署名 tanuki42 的地址给机器人发链上消息,指出它的认领把约 39 万美元的桥提款打给了一个「与 Cetus 攻击公开关联的地址」。

三十分钟后,操作者在链上回复:「你说得对,是我们的错。」回复承认事先不知道那个地址是 Cetus 黑客,说明资金尚未转移,请求帮忙把案子转给 Tether 和 Cetus 以便冻结 USDT,并表示机器人现在会对每个收款人做已知攻击地址和制裁名单筛查。

公允地说,这个响应很快、公开、留在了链上。但顺序本身就是故事:筛查机制是在一个随机路人指出之后才存在的。

我们的链上复核:两篇原文都没有的新进展

按本站取证纪律,我们发文前重新跑了链上数据:

  • 三笔认领交易的时间、金额、提交者全部核实无误,86 ETH、109,000 USDT、0.9 WBTC,与两家报告精确一致;
  • 2025 年 5 月 22 日黑客自领 3,000 USDT(nonce 7034)的流水在钱包代币转账记录里清晰可见;
  • 10 月 20 日新增:两篇英文分析(10 月 16 日至 19 日发布)当时都记录该地址尚未进 Tether 链上黑名单。我们今天直接调用 USDT 合约的 getBlackListStatus() 查询,返回结果已经是 true,Tether 已经拉黑了这个地址。余额显示 109,000 USDT 仍躺在钱包里,被冻结,转不出去。0.9 WBTC 同样还在;至于原生 ETH,没有任何发行方能拉黑它。

换句话说:这笔资产里唯一带发行方紧急开关的部分,现在被冻住了。剩下的部分不是,也永远不可能是。

没人注意到的第一次交付

SigIntZero 的复原还挖出一件操作者和路人都没意识到的事:这次其实是第二次有人把黑客的呆账送出去。

10 笔 2025 年 5 月的桥消息里,机器人 10 月结清了 8 笔。第 10 笔,nonce 7029,1 LBTC,早在 2025 年 8 月 31 日就被人代领、付给了黑客的以太坊地址。提交者的交易历史混杂着委员会签名的暂停操作和大量认领提交,SigIntZero 判断这是一个中继账户。那次交付是故意的还是队列里又一条没筛查的呆账,没有公开信息。但链上事实是:早在任何人发现之前 14 个月,就有人替黑客把 Cetus 的赃款从桥里取出来过。

10 笔消息如今全部结清。那枚定时炸弹,已经完整爆炸完毕。

休眠不等于安全

把这件事归档为「操作者失误」然后翻篇,很容易。但有三条更大的教训。

第一,休眠不等于安全。被盗之后,应急响应追的是「正在动的钱」。已签名未执行的消息得不到任何关注,但它们是活的负债,任何人随时能把它们变成可支配资产。排队提款、待执行治理提案、不过期的授权,同理。PandaSecurity 自己联想到了 NEAR Intents 被黑事件,那次也是「看起来不动的余额其实随时能取走」,同样的「没人查这是谁的钱」模式。

第二,无许可中继把筛查负担推到了链下。协议允许任何人终局任何消息,协议本身就不做筛查,那么所有筛查都活在中继者这一层。一个谨慎的中继者会被一个不谨慎的毁掉。「没人会去干这种事」不是安全控制,是一个愿望。

第三,「找回资产」类工具是安全敏感软件。只读的「我能领什么」查询器无害。替别人执行认领的机器人是一套没有合规检查的支付系统,理应按任何转移价值的合约来对待威胁模型。

项目方和机器人运营者的清单

对跨链桥和协议团队的应急响应清单,这次事件给出三条具体补充:

  1. 把黑客名下的待执行消息纳入冻结动作。被盗后暂停和冻结的同时,枚举黑客地址名下每一笔已签名未执行的出站消息,决定它们的去向:委员会托管、协调目标链发行方在终点冻结,或明确的销毁方案。在别人替你动手之前决定。
  2. 考虑在认领路径上加延迟名单。一个范围极窄、治理控制的名单,对涉及已知攻击地址的认领做「延迟」而非「永久拉黑」,保住其他人的无许可中继。这是对审查抗性的折中,必须透明治理,但「完全无检查」的代价刚刚演示过,39.2 万美元。
  3. 把消息的来源链信息做显眼。发送方和收款方从头到尾都在认领事件数据里。让它们在浏览器视图里一眼可见,中继者和监控工具才能做筛查。

对跑中继或救援机器人的人:对每笔转账的两端做筛查,对免人工复审的认领金额设上限,筛查源不可用时拒绝执行而不是放行。那次检查只是一次 API 调用的事。跳过它的样子,就是 10 月 16 日凌晨那三笔交易。

时间线

#时间 (UTC)角色发生了什么
12025-05-22 早间Cetus 黑客抽干 Cetus 流动性池(约 2.2 亿美元),开始转移赃款
22025-05-22, 11:12 前Cetus 黑客往桥里锁 10 笔转账(nonce 7020–7034),收款人为自己
32025-05-22, 11:12Cetus 黑客自领一笔(3,000 USDT,nonce 7034),留下九笔
42025-05-22, 12:52桥委员会紧急暂停以太坊侧合约
52025-05-22Sui 验证人冻结链上约 1.62 亿美元;已签名的桥消息不受影响
62025-05-22, 22:13桥委员会解除暂停,九笔未认领消息恢复「任何人可代领」
72025-08-31中继账户代领 nonce 7029(1 LBTC),付给黑客地址
82026-10-16, 04:39–04:40lostandfound.eth 机器人三个批量调用结清剩余 8 笔,未查收款人
92026-10-16, 04:42机器人给黑客发链上留言,建议 5–10% 小费
102026-10-16, 05:08tanuki42指出收款人是 Cetus 黑客
112026-10-16, 05:38机器人操作者「我们的错」,上线收款人筛查,请求冻结 USDT
122026-10-20 前Tether拉黑该地址,109,000 USDT 冻结在原地(本站链上核查)

最后

10 月 16 日没有人黑任何东西。一份合约按写好的逻辑执行了合法消息,付了一个早就应该进黑名单的收款人,因为唯一有条件发现问题的角色,一个自动化中间商,根本不知道自己在搬谁的钱,连「救援小费」的请求都是发给黑客的。

对所有冻结过黑客资产的链,这个结论都不舒服:冻结覆盖的是攻击者仍然控制的东西,它对攻击者已经签名、又弃置不管的债权毫无发言权。那些是跨链桥另一头的开放阀门,等第一个机器人来拧开,不管它出于好心还是别的。如果你的应急响应停在冻结这一步,那它停得太早了。

对普通用户的落点是一样的:旧的不去认领的桥提款是有价值的资产,围绕它们的工具会比你自己先找到它们。如果哪个桥上还有你没领的旧转账,去领掉,或者取消掉,因为别人终究会替你「领」。

常见问题

机器人真的把钱打给 Cetus 黑客了吗?打了多少?

打了。2026 年 10 月 16 日,一个挂着 lostandfound.eth 域名的自动化机器人在以太坊上分三笔交易提交了 8 笔 Sui 跨链桥的过期提款,收款人全部是公开归属 Cetus 黑客的地址,合计 86 ETH、109,000 USDT、0.9 WBTC,按操作者当时的估价约 39.2 万美元。我们在 Etherscan 上逐笔复核过这三笔交易和收款钱包,金额完全对得上。

Sui 跨链桥这次被黑了吗?

没有。桥的合约完全按设计执行。跨链桥的认领函数允许任何人提交带委员会签名的桥消息,资金永远付给消息里写定的收款人,和提交人是谁无关。机器人提交的是合法消息,只是没查收款人是谁。问题出在机器人这一层的缺失筛查,不是桥的代码出了漏洞。

Sui 验证人不是冻结了黑客的资产吗?这笔钱为什么还能动?

冻结发生在 Sui 链上,挡的是黑客的 Sui 地址签署新交易。但这批提款是已经签名、已经带委员会批准离开 Sui 的桥消息。在以太坊侧认领它们不需要冻结中的 Sui 地址做任何事,任何人都能代为提交,金库照付消息里写的收款人。这就是单链冻结的天生盲区:已签名的跨链消息,永远离一笔无许可认领只差一步。

这笔钱现在怎么样了?追回来了吗?

没有追回,但最关键的部分被冻住了。按我们 10 月 20 日的链上核查:109,000 USDT 和 0.9 WBTC 还在黑客钱包里没动,而 Tether 的链上黑名单已经包含这个地址,USDT 被冻结转不出去。而原生 ETH 没有发行方,任何人都冻不住。值得注意的是,两篇英文原始分析(10 月 16 日至 19 日发布)当时都记录该地址尚未被拉黑,拉黑是之后这几天发生的。

这件事对跨链桥项目方有什么教训?

把「黑客地址名下已签名未执行的出站消息」纳入应急响应清单。被盗后除了冻结链上资产,还要枚举每一笔挂在黑客地址上的待认领桥消息、排队提款、未过期授权,在别人替你动手之前决定它们的处置:委员会托管、协调目标链上的发行方冻结(比如 Tether 的链上黑名单),或者明确的处理方案。这次的 39.2 万美元,就是应急响应停在「冻结」这一步的代价。