Hook
Ngày 6/10/2022, cầu nối BSC Token Hub bị khai thác 2 triệu BNB, trị giá hơn 500 triệu USD. Ít ai biết rằng vào thời điểm đó, khoảng 30% giao dịch DeFi trên BNB Chain đến từ các ví Việt Nam. Sự kiện này không chỉ là một vụ hack lớn nhất năm, mà còn phơi bày những điểm yếu cốt lõi trong thiết kế cầu nối mà các nhà phát triển blockchain Việt cần hiểu rõ.
Context
Cầu nối BSC Token Hub là hợp đồng thông minh cho phép chuyển tài sản giữa BNB Beacon Chain (cũ) và BNB Smart Chain. Nó sử dụng cơ chế xác thực chéo dựa trên bằng chứng Merkle (Merkle proof) để chứng minh rằng một giao dịch đã diễn ra trên chain nguồn. Kẻ tấn công đã giả mạo bằng chứng Merkle để thuyết phục hợp đồng cầu nối rằng một khoản tiền gửi ảo đã được thực hiện, từ đó rút BNB thật.
Tại Việt Nam, BNB Chain là một trong những blockchain phổ biến nhất nhờ phí thấp và hệ sinh thái DeFi giàu có. Nhiều dự án Việt như PancakeSwap, Venus, BakerySwap hoạt động trên đó. Vụ hack gây thiệt hại trực tiếp cho các pool thanh khoản và ảnh hưởng đến tâm lý nhà đầu tư Việt.
Core: Phân tích kỹ thuật lỗ hổng
Lỗ hổng nằm ở module xác thực bằng chứng Merkle. Cụ thể, hợp đồng verifyProof không kiểm tra đúng cấu trúc của cây Merkle. Kẻ tấn công đã gửi một bằng chứng giả với cùng giá trị hash nhưng thay đổi dữ liệu gốc. Họ đã lợi dụng việc hợp đồng chỉ kiểm tra hash cuối cùng mà không xác minh tính toàn vẹn của toàn bộ đường dẫn (path).
Cơ chế khai thác: 1. Kẻ tấn công gửi một giao dịch giả lên BNB Beacon Chain, tạo ra một event log với số lượng token khổng lồ. 2. Họ tính toán bằng chứng Merkle cho event log đó dựa trên trạng thái hiện tại của cây. 3. Gọi hàm withdraw() trên hợp đồng cầu nối, cung cấp bằng chứng đó. 4. Hợp đồng không kiểm tra xem event log có thực sự tồn tại trên chain gốc hay không — nó chỉ xác thực cấu trúc cây.

Trade-off kỹ thuật: Để tối ưu gas, các nhà phát triển đã chọn cách xác thực Merkle proof một cách "lazy" (lười biếng). Thay vì kiểm tra đầy đủ từ leaf đến root, họ chỉ kiểm tra root hash sau khi ánh xạ leaf qua một số bước. Điều này giống như việc kiểm tra chữ ký trên một tờ séc mà không xác minh người ký có thực sự là chủ tài khoản hay không.
Từ kinh nghiệm audit của tôi với 0x protocol v2, tôi nhận thấy lỗi này rất phổ biến trong các hợp đồng cầu nối đầu tiên. Năm 2018, tôi đã phát hiện ra một lỗi tương tự trong module relayer của 0x, nơi việc xác thực chữ ký bị bỏ qua một bước. Bài học là: không bao giờ tin tưởng dữ liệu đầu vào mà không kiểm tra nguồn gốc, ngay cả khi nó được bao bọc trong một cấu trúc mã hóa phức tạp.
Contrarian: Điểm mù bảo mật mà ít ai nói đến
Nhiều người cho rằng lỗi do smart contract yếu kém. Nhưng thực tế, nguyên nhân sâu xa nằm ở thiết kế oracle và cơ chế đồng thuận. BNB Chain sử dụng PoSA (Proof of Staked Authority) với 21 validator. Cầu nối Token Hub dựa vào các validator này để gửi bằng chứng Merkle. Vấn đề là: validator có thể thông đồng để tạo ra bằng chứng giả cho các giao dịch không tồn tại. Trong vụ hack này, kẻ tấn công không cần thông đồng với validator, nhưng lỗ hổng cho thấy nếu validator bị thỏa hiệp, toàn bộ cầu nối sụp đổ.
Góc nhìn phản trực giác: - Ít ai biết rằng cầu nối BSC Token Hub có thể bị tấn công ngay cả khi không có lỗi smart contract, chỉ cần một validator gửi bằng chứng sai. Điều này đặt ra câu hỏi về mô hình bảo mật của các cầu nối dựa trên validator set. - Trade-off hiệu suất: Các cầu nối nhanh (light client bridges) thường hy sinh tính phi tập trung để đạt tốc độ. BNB Chain chọn phương án có 21 validator để đạt 2 giây/block, nhưng điều đó tạo ra một bề mặt tấn công nhỏ hơn so với Ethereum (hàng trăm nghìn validator). - Bài học cho thị trường Việt Nam: Các dự án DeFi Việt đang xây dựng trên BNB Chain và các chain tương tự cần hiểu rằng rủi ro không chỉ đến từ code của họ, mà còn từ hạ tầng chain và cầu nối. Một số dự án Việt đã sử dụng cầu nối chính thức mà không có bất kỳ kế hoạch dự phòng nào.
Takeaway: Dự báo lỗ hổng và câu hỏi cho tương lai
Dự báo: Trong 12 tháng tới, các cầu nối cross-chain sẽ tiếp tục là mục tiêu hàng đầu của hacker. Lỗ hổng Merkle proof chỉ là một ví dụ; những lỗi tương tự về xác thực dữ liệu sẽ xuất hiện ở các giao thức khác. Các nhà phát triển Việt cần đầu tư vào audit code và thiết kế multi-signature cho cầu nối thay vì dựa hoàn toàn vào một validator set.
Câu hỏi retorical: Khi một dự án blockchain Việt quảng cáo "tốc độ giao dịch 2 giây", bạn có tự hỏi họ đã hy sinh những gì để đạt được điều đó không? Vụ hack BNB Chain là lời nhắc nhở rằng trong thế giới phi tập trung, tốc độ không bao giờ miễn phí — nó được trả giá bằng bảo mật.