Gần đây, một công ty an ninh đã phát hiện ra hai lỗ hổng nghiêm trọng trong hợp đồng của một tài sản kỹ thuật số, gây ra sự quan tâm rộng rãi trong ngành. Hai lỗ hổng này có thể dẫn đến hậu quả nghiêm trọng là tài sản của người dùng bị khóa và vốn của bên dự án không thể rút ra.
Lỗ hổng đầu tiên tồn tại trong hàm hoàn tiền. Hàm này hoàn tiền cho tất cả người dùng bằng cách lặp, nhưng nếu đối tượng hoàn tiền là hợp đồng độc hại, có thể từ chối nhận và dẫn đến giao dịch thất bại, từ đó ảnh hưởng đến tiến trình hoàn tiền của tất cả người dùng. May mắn thay, lỗ hổng này hiện chưa được khai thác.
Đối với những tình huống như vậy, các chuyên gia trong ngành khuyên Bên dự án khi thiết kế cơ chế hoàn tiền nên xem xét các điểm sau: giới hạn người tham gia chỉ là tài khoản người dùng thông thường, sử dụng stablecoin thay vì tài sản gốc, thiết kế chức năng người dùng chủ động nhận hoàn tiền thay vì hoàn tiền hàng loạt, v.v.
Lỗ hổng thứ hai là do một lỗi logic trong mã. Trong hàm trích xuất vốn dự án, có một câu lệnh điều kiện, đáng lẽ phải