BNB Chain Token Hub 跨链证明伪造事件复盘
基于公开披露资料的事后复盘,非 umibit 受托审计。2022-10-06,攻击者利用 BSC Token Hub 校验跨链 IAVL Merkle 证明的预编译(地址 0x65)的缺陷——证明校验未正确纳入路径节点的 right 子节点,使用户可 伪造出与合法根哈希匹配的证明,凭空铸出 200 万 BNB。验证人在约 90 分钟内协调停链,多数资金未能外流, 实际损失约 $1 亿+。Moran 硬分叉修复了该校验。
本ページは公開情報に基づく実際の事故の事後分析で、セキュリティ研究と方法論の説明のためのものです。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-01 | IAVL 证明校验未正确纳入路径节点 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 通过一个 预编译合约(地址 0x65,iavlMerkleProofValidate,自 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」的现实前提。
検証ソース
本ページが依拠する公開資料。各データと結論はこれと照合して検証できます。
上記「検証ソース」の公式根本原因分析・セキュリティ企業のレポート・ブロックエクスプローラと照合し、事故日・損失規模・根本原因・オンチェーンアドレスなどを独立に検証してください。