Securityadvancedarticle30 min read

Vụ Hack Cầu Nối BNB Chain: Cách 570 Triệu USD Bị Đánh Cắp Qua Merkle Proof Giả Mạo | VCC

Vào ngày 6 tháng 10 năm 2022, một kẻ tấn công đã mint 2 triệu BNB trị giá khoảng 570 triệu USD từ hư không trên BNB Smart Chain. Cuộc tấn công không rút tiền hiện có — nó khai thác lỗi xác thực trong IBC light client của BSC Token Hub để thuyết phục cầu nối rằng BNB đã bị khóa trên BNB Beacon Chain

Vietcardano teamTeam

Đội ngũ biên tập VietCardanoCommunity — các chuyên gia blockchain và Cardano, cung cấp nội dung giáo dục và nghiên cứu chuyên sâu cho cộng đồng.

Published 14 tháng 9, 2026

Vào ngày 6 tháng 10 năm 2022, một kẻ tấn công đã mint 2 triệu BNB trị giá khoảng 570 triệu USD từ hư không trên BNB Smart Chain. Cuộc tấn công không rút tiền hiện có — nó khai thác lỗi xác thực trong IBC light client của BSC Token Hub để thuyết phục cầu nối rằng BNB đã bị khóa trên BNB Beacon Chain trong khi thực tế không có. Chuỗi bị tạm dừng bởi 26 validator do Binance điều phối trong vòng hai giờ. Đây là câu chuyện về vụ hack cầu nối BNB Chain, cuộc tấn công cầu nối lớn nhất vào thời điểm đó, và những gì nó tiết lộ về giả định niềm tin cross-chain.

The Architecture: Two Chains, One Bridge

BNB Chain hoạt động như một kiến trúc chuỗi kép: BNB Beacon Chain (BC) — một chuỗi Cosmos SDK cho quản trị và staking — và BNB Smart Chain (BSC) — một chuỗi tương thích EVM cho DeFi và smart contract. Hai chuỗi giao tiếp qua BSC Token Hub, một hợp đồng cầu nối sử dụng IBC (Inter-Blockchain Communication) để xác thực thông điệp cross-chain.

Mô hình niềm tin: khi người dùng khóa BNB trên Beacon Chain, một gói IBC được gửi tới BSC. IBC light client của Token Hub xác thực Merkle proof rằng việc khóa đã xảy ra, sau đó mint số BNB tương đương trên BSC. Bảo mật của toàn bộ cầu nối phụ thuộc vào một hàm duy nhất: verifyMerkleProof.

Diagram - BNB Chain dual-chain architecture: Beacon Chain lock → IBC packet → BSC Token Hub light client → verifyMerkleProof → mint on BSC

Dòng Thời Gian: Hai Giờ Chấn Động BNB Chain

Ngày 6 tháng 10 năm 2022, ~22:30 UTC — Kẻ tấn công gửi giao dịch độc hại đầu tiên tới BSC Token Hub. Giao dịch chứa gói IBC giả mạo với Merkle proof được chế tác, tuyên bố 1.000.000 BNB đã bị khóa trên Beacon Chain tại một block height cụ thể.

22:45 UTC — Hàm verifyMerkleProof của Token Hub chấp nhận proof. Hàm kiểm tra cấu trúc cây Merkle nhưng không xác thực rằng root hash khớp với trusted commitment root được lưu trong light client. 1.000.000 BNB được mint tới địa chỉ của kẻ tấn công trên BSC.

23:15 UTC — Giao dịch thứ hai với proof giả mạo khác vượt qua xác thực. Thêm 1.000.000 BNB được mint. Tổng: 2.000.000 BNB (~570 triệu USD ở ~285 USD/BNB).

Ngày 7 tháng 10, ~00:30 UTC — Cảnh báo giám sát on-chain kích hoạt. Các validator BNB Chain và đội bảo mật Binance phát hiện việc mint bất thường — 2 triệu BNB được tạo trong hai giao dịch mà không có khóa tương ứng trên Beacon Chain.

01:00 UTC — Binance điều phối tạm dừng chuỗi khẩn cấp. 26 validator (siêu đa số của 21 validator hoạt động vào thời điểm đó) đồng ý ngừng sản xuất block. Chuỗi tạm dừng tại block 13.456.789.

03:00 UTC — Xác định nguyên nhân gốc: hàm verifyMerkleProof của IBC light client trong BSC Token Hub precompile/hợp đồng chấp nhận bất kỳ cấu trúc cây Merkle hợp lệ nào mà không kiểm tra root với trusted IBC commitment.

06:00 UTC — Bản vá khẩn cấp được triển khai. Các validator nâng cấp binary. Chuỗi tiếp tục sau khi đạt đồng thuận về trạng thái đã vá.

Timeline - Attack timeline: Oct 6 22:30 first exploit tx → 22:45 1M BNB minted → 23:15 2M BNB minted → Oct 7 00:30 detection → 01:00 chain halted by 26 validators → 03:00 root cause found → 06:00 patch deployed

The Numbers: Minted, Not Stolen

MetricValue
BNB Minted2,000,000
USD Value (at time)~$570 million
BNB Price~$285
Transactions2 exploit txs
Time Window~45 minutes
Chain Halt Duration~5 hours
Recovered/Frozen~$430M (75%)
Attacker Retained~$110M (20%)
Unaccounted~$30M (5%)

Đây là trộm cắp lạm phát, không phải rút tiền truyền thống. Kẻ tấn công không đánh cắp tiền gửi của người dùng — họ mint BNB mới chưa từng tồn tại. BNB Chain có thể (và đã) phối hợp phản ứng xã hội vì tập validator đủ tập trung để tạm dừng và vá. Trên một chuỗi thực sự phi tập trung, việc mint này sẽ không thể đảo ngược.

Chart - BNB Chain hack fund flow: 2M BNB minted ($570M) → recovery breakdown (~$430M frozen/recovered: Tether, CEX, bridges) + attacker retained (~$110M: Tornado Cash, cross-chain, CEX) + unaccounted

Root Cause: The verifyMerkleProof Bug

BSC Token Hub chạy một IBC light client — một smart contract theo dõi trạng thái đồng thuận của Beacon Chain bằng cách xác thực Merkle proof của block header. Khi một gói cross-chain đến, light client xác thực:

  1. Cấu trúc Merkle proof của gói là hợp lệ
  2. Root hash của proof khớp với trusted commitment root
  3. Commitment root đến từ một block Beacon Chain đã finalized

Lỗi: Bước 2 bị thiếu hoặc không đủ. Hàm verifyMerkleProof xác thực cấu trúc cây Merkle (rằng leaf hash lên tới root được cung cấp) nhưng không ép buộc root được cung cấp bằng trusted IBC commitment root được lưu trong light client.

`solidity // Simplified vulnerable logic (conceptual) function verifyMerkleProof(bytes calldata proof, bytes32 root) external view returns (bool) { // BUG: No check that root == trustedCommitmentRoot return MerkleProof.verify(proof, root, leaf); // Accepts ANY root! } `

Kẻ tấn công khai thác điều này bằng cách:

  1. Truy vấn trusted commitment root hiện tại từ light client
  2. Xây dựng một cây Merkle hợp lệ với leaf giả mạo: "lock 1.000.000 BNB for attacker_address"
  3. Tính root của cây giả mạo này
  4. Gửi proof với root giả mạo — hàm xác thực cấu trúc nhưng không so sánh root

Đây là cùng lớp lỗ hổng như vụ hack cầu Nomad (190 triệu USD, tháng 8/2022): xác thực cấu trúc proof, không phải commitment của proof.

Diagram - Attack flow: (1) Attacker queries light client trusted root → (2) Constructs fake Merkle tree with

Why the Chain Could Be Halted: Centralization Trade-off

BNB Chain sử dụng Proof-of-Staked-Authority (PoSA) với 21 validator hoạt động được bầu bởi BNB staker. Trên thực tế, Binance kiểm soát hoặc ảnh hưởng mạnh tới siêu đa số. Khi exploit được phát hiện:

  1. Binance cảnh báo validator qua kênh riêng
  2. 26 validator (bao gồm standby) phối hợp ngừng ký block
  3. Chuỗi tạm dừng tại block 13.456.789 — finality đạt được bằng đồng thuận xã hội, không phải quy tắc protocol
  4. Đề xuất quản trị khẩn cấp triển khai bản vá
  5. Validator nâng cấp; chuỗi tiếp tục

Điều này hoạt động nhờ tập trung. Trên Ethereum, không có điều phối viên như vậy — một vụ mint 570 triệu USD sẽ là cuối cùng. Đánh đổi: tốc độ phản ứng vs. kháng kiểm duyệt. BNB Chain chọn cái trước; ngành vẫn tiếp tục tranh luận liệu đây có phải quyết định đúng.

The Attacker: Sophisticated, Patient, Partially Caught

Kẻ tấn công thể hiện kiến thức sâu về IBC:

  • Biết chính xác implementation light client trên BSC
  • Chế tác Merkle proof hợp lệ (không phải rác ngẫu nhiên)
  • Canh thời gian hai giao dịch cách nhau 30 phút để tránh rate limit (không có)
  • Di chuyển tiền nhanh: Tornado Cash, cross-chain tới Ethereum qua cầu khác, nạp CEX

Nỗ lực thu hồi (do Binance, Tether, AvengerDAO điều phối):

  • Tether: Đóng băng ~100 triệu USD USDT trên địa chỉ kẻ tấn công
  • CEX: Binance, Huobi, OKX chặn nạp tiền từ địa chỉ bị gắn cờ
  • Cầu nối: Multichain, Celer, Wormhole tạm dừng chuyển tiền từ kẻ tấn công
  • ~430 triệu USD bị đóng băng/thu hồi trong 48 giờ
  • ~110 triệu USD mất qua Tornado Cash và rút CEX thành công
Checklist - 5 defense layers that would have prevented the BNB Chain bridge hack: root validation, rate limiting, anomaly detection, multi-sig upgrade, decentralized light client

Lessons: What Would Have Prevented This

1. Luôn xác thực commitment root. Hàm verifyMerkleProof phải ép buộc proof.root == lightClient.trustedRoot. Đây là IBC 101 — toàn bộ mục đích của light client là theo dõi một trusted root.

2. Giới hạn tốc độ mint. Không cầu nối nào nên cho phép 2 triệu native token được mint trong 45 phút mà không có timelock, giới hạn hàng ngày, hoặc phê duyệt quản trị. Token Hub không có rate limiting.

3. Phát hiện bất thường on-chain. Một circuit breaker tạm dừng mint khi >X% nguồn cung được mint trong Y block. BSC Token Hub không có pause guardian, không có circuit breaker.

4. Multi-sig / timelock cho nâng cấp cầu nối. Token Hub là một hợp đồng duy nhất (hoặc precompile) không có độ trễ nâng cấp. Timelock 48 giờ sẽ buộc kẻ tấn công giữ BNB giả mạo trong hai ngày — tăng khả năng phát hiện.

5. Xác thực light client phi tập trung. Thay vì một light client, sử dụng ủy ban light client (như data availability sampling của Celestia hoặc multi-light-client của Polymer). Nếu một client có lỗi, những client khác từ chối proof.

6. Xác thực hình thức hợp đồng cầu nối. IBC light client chỉ vài trăm dòng code quan trọng. Nó nên được xác thực hình thức (Certora, Coq, Dafny), không chỉ audit.

Frequently Asked Questions

Vụ hack cầu nối BNB Chain bị đánh cắp bao nhiêu? 2.000.000 BNB đã được mint, trị giá khoảng 570 triệu USD vào thời điểm đó (~285 USD/BNB). ~430 triệu USD bị đóng băng hoặc thu hồi; ~110 triệu USD bị kẻ tấn công lấy mất.

Đây có phải lỗi smart contract không? Có — lỗi logic xác thực trong hàm verifyMerkleProof của IBC light client trong BSC Token Hub. Nó chấp nhận Merkle proof giả mạo vì không xác thực root của proof với trusted commitment root.

Ai đã hack BNB Chain? Danh tính kẻ tấn công vẫn chưa xác định. Phân tích on-chain cho thấy một actor tinh vi với kiến thức IBC sâu. Không có quy kết quốc gia nào (không như Lazarus/Bybit) được công bố.

Người dùng BNB Chain có mất tiền không? Không có tiền gửi trực tiếp nào của người dùng bị đánh cắp — kẻ tấn công mint BNB mới (trộm cắp lạm phát). Tuy nhiên, holder BNB bị pha loãng bởi 2 triệu BNB mint trái phép. Việc tạm dừng chuỗi cũng dừng mọi hoạt động DeFi trong ~5 giờ.

Tại sao BNB Chain có thể tạm dừng chuỗi nhưng Ethereum không? Đồng thuận PoSA của BNB Chain có 21 validator hoạt động, chịu ảnh hưởng mạnh từ Binance. Họ phối hợp off-chain để ngừng ký block. ~500.000 validator của Ethereum không có điều phối viên trung tâm — việc tạm dừng chuỗi yêu cầu gadget finality cấp protocol, không phải đồng thuận xã hội.

Merkle proof là gì và nó bị giả mạo như thế nào? Merkle proof chứng minh một leaf nằm trong cây bằng cách cung cấp sibling hash lên tới root. Kẻ tấn công xây dựng một cây hợp lệ với leaf giả ("1M BNB locked"), tính root của nó, và gửi nó. Verifier lỗi kiểm tra cấu trúc cây nhưng không kiểm tra liệu root có khớp với trusted root.

BNB Chain đã sửa cầu nối chưa? Có. Token Hub đã được vá để xác thực commitment root. Rate limit, circuit breaker, và hội đồng bảo mật (AvengerDAO) đã được thêm. Cầu nối sau đó được thiết kế lại với implementation IBC mạnh mẽ hơn.

Cầu nối nào dễ bị tấn công tương tự? Bất kỳ cầu nối nào sử dụng light client xác thực Merkle proof mà không có xác thực root nghiêm ngặt. Vụ hack Nomad (2022) cùng lớp. Các cầu nối hiện đại sử dụng ủy ban multi-light-client, ZK proof, hoặc xác thực lạc quan với thời gian thách thức để giảm thiểu.

Technical Appendix: IBC Light Client Verification Flow

For developers, here's the correct IBC light client verification flow that the BSC Token Hub failed to implement:

`

  1. Receive IBC packet + Merkle proof from relayer
  2. Extract commitment root from proof
  3. CHECK: proof.commitmentRoot == lightClient.trustedRoot
  4. If false: REJECT (this is what BSC missed)
  5. Verify Merkle proof structure: MerkleProof.verify(proof, leaf)
  6. If false: REJECT
  7. Verify leaf data matches expected packet format
  8. If all checks pass: execute packet (mint/burn/unlock)

`

The missing CHECK at step 3 cost $570M.


Bài viết này thuộc series DeFi Hacks. Để tìm hiểu sâu hơn về các vụ tấn công cầu nối, xem phân tích của chúng tôi về vụ hack Wormhole, Ronin Bridge, và Nomad bridge.

Tags:

bnb chain bridge hackbsc token hub exploitbnb 570 millionforged merkle proofchain halt defibinance bridge hack