公开事件复盘Ethereum复盘 v1.0事件评级 · 严重风险

Nomad Bridge 可信根初始化为零事件复盘

基于公开披露资料的事后复盘,非 umibit 受托审计。2022-08-01,一次例行升级把 Replica 合约的 可信根错误地初始化为 0x00;由于 Solidity 中未设置的 mapping 键默认返回 0x00,任何伪造消息的 证明校验都会命中这个「可信」零根而通过。漏洞公开后被数百人复制 calldata、替换收款地址哄抢, 史称「首例去中心化哄抢式抢劫」,960 笔交易掏空约 $1.9 亿。

这是一份公开事件复盘,不是 umibit 受托审计。

本页基于公开披露资料对一起真实安全事故做事后分析,用于安全研究与方法论说明,并不代表 umibit 与 Nomad(乐观式跨链消息桥) 存在任何业务关系。文中每一项结论均可对照下方「核验来源」独立核查。

报告编号
NOMAD-2022
受影响项目
Nomad(乐观式跨链消息桥)
区块链
Ethereum
语言
Solidity
损失规模
≈ $190M(近乎全部 TVL)
报告版本
复盘 v1.0
事件日期
2022-08-01
事件评级
严重风险

相关合约 / 链上对象

事件涉及的合约 / 链上对象及其可核验身份(地址 / commit),据公开披露整理。

名称类型commit地址
Replica.sol · process()消息处理
Replica.sol · acceptableRoot() / confirmAt根校验
Replica 合约(据公开披露)链上地址0xb92336759618f55bd0f8313bd843604592e27bd8

根因与漏洞

严重 3
ID标题严重状态类别
NOMAD-01升级时把可信根初始化为 0x00(confirmAt[0x00] 被设为有效时间戳)严重Resolved 已修复初始化
NOMAD-02未设置的 mapping 键默认返回 0x00,致任意伪造消息证明通过 acceptableRoot严重Resolved 已修复Merkle / 跨链证明
NOMAD-03漏洞可被无门槛复制(替换收款地址即可),引发群体哄抢严重Resolved 已修复业务逻辑

公开事件复盘。 本页基于公开披露资料对一起真实安全事故做事后分析,用于安全研究与方法论说明, 并非 umibit 受托审计。文中数据请以「核验来源」所列公开资料为准。

事件概览

Nomad 是一座乐观式(optimistic)跨链消息桥。2022-08-01,其桥合约在数小时内被掏空 约 $1.9 亿—— 几乎是全部 TVL(WBTC、WETH、USDC、USDT、DAI 等)。与多数攻击不同,这次没有「一个黑客」:漏洞一旦公开, 数百个地址复制同一份攻击 calldata、只把收款地址换成自己,演变成一场公开哄抢,共 960 笔交易、1,175 次提款

根因:可信根被初始化为零

Replica 合约的 process() 在执行跨链消息前,会用 acceptableRoot() 检查该消息对应的 Merkle 根是否「可信」, 其依据是 confirmAt[root] 这个 mapping 中记录的确认时间戳。

一次例行升级把可信根 初始化为 0x00,即 confirmAt[0x00] 被设成了一个有效时间戳。而 Solidity 的语义是: 任何未显式设置的 mapping 键都默认返回 0x00。于是对于 任意伪造消息,其「未被确认」的根都会取到 0x00, 再被当成那个「可信零根」而 acceptableRoot() 返回 true——证明校验形同虚设,任何人都能让桥相信「这条提款已被证明」。

时间线细节:错误初始化约在 2022-05-26 引入,并在 2022-06-21 的升级中进入生产环境。

影响与处置

  • 白帽陆续归还资金,普遍报道 约 $30M+;Nomad 设立回收地址并承诺归还 90% 者不追究法律责任。
  • 后续有关键嫌疑人被引渡至美国(据 TRM Labs)。

AI 视角 · 为什么这类风险只会更多

Nomad 是 「升级/初始化引入的单点致命错误」 的典型:一行被错误初始化的状态,叠加 Solidity「零值默认」的语义陷阱, 就让整座桥的证明校验归零。它还展示了 Web3 特有的放大效应——链上漏洞一旦暴露即被群体复制,从单点变成踩踏。

启示有二:其一,每次升级/初始化都必须被当作完整审查对象(最危险的改动往往只有一行);其二,攻击者复制与变体的速度 正被自动化与 AI 拉满,留给团队的反应窗口越来越短。把「初始化不变量、零值/默认值假设、升级前后差异」纳入可规模化的 自动核查,并在上线前跑满覆盖,是与这种速度赛跑的唯一现实做法。

核验来源

本页结论所依据的公开资料,每项数据与论断都可对照独立核查。

如何核验本复盘

请对照上方「核验来源」所列的官方根因分析、安全机构报告与区块浏览器,独立核查事件日期、损失规模、根因与链上地址等每一项论断。

← 返回安全事件复盘