安全实战与案例库中级880 次阅读
Nomad 桥被盗约 1.9 亿美元:一行初始化代码引发的"人人可提款"
错误地把可信根初始化为 0x00,导致任何人都能伪造出"有效"的跨链证明,最终演变成一场公开的哄抢。
#安全#案例#跨链桥#初始化#访问控制
一句话结论
Nomad 事件说明:初始化配置写错一个值,等同于把金库钥匙挂在门口,而且后果会以分钟级速度扩散。
事件经过
2022 年 8 月,跨链桥 Nomad 被攻击,约 1.9 亿美元资产被提走。与其他攻击不同的是,这次很快从"专业攻击"演变成公开哄抢:有人把可复制的调用参数发到社群,随后数百个地址照抄,几分钟内资金被搬空。
根本原因:可信根被设为 0x00
Nomad 采用「乐观验证」模型:消息默认先被接受,除非在挑战期内被证明无效。验证的依据是一个可信根(trusted root)。
在一次合约升级中,初始化逻辑把可信根置为了 0x00。这意味着:
- 攻击者可以自己构造任意一条跨链消息
- 伪造出一个"根哈希等于 0x00"的证明
- 因为它恰好等于可信根,所以校验通过
一行配置错误,把一个需要伪造签名的攻击降级成了任何人都能执行的普通交易。
关键区别:为什么这次是"哄抢"
- 攻击门槛极低:不需要理解密码学,复制粘贴交易参数即可
- 一旦第一个人成功,行为在链上公开可见,其他人可以立即模仿
- 项目方来不及在挑战期内拦截
给你的教训
- 「乐观验证」意味着存在挑战窗口:桥在挑战期内的资金状态是脆弱的,尽量避开刚上线或刚升级的桥。
- 升级是高风险时刻:合约升级会重走初始化流程,历史上多起事故都发生在升级后。看到"某协议刚完成升级"时,先观望。
- 别人冲进去不等于安全:Nomad 的哄抢者大多是普通用户,事后同样被追溯。跟随群体决策在链上是最危险的行为之一。