Lỗ hổng trong hợp đồng thông minh: Tại sao dự án XYZ vừa mất 10 triệu USD?
Lý Mỹ
Bỏ qua audit? Đó là tự sát.
Hôm qua, một dự án DeFi tên XYZ đã bị tấn công, mất tổng cộng 10 triệu USD từ pool thanh khoản. Cộng đồng đổ lỗi cho hacker. Tôi đọc code. Lỗi không phải từ hacker. Lỗi từ chính team phát triển.
XYZ là một automated market maker (AMM) hoạt động trên Ethereum, với tổng giá trị khóa (TVL) khoảng 50 triệu USD trước vụ hack. Họ tự hào về tốc độ giao dịch và phí thấp. Họ không thuê bên thứ ba audit. Họ nói “code đã được kiểm tra nội bộ”.
Tôi đã phân tích hợp đồng thông minh của họ trong 3 giờ. Tìm ra 3 lỗ hổng nghiêm trọng. Lỗi thứ nhất: reentrancy trong hàm withdraw. Lỗi thứ hai: integer overflow trong tính toán phí. Lỗi thứ ba: access control yếu – bất kỳ ai cũng có thể gọi hàm setFee. Cả ba lỗi đều là cơ bản. Một sinh viên năm hai cũng có thể tìm ra.
Nhưng đây không chỉ là chuyện code. Đây là chuyện văn hóa. Team XYZ ưu tiên tốc độ hơn an toàn. Họ ra mắt sản phẩm trong 2 tháng, không audit, không testnet mở rộng. “Move fast and break things” – trong crypto, “break” có nghĩa là mất tiền của người dùng.
Phần contrarian: Dự án có thể đúng về mặt sản phẩm. AMM của họ thực sự nhanh hơn Uniswap V3 trong một số kịch bản. Phí thấp hơn 30%. Nhưng bảo mật là chữ “nếu” không có móc. Nếu bạn không thể giữ tiền, sản phẩm của bạn vô dụng.
Tôi từng audit một dự án tương tự vào năm 2021. Họ cũng nói “code đã được kiểm tra”. Tôi tìm thấy 5 lỗ hổng trong một buổi chiều. Họ sửa, nhưng ra mắt vội vàng, 6 tháng sau bị hack mất 2 triệu USD. Lịch sử lặp lại.
Takeaway: Đừng tin vào whitepaper đẹp. Đừng tin vào team có tên tuổi. Yêu cầu audit từ bên thứ ba. Nếu dự án không công bố audit report, coi như họ đang mời bạn chơi trò roulette. Và roulette luôn có người thua.