Ba mươi phút sau khi mainnet của giao thức cross-chain bridge mới ra mắt, tôi phát hiện ra một dòng code lạ trong smart contract. Một biến mapping(address => uint256) được cập nhật sau khi gọi transfer, thay vì trước đó. Lỗi reentrancy cổ điển. Tôi gửi báo cáo riêng cho đội ngũ phát triển, kèm proof-of-concept. Họ tưởng tôi đùa. Bốn giờ sau, hacker khai thác chính xác lỗi đó, rút gần 2 triệu USD thanh khoản. Đó là lý do tại sao tôi viết bài này.
## Context: Cơ chế hoạt động của bridge Cross-chain bridge cho phép chuyển tài sản giữa các blockchain khác nhau. Cơ chế phổ biến nhất là lock-mint: người dùng gửi token vào contract trên chain A, contract mint token wrapped tương ứng trên chain B. Để đảm bảo tính chính xác, các bridge thường dùng oracle, validator set, hoặc zk-proofs. Nhưng ở cốt lõi, tất cả đều phụ thuộc vào smart contract—nơi chứa logic khóa và mint. Và chính tại đây, lỗ hổng bảo mật thường xuất hiện.

## Core: Phân tích kỹ thuật lỗ hổng reentrancy trong bridge Cụ thể, lỗ hổng nằm ở hàm withdraw.
function withdraw(uint256 amount) external {
require(balances[msg.sender] >= amount);
(bool success, ) = msg.sender.call{value: amount}("");
require(success);
balances[msg.sender] -= amount;
}
Điểm mù ở đây: send ETH trước khi cập nhật số dư. Nếu người gọi là một contract, nó có thể gọi lại withdraw trong fallback function trước khi số dư được trừ. Kết quả: rút nhiều lần hơn số dư thực tế. Trong bridge, điều này cho phép kẻ tấn công mint token wrapper không giới hạn trên chain đích.
Dựa trên kinh nghiệm audit DeFi của tôi, dạng lỗi này chiếm khoảng 15% trong tổng số lỗ hổng nghiêm trọng mà tôi từng phát hiện. Hầu hết đều đến từ việc các đội ngũ trẻ tuổi chạy đua thời gian để ra mắt sản phẩm, bỏ qua quy tắc checks-effects-interactions.
Trade-off ở đây: Một số lập trình viên cho rằng tiết kiệm gas bằng cách gọi send trước, nhưng thực tế gas chênh lệch chỉ vài trăm đơn vị trong khi rủi ro mất hàng triệu. Không có cái gọi là "tối ưu gas" khi bạn bỏ qua bảo mật.
## Tín hiệu từ thị trường giảm Trong 30 ngày qua, thị trường giảm, khối lượng giao dịch bridge giảm 40%, nhưng số vụ hack bridge tăng 25%. Logic: khi thanh khoản cạn, kẻ tấn công thăm dò các giao thức yếu ớt. Tôi thấy một bridge đã mất 35% TVL chỉ trong một tuần do lỗ hổng signature replay. Đây là thời điểm để đánh giá lại sự an toàn của tài sản của bạn.
## Góc nhìn phản trực giác Nhiều người cho rằng các bridge được các công ty audit uy tín kiểm tra là an toàn. Sự thật: audit chỉ là một bức ảnh chụp tại một thời điểm. Code thay đổi, validator set thay đổi, thậm chí upgrade contract cũng có thể giới thiệu lỗ hổng mới. Tôi từng thấy một giao thức được audit bởi ba công ty, nhưng vẫn bị hack vì lỗi trong module upgrade. Audit không phải bảo hiểm.
Hơn nữa, điểm mù lớn nhất là cross-chain oracle. Bridge phụ thuộc vào oracle để lấy giá trị token, nhưng oracle có thể bị thao túng nếu thanh khoản thấp. Trong thị trường giảm, thanh khoản giảm, oracle dễ bị tấn công hơn. Đây là vòng xoáy chết người: thanh khoản thấp → oracle dễ thao túng → bridge mất thanh khoản → càng nhiều LP rút.
## Kết luận mở Câu hỏi tôi đặt ra cho bạn: Bạn có biết bridge bạn đang dùng có cơ chế chống reentrancy không? Nếu không, hãy kiểm tra mã nguồn trên Etherscan ngay bây giờ—trước khi kẻ tấn công kịp làm điều đó.
— Hồ Đào, DeFi Security Auditor