https://medium.com/@numencyberlabs/bsc-chain-cross-chain-bridge-hacking-analysis-24338f9a80
Mô tả ngắn gọn về cuộc tấn công
Tin tặc (địa chỉ: 0x489a8756c18c0b8b24ec2a2b9ff3d4d447f79bec) đã khai thác một lỗ hổng trong IAVL TREE, mã thư viện cơ sở của cơ chế xác thực thông báo cầu nối chuỗi chéo, để giả mạo một thông báo rút tiền độc hại, khiến cầu nối chuỗi chéo gửi hai giao dịch riêng biệt đến hacker, mỗi người trị giá 1 triệu BNB và tổng trị giá khoảng 600 triệu USD.
Phản ứng kịp thời từ CoinSec trong việc ngăn chặn cuộc tấn công đã cho phép họ tiết kiệm được phần lớn tài sản và kết quả là họ chỉ mất khoảng 100 triệu đô la. Tuy nhiên, đây vẫn được coi là một số tiền đáng kể trong mắt công chúng và BNBChain.
Địa chỉ giao dịch:
https://bscscan.com/tx/0xebf83628ba893d35b496121fb8201666b8e09f3cbadf0e269162baa72efe3b8b
Phân tích phương pháp luận khai thác lỗ hổng
Cuộc tấn công xảy ra trên chuỗi BSC nơi Binance Bridge cung cấp giá trị thanh khoản cho BSC. Từ phân tích của chúng tôi , chúng tôi xác định rằng thành phần chính đằng sau cuộc tấn công là thư viện củacây IAVL trên BSC L1, được triển khai ban đầu bởi COMOS và được BSC Chain sử dụng. Kiểu khai thác này được gọi là Tấn công chuỗi chéo.
Cây IAVL được sử dụng để xác minh tính hợp pháp của các tin nhắn được gửi đến cầu nối chuỗi chéo Binance.
Thông thường, cây IAVL sẽ tự động từ chối các thư do tin tặc giả mạo. Tuy nhiên, kẻ tấn công lần này đã phát hiện ra một lỗ hổng trong quy trình xác minh IAVL, cho phép anh ta lừa cây IAVL chấp nhận các thông báo tùy chọn. Điều này cho phép tin tặc trích xuất 2 triệu BNB từ cầu nối chuỗi chéo thông qua việc xây dựng và giả mạo thông báo một cách cẩn thận.
Cây IAVL, đúng như tên gọi của nó, là một cây tìm kiếm nhị phân tự cân bằng được đặt theo tên của những người phát minh ra nó, Georgy Adelson-Velsky và Evgenii Landis. Mục đích của cấu trúc dữ liệu của nó là cung cấp khả năng lưu trữ liên tục cho các cặp khóa-giá trị, chẳng hạn như lưu trữ số dư tài khoản) để các hàm băm gốc Merkle xác định có thể là máy tính.
Tin tặc đã gọi hàm handlePackage trong hợp đồng cầu nối chuỗi chéo BSC và sau đó gọi hợp đồng được biên dịch trước để xác minh tính hợp pháp của MerkleProof.
Biên dịch trước là gì?
Quá trình biên dịch trước đóng vai trò tương tự như syscall trong hệ điều hành. Khi hệ điều hành chấp nhận số syscall (số tương tự như 0x65), nó sẽ thực hiện lệnh gọi hệ thống tương ứng. Thông thường, địa chỉ hợp đồng được tạo khi hợp đồng được triển khai, sau đó được viết trực tiếp là 0x65 đã chết. Khi BSC L1 tìm thấy địa chỉ này, nó sẽ trực tiếp gọi quy trình MerkleProof, nghĩa là gọi IAVLTree.
Tóm tắt cuộc tấn công
Bằng cách triển khai hợp đồng, tin tặc đã gọi hàm handlePackage của hợp đồng cầu nối chuỗi chéo BSC
(https://bscscan.com/address/0x0000000000000000000000000000000000002000#code#L1082 )
để giả mạo dữ liệu bằng chứng, dữ liệu này đã vượt qua tổng kiểm tra cây IAVL và do đó, cầu nối chuỗi chéo chuyển 2 triệu BNB cho tin tặc.
Cuối cùng,
Samczsun đã đưa ra một số suy đoán về bản chất của lỗ hổng này, nhưng vẫn chưa được xác nhận liệu tất cả các chi tiết có chính xác hay không. Chúng tôi hiện cũng đang trong quá trình phân tích cuộc tấn công và chúng tôi sẽ tiếp tục tiết lộ thêm thông tin trong tương lai khi có thêm thông tin chi tiết. Chúng tôi khuyến khích bạn tiếp tục theo dõi và theo dõi chúng tôi để có phân tích tiếp theo về cuộc tấn công.