WAX 跨链桥事件:一个负数如何打开真实资产的跨链出口

未经校验的负手续费打开跨链支付通道的编辑插画

当负手续费把用户应付金额抵消为零,桥却仍然释放了真实资产。编辑插画,并非交易路径截图。

执行摘要

2026 年 10 月 22 日,一个刚建立不久的 WAX 账户在几乎没有付出资产的情况下,通过 WAX 跨链桥提走约 90,528 美元的五种资产。这不是一起验证者私钥失窃事件,也不是密码学机制被攻破。根据 Bitquery 于 10 月 24 日发布并核验的完整重建,提款逻辑接受了一个与提款数量绝对值相等、符号相反的手续费。于是,用户在 WAX 侧应被扣除的“提款额加手续费”变成零,但桥的支付流程仍在 Solana 上释放了真实 USDC,并在以太坊上释放了 USDT、DAI、WETH 与 WBTC。

五次提款在 86 秒内完成。Solana 端的 USDC 提款取走对应金库的 97%;以太坊端四种资产的提款,则分别取走各自金库余额的 81% 到近乎 100%。随后,资产经兑换和充值地址继续转移。Bitquery 将最终去向归因于 HitBTC,并称从第一次提款到最后一笔被盗价值进入相关充值地址只用了 38 分钟。公开以太坊交易也独立显示:研究所列的接收钱包连续四次调用桥金库,之后进行授权和兑换,最终向重建报告认定的交易所充值地址发送 15.58 ETH。

本文的核心判断是:这起事件不是单点的“少写了一个判断条件”,而是一次控制组合失效。缺少下界校验,让负手续费进入系统;签名方没有独立重算提款的经济约束,却批准了没有足额资金支持的支付;缺少单笔提款上限,又使一个错误请求能够抽走接近整个资产金库。三层弱点缺一不可,但叠加之后,一个极其普通的算术输入就变成了跨链偿付能力损失。

这一区分对机构风险管理非常重要。评估跨链桥,不能只看密码学是否先进、验证者数量多少或是否做过审计。安全性同样取决于最普通的边界校验、链下签名器是否真正具备策略判断能力,以及应用逻辑出错时仍能发挥作用的风险敞口限制。WAX 后续替换合约代码并设置提款上限,是重要的止损动作;但要证明修复充分,还必须解释为何授权层会接受一笔零成本索赔,以及今后如何让其他异常输入在进入真实资产支付之前被独立拦截。

已知事实与证据边界

分析跨链事件时,最重要的方法不是把所有链上的数字拼成一个总量,而是按资产所在域拆分证据。WAX 上的资产表示、以太坊金库里的 ERC-20,以及兑换后的原生 ETH,通过桥的赎回机制彼此关联,却不是三份可以独立相加的发行量。

判断

证据状态

能够说明什么

五次 WAX 提款使用负手续费,实际扣款为零

Bitquery 根据公开 WAX 历史重建;GoPlus Security 10 月 23 日分析亦指出手续费校验问题

发起端接受了经济上无效的输入

五种资产合计支付约 90,528 美元

重建列出各资产数量;WETH 与 WBTC 使损失比早期仅计算稳定币的约 75,000 美元高出约 15,100 美元

早期报道低估了损失范围与金额

四次支付及后续退出可在以太坊观察

对已公布接收钱包在区块 26,247,000 至 26,250,999 的直接链上观察

以太坊这一段路径可以独立复核

Solana 端支付 52,986.497732 USDC,占该金库 97%

事件重建中的公开 Solana 分析

这是最大单项损失,但不属于获批的以太坊数据集

最终地址属于 HitBTC

Bitquery 的地址标签与归集行为分析

是有力的取证归因,但不能证明账户控制者身份,也不能说明资金是否被冻结

原生 WAXP 与 WAX 底层链未受影响

WAX 10 月 22 日事件公告

官方披露的影响范围是跨链桥及桥接资产,而非 WAX 共识系统

本文没有声称通过 HyperSync 直接测量 WAX 发起链行为;获批查询并不覆盖 WAX。本文也没有重新查询 Solana 端,而是把伴随数据严格限定为固定区块范围内的以太坊接收钱包交易。交易调用能够显示钱包与合约的直接互动,但不能单独证明地址背后是谁、完整恢复所有内部转账,或确认交易所是否采取冻结措施。

这种克制不是形式主义。跨链调查经常把三个不同层次的陈述混在一起:资产确实发生了移动;某个服务很可能接收了资产;某个具体个人或机构控制了该服务账户。第一项通常可以是账本事实,第二项可以是证据充分的归因,第三项往往需要交易所内部记录或执法材料。

漏洞路径:格式有效,经济逻辑却不成立

重建报告描述的桥接模型并不复杂。用户在 WAX 上持有 WAXUSDC 等资产表示。提出跨链提款时,用户指定目标链地址与手续费上限;系统应从 WAX 侧余额中扣除提款额与手续费。桥签名方批准后,用户才能从以太坊或 Solana 金库领取对应真实资产。

问题在于,提款路径默认手续费不会小于零,却没有强制执行这个前提。当手续费被设置为提款额的相反数,应扣金额就变为零。请求在格式上仍可被系统接受,但在经济上已经完全不成立:它要求金库释放价值,却没有销毁或扣减相应的 WAX 侧索取权。

flowchart LR
    A[WAX 侧资产表示余额] --> B[提款请求]
    B --> C{是否校验金额与手续费}
    C -->|缺少下界校验| D[提款额 + 负手续费 = 0]
    D --> E[桥签名方批准]
    E --> F[以太坊或 Solana 释放真实资产]
    F --> G[WAX 侧索取权未被足额扣减]
    C -->|拒绝负手续费| H[不予支付]

攻击者连续使用五次:52,986.497732 WAXUSDC、21,558.252354 WAXUSDT、840.2750339 WAXDAI、2.54669928 WAXWETH 和 0.10993227 WAXWBTC。Bitquery 称,每种余额都在提款发生的同一秒被开启,之后余额仍为零,但桥照常支付。

因此,仅称其为“输入校验漏洞”会低估问题。软件缺陷不可完全避免;真正决定损失规模的,是其他安全层能否在缺陷发生后继续工作。签名器原本是第二个决策点:它可以检查 WAX 侧是否确实销毁或扣除足够价值、手续费是否非负、提款金额是否与近期行为及剩余储备相称。然而现有证据表明,它更像把应用生成的请求直接视为权威,而没有独立验证经济守恒。

金库限制本可成为第三个决策点。事件发生前,没有单笔上限阻止一次提走 52,986 USDC,或几乎清空 WBTC 金库。Bitquery 称,WAX 随后加入了上限,而被盗 USDC 数量是新上限的 21 倍。上限不能修复底层算术错误,却能把一次近乎清仓的损失,压缩为更小且更容易触发告警的异常。

由输入校验、授权与风险敞口限制构成的三层跨链桥防线

稳健的跨链桥应假设任一层都可能失效,并让同一异常请求在多个阶段都无法造成重大损失。

从桥接索取权到可流通资产

根据重建,五次提款从 09:46:18 UTC 开始,在 86 秒内结束。接收钱包最初没有领取和移动代币所需的原生 Gas 资产。获得 Gas 后,Solana 钱包领取 USDC;以太坊钱包则从已公布的桥金库领取 USDT、DAI、WETH 与 WBTC。

获批的以太坊观察覆盖区块 26,247,000 至 26,250,999,其中包含与该接收钱包直接相关的 17 笔交易。区块 26,247,443 至 26,247,446 出现四次连续调用桥金库的交易;随后,该钱包对代币进行授权并与兑换路由互动。在区块 26,247,536,它向 Bitquery 认定为 HitBTC 充值地址的地址转出 15.58 ETH。这一序列回答了一个狭窄但有价值的问题:以太坊侧领取、资产兑换活动以及最终原生 ETH 转账,确实发生在高度集中的时间窗口内。

它并不等于完整损失证明。价值 52,986 美元的 USDC 支付发生在 Solana,占已报告损失的一半以上。查询没有覆盖这一段,是数据覆盖范围的限制,绝不意味着这笔支付不存在。同样,如果不解码路由内部转账并使用可辩护的资产价格,也不应仅凭这 17 笔直接交易计算精确美元收益。价格变化不能证明赃款流向或因果关系,因此本文没有拿市场价格来替代链上资金证据。

sequenceDiagram
    participant W as WAX 账户
    participant S as 桥签名方
    participant V as 以太坊金库
    participant R as 接收钱包
    participant X as 兑换路由
    participant D as 被归因的交易所充值地址
    W->>S: 提交五笔带负手续费的提款
    S->>V: 批准四笔以太坊支付
    V->>R: 领取 USDT、DAI、WETH、WBTC
    R->>X: 授权并兑换资产
    X-->>R: 返回原生 ETH
    R->>D: 转出 15.58 ETH
    Note over W,D: 首笔提款至最终被归因充值:38 分钟

对于最终去向,措辞必须保持准确。Bitquery 表示,该以太坊充值地址把资金归集到其标签系统认定的 HitBTC 热钱包,整个过程也符合交易所充值与归集模式。这构成有意义的取证证据,却不能让公共账本告诉我们交易所客户是谁、谁拥有最终受益权,也不能显示归集后内部账户是否被冻结。这些问题需要交易所记录,必要时还需要执法程序。

应急响应:止损迅速,但尚不足以证明体系修复完成

响应时间线显示运营方采取了实质行动。Bitquery 称,约五小时后,第二个 WAX 账户尝试了类似操作。其中一次以 1 USDC 提款搭配 -2 USDC 手续费,似乎反而使 WAX 侧余额增加 1 USDC。桥签名方没有批准这些模仿请求,因此 Solana 没有发生相应支付。WAX 在模仿者最后一次尝试四分钟后替换合约代码;此时距离原始攻击约五小时十一分钟。约九十分钟后,运营方又加入单笔转账上限。

此后约 30 小时没有提款获得签名。10 月 23 日下午,签名流程恢复,并先处理此前积压的请求。WAX 的公开公告称跨链桥已暂停,同时强调原生 WAXP 与 WAX 区块链没有受到影响。这些措施降低了即时风险并恢复服务,但不能替代完整事后报告。

用户与机构对手方仍需要几个关键答案:

  • 签名器必须独立于发起合约验证哪些经济不变量?

  • 当单笔提款占用金库异常高比例时,签名器能否自动停止?

  • 限额是否既按单笔设置,也按资产和时间累计设置?

  • 谁能修改签名策略、桥代码与限额,权限启动需要多长时间?

  • 事件后,如何在每条目标链上把 WAX 侧负债与真实储备逐项对账?

  • 运营方是否会发布与交易相连的损失、追回和用户补偿说明?

“已经止损”与“已经获得安全保证”之间存在根本差异。修补一个不等式,可以挡住已知的负手续费输入;加入单笔上限,可以降低超大提款的破坏力。但这两项都不能证明金额、精度、资产标识或目标地址的其他组合不会再次违反同一守恒原则。真正的保证,需要围绕经济不变量设计测试、监控和授权,而不是只封堵攻击者这次输入的具体数值。

对跨链桥运营者与资金配置者的启示

第一,签名系统应是策略引擎,而不是盲目中继。如果签名器只确认应用是否发出了符合格式的请求,那么它复制了同一个信任假设,并未形成纵深防御。授权层应重新计算应扣金额,确认相关资产表示已被销毁或锁定,核对目标链与资产映射,并把支付金额与实时储备比较。

第二,偿付能力控制必须覆盖多个时间尺度。单笔限额有价值,但攻击者可以把提款拆成许多小额请求。跨链桥还需要速度限制、累计流出阈值、储备占比告警和自动断路器。这次事件中的信号并不隐蔽:新开启的五种余额、五笔异常大的提款,以及数秒内对五个金库 81% 至接近 100% 的耗尽。

第三,跨链资产会计必须避免错误相加。WAXUSDC 是对其他链上 USDC 储备的索取权,而不是第二份独立美元资产。当金库释放 USDC,却没有相应减少 WAX 侧索取权时,系统产生的不是无害的“额外交易量”,而是欠抵押负债。风险报告应按规范资产、所在链、金库和赎回路径,对表示层负债与可赎回储备进行统一核对。

第四,流动性会放大事件严重性。攻击者无需等待冷门包装代币形成市场,因为桥直接释放了流动链上的成熟资产;以太坊侧资产可以迅速兑换为 ETH,并在几分钟内继续转出。因此,跨链桥风险不仅取决于可被攻击的价值,也取决于退出速度。即便金库绝对规模不大,也可能在人工委员会反应之前被几乎清空。

第五,公开数据提高问责能力,却不能替代运营方披露。以太坊路径可以复核,WAX 历史和 Solana 轨迹已有公开重建,地址与时间都能接受外部质疑。但用户仍需要运营方解释授权为何失败、最终负债状况如何、修复覆盖哪些风险。独立追踪是证据,不是负责任事件治理的替代品。

反方观点与比例原则

约 90,500 美元的绝对损失,与历史上最大的跨链桥事件相比并不高;WAX 看来又在较短时间内替换代码、增加限额并恢复签名。因此,若据此推断 WAX 底层链失效,或所有桥接资产仍处于受损状态,都是不成比例的。现有证据明确把影响限定在跨链桥,原生 WAXP 与共识系统并未被报告为受影响对象。

也有人可能认为,模仿攻击失败证明人工干预有效。这个判断有其道理:在运营方发现问题之后,签名器确实成为有效止损层。但它也恰好强化了本文的中心观点——同一个签名器在事件被识别之后能够阻止支付,在事件发生之前却没有发挥预防作用。机构评估的关键,不应只是团队能否及时认出同一种攻击,而应是控制是否已经变为自动、独立且可以拒绝未知形式的异常请求。

对 HitBTC 的归因也必须保留限定。充值归集行为与热钱包标签都是有价值的指标,却不是司法层面的证明。任何公共链观察都不能证明 HitBTC 在资金到达时已经知道其来源,不能确认被记账客户的身份,也无法说明交易所内部随后发生了什么。

结论

WAX 跨链桥事件之所以值得研究,正是因为最初的漏洞如此简单:一个负数抵消了提款扣款。但完整的安全失败远超这一行逻辑——签名器接受了请求,金库允许近乎全额耗尽,而目标链上的高流动性资产又提供了快速退出通道。

真正的教训并不是跨链桥需要更复杂的密码学,而是跨链偿付能力必须能够承受普通的软件错误。输入校验要拒绝经济上不可能的数值;授权层要独立执行资产守恒;风险敞口限制要控制漏网请求的损失;会计系统则要把每一个跨链表示与各链上的可赎回储备逐项核对。

WAX 的补丁与限额是有意义的止损。下一步需要更高标准的证明:透明说明签名器为何会批准零资金支持的提款、跨链负债如何完成对账,以及当应用层再次犯错时,哪些控制能够安全失效。在这些答案出现之前,公开账本可以展示资金路径,却不能单独证明整个控制架构已经修复完成。

来源