Giao thức DeFi Abracadabra đã mất 1,8 triệu đô la sau khi kẻ tấn công khai thác một lỗi logic đơn giản trong hàm xử lý hàng loạt của nó. Các nhà phân tích tại Hacken cho biết kẻ tấn công đã rửa tiền thông qua Tornado Cash.
- Abracadabra đã mất gần 2 triệu đô la sau khi kẻ tấn công khai thác một lỗi logic đơn giản trong hàm hàng loạt của nó, tương tự như một cuộc tấn công vào một dự án phân nhánh vài ngày trước đó.
- Kẻ tấn công đã bỏ qua cờ an toàn dùng để kiểm tra xem người vay có đủ tài sản thế chấp hay không và rút hết sáu Cauldron cùng một lúc trước khi đổi MIM bị đánh cắp lấy ETH và chuyển qua Tornado Cash.
- Đây không phải là lần đầu tiên mã của Abracadabra bị nhắm mục tiêu, nhưng sự cố này cho thấy một hàm nhỏ chưa được triển khai có thể bị tin tặc lợi dụng, ngay cả khi lỗ hổng tương tự đã xuất hiện trong một Fork.
Vào đầu tháng 10, Abracadabra, một giao thức cho vay DeFi cho phép mọi người vay stablecoin MIM bằng cách sử dụng token đã gửi làm tài sản thế chấp và đã bị tin tặc tấn công nhiều lần trước đó, lần này một lần nữa mất khoảng 1,8 triệu đô la sau khi kẻ tấn công sử dụng một lỗi logic đơn giản trong hàm lô của giao thức để vay mà không cần thế chấp bất kỳ tài sản thế chấp nào, tương tự như cách một dự án phân nhánh đã bị tấn công chỉ vài ngày trước đó, các nhà phân tích tại công ty bảo mật blockchain Hacken cho biết trong một ghi chú nghiên cứu được chia sẻ với crypto.news.
Abracadabra được ra mắt như một cách để mọi người sử dụng token sinh lãi làm tài sản thế chấp và vay một Token neo giá vào đô la Mỹ có tên là Magic Internet Money, hay MIM. Hệ thống được xây dựng xung quanh hai phần: Cauldrons, nơi xử lý các quy tắc vay, và DegenBox, kho lưu trữ chung thực sự lưu trữ token. Short: bạn đặt tài sản thế chấp vào một Cauldron, và DegenBox sẽ theo dõi tiền ở chế độ nền.
Short lại, lỗi đã xảy ra như sau: một cờ an toàn được cho là sẽ buộc kiểm tra lần cuối xem người vay có thực sự sở hữu tài sản thế chấp hay không đã bị tắt trong một giao dịch duy nhất. Theo báo cáo của Hacken, kẻ tấn công đã "lợi dụng một lỗ hổng logic trong hàm cook() của Abracadabra, cho phép chúng mượn token MIM và sau đó ngay lập tức đặt lại cờ xác thực vốn được cho là sẽ kiểm tra xem chúng có đủ tài sản thế chấp hay không". Điều này cho phép chúng mượn một lần duy nhất, không cần thế chấp trên nhiều Cauldron.
Dưới kính hiển vi
Sau đây là cách hoạt động của luồng, nói một cách đơn giản. Abracadabra sử dụng một hàm xử lý hàng loạt gọi là cook() để người dùng có thể thực hiện nhiều hành động trong một giao dịch. Ví dụ, gửi tài sản thế chấp và vay trong cùng một cú nhấp chuột. Một trong những hành động đó, chẳng hạn như bước "vay", sẽ đặt một cờ có tên needsSolvencyCheck thành true, nghĩa là "khi kết thúc giao dịch này, hãy kiểm tra xem người vay có an toàn không".

Nhưng một hành động khác có thể chạy bên trong cùng một lô gọi là “_additionalCookAction(…).” Như Hacken chỉ ra, hàm đó được khai báo là “ảo” và không bao giờ được triển khai, do đó theo mặc định, nó trả về một đối tượng trống trong đó mọi thứ được đặt thành false, bao gồm cả cờ needsSolvencyCheck .
Kết quả là, kẻ tấn công đã gọi hành động vay, sau đó gọi hành động mặc định để đặt lại cờ và cuối cùng, giao thức không bao giờ kiểm tra khả năng thanh toán.
Các nhà phân tích cho biết kẻ tấn công đã tấn công sáu Cauldron cùng một lúc, lấy đi khoảng 1,79 triệu MIM và đổi lấy ETH. Kẻ tấn công đã khai thác lỗ hổng bảo mật, và có hệ thống kiểm tra sáu Cauldron khác nhau và rút sạch từng Cauldron "bằng cùng một kỹ thuật với một lệnh gọi hàm cook chuyên dụng", các nhà phân tích giải thích.

Sau khi hoán đổi, kẻ tấn công chuyển tiền qua Tornado Cash, một giao thức trộn tiền điện tử, chủ yếu là 10 ETH mỗi giao dịch, được gửi dần vào ngày hôm sau.
Và đây không phải là lần đầu tiên mã CauldronV4 của Abracadabra gặp sự cố. Các sự cố khác hồi đầu năm nay đã sử dụng các trường hợp ngoại lệ khác nhau trong cùng một họ hợp đồng. Điều thú vị bây giờ là tốc độ phản ứng của quá trình triển khai phân nhánh.
Theo báo cáo, một Fork có tên Synnax đã tạm dừng hoặc hủy danh sách trắng cho nhánh CauldronV4 trên DegenBox của chính nó vài ngày trước khi Abracadabra bị rút cạn. Về cơ bản, nhóm Fork đã kéo phanh khẩn cấp sau khi phát hiện ra cùng một mẫu yếu, cho thấy rằng rủi ro có thể nhìn thấy được đối với các nhóm theo dõi mã, nếu không được sửa.