公开事件复盘BNB Beacon Chain · BNB Smart Chain复盘 v1.0事件评级 · 严重风险

BNB Chain Token Hub 跨链证明伪造事件复盘

基于公开披露资料的事后复盘,非 umibit 受托审计。2022-10-06,攻击者利用 BSC Token Hub 校验跨链 IAVL Merkle 证明的预编译(地址 0x65)的缺陷——证明校验未正确纳入路径节点的 right 子节点,使用户可 伪造出与合法根哈希匹配的证明,凭空铸出 200 万 BNB。验证人在约 90 分钟内协调停链,多数资金未能外流, 实际损失约 $1 亿+。Moran 硬分叉修复了该校验。

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

本页基于公开披露资料对一起真实安全事故做事后分析,用于安全研究与方法论说明,并不代表 umibit 与 BNB Chain · BSC Token Hub(原 Binance Bridge) 存在任何业务关系。文中每一项结论均可对照下方「核验来源」独立核查。

报告编号
BSC-2022
受影响项目
BNB Chain · BSC Token Hub(原 Binance Bridge)
区块链
BNB Beacon Chain · BNB Smart Chain
损失规模
铸出 ≈ $570M(2,000,000 BNB)· 实际外流 ≈ $100M+
报告版本
复盘 v1.0
事件日期
2022-10-06
事件评级
严重风险

相关合约 / 链上对象

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

名称类型commit地址
iavlMerkleProofValidate(预编译 0x65)跨链证明校验预编译
BSC Token Hub跨链桥
攻击者地址(BscScan 标注)链上地址0x489A8756C18C0b8B24EC2a2b9FF3D4d447F79BEc

根因与漏洞

严重 2 1
ID标题严重状态类别
BSC-01IAVL 证明校验未正确纳入路径节点 right 子节点,可伪造匹配根哈希的证明严重Resolved 已修复Merkle / 跨链证明
BSC-02用户可提交任意 right 字段与空内部路径,为恶意消息伪造合法包含证明严重Resolved 已修复Merkle / 跨链证明
BSC-03复用旧区块(高度 110217401)短证明 + 当前 packageSequence 伪造提款包Resolved 已修复业务逻辑

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

事件概览

BSC Token Hub 是 BNB Beacon Chain(BEP2)与 BNB Smart Chain(BEP20)之间的原生跨链桥。2022-10-06, 攻击者伪造跨链证明,分两次共铸出 2,000,000 BNB,名义价值约 $5.7 亿。但由于 BNB Chain 验证人在 约 90 分钟内 协调停链,绝大部分 BNB 未能离开链,实际外流约 $1 亿+(另有约 $7M 经 Tether 冻结)。 这里要分清:$5.7 亿是被铸出的名义额、$1 亿+ 才是真正外流的损失

根因:可伪造的 IAVL 跨链证明

Token Hub 通过一个 预编译合约(地址 0x65iavlMerkleProofValidate,自 Cosmos 代码 fork) 校验入站跨链包的 IAVL Merkle 证明。缺陷在于:证明校验在计算根哈希时没有正确纳入路径节点的 right 子节点

由于证明由用户提交,攻击者便在 right 字段塞入任意数据、并使用空的内部节点路径,仍能算出一个与某个合法已提交根 相匹配的根哈希——等于为一条任意的恶意消息伪造出「有效的包含证明」,进而让桥铸出 BNB。具体手法上,攻击者复制了 旧信标链区块(高度 110217401,空块、证明很短)的证明,并塞入带当前 packageSequence 与恶意载荷的伪造叶子。

影响与处置

  • 验证人协调停链(约 90 分钟)是把损失从 $5.7 亿名义额压到 $1 亿+ 实际外流的关键——这也引出对链本身 中心化程度的讨论。
  • 约 6 小时后以打补丁的客户端恢复;Moran 硬分叉(2022-10-12) 修复 IAVL 哈希校验、增加区块头顺序校验并 白名单化中继者;相关 Cosmos/IAVL 漏洞另发「Dragonberry」公告。

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

BSC 与 Wormhole、Nomad 同属一个家族:跨链桥的「证明/验签」环节出错。它们各自的 bug 形态不同(IAVL 子节点漏算 / Sysvar 账户没校验 / 可信根被初始化为零),但共性是——把对方链的状态「证明」给本链时,校验逻辑存在可被构造的缝隙, 而桥上压着的资金体量让每条缝隙都价值连城。

这类密码学/证明校验缺陷,恰是需要 对边界条件穷举、对 fork 来的底层代码逐处复核 的地方;人工很难穷尽所有路径, 而攻击者已在用自动化与 AI 系统性地寻找这类缝隙。把「跨链证明的每一条校验路径」纳入可规模化的覆盖与对拍,并在上线前 跑满,是抵御「桥类 0day」的现实前提。

核验来源

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

如何核验本复盘

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

← 返回安全事件复盘