W3
安全实战与案例库中级880 次阅读

Nomad 桥被盗约 1.9 亿美元:一行初始化代码引发的"人人可提款"

错误地把可信根初始化为 0x00,导致任何人都能伪造出"有效"的跨链证明,最终演变成一场公开的哄抢。

#安全#案例#跨链桥#初始化#访问控制

一句话结论

Nomad 事件说明:初始化配置写错一个值,等同于把金库钥匙挂在门口,而且后果会以分钟级速度扩散。

事件经过

2022 年 8 月,跨链桥 Nomad 被攻击,约 1.9 亿美元资产被提走。与其他攻击不同的是,这次很快从"专业攻击"演变成公开哄抢:有人把可复制的调用参数发到社群,随后数百个地址照抄,几分钟内资金被搬空。

根本原因:可信根被设为 0x00

Nomad 采用「乐观验证」模型:消息默认先被接受,除非在挑战期内被证明无效。验证的依据是一个可信根(trusted root)

在一次合约升级中,初始化逻辑把可信根置为了 0x00。这意味着:

  • 攻击者可以自己构造任意一条跨链消息
  • 伪造出一个"根哈希等于 0x00"的证明
  • 因为它恰好等于可信根,所以校验通过

一行配置错误,把一个需要伪造签名的攻击降级成了任何人都能执行的普通交易。

关键区别:为什么这次是"哄抢"

  • 攻击门槛极低:不需要理解密码学,复制粘贴交易参数即可
  • 一旦第一个人成功,行为在链上公开可见,其他人可以立即模仿
  • 项目方来不及在挑战期内拦截

给你的教训

  • 「乐观验证」意味着存在挑战窗口:桥在挑战期内的资金状态是脆弱的,尽量避开刚上线或刚升级的桥。
  • 升级是高风险时刻:合约升级会重走初始化流程,历史上多起事故都发生在升级后。看到"某协议刚完成升级"时,先观望。
  • 别人冲进去不等于安全:Nomad 的哄抢者大多是普通用户,事后同样被追溯。跟随群体决策在链上是最危险的行为之一。

延伸阅读