Cuộc tấn công 1.8 triệu đô la của Abracadabra: Lỗi fork trước đó được lặp lại, theo Hacken

4 giờ trước đây
5 phút đọc
1 lượt xem

Giao thức DeFi Abracadabra bị tấn công

Giao thức DeFi Abracadabra đã mất 1.8 triệu đô la sau khi một kẻ tấn công khai thác một lỗi logic đơn giản trong chức năng batch 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.

Chi tiết vụ tấn công

Vào đầu tháng 10, Abracadabra, một giao thức cho vay DeFi cho phép người dùng vay stablecoin MIM bằng cách sử dụng các token đã gửi làm tài sản thế chấp, đã trải qua nhiều cuộc tấn công từ hacker trước đó. Lần này, giao thức lại mất khoảng 1.8 triệu đô la do một kẻ tấn công lợi dụng một lỗi logic đơn giản trong chức năng batch của nó để vay mà không cần đặt tài sản thế chấp. Điều này tương tự như cách mà một dự án fork đã bị tấn công chỉ vài ngày trước đó, theo ghi chú nghiên cứu được chia sẻ với crypto.news bởi các nhà phân tích tại công ty bảo mật blockchain Hacken.

Cấu trúc của Abracadabra

Abracadabra được ra mắt như một giải pháp cho phép người dùng sử dụng các token có lãi suất làm tài sản thế chấp và vay một token gắn với đồng đô la Mỹ, gọi là Magic Internet Money (MIM). Hệ thống được xây dựng xung quanh hai phần: Cauldrons, xử lý các quy tắc vay, và DegenBox, kho chung thực sự giữ các token. Nói ngắn gọn, người dùng đặt tài sản thế chấp trong một Cauldron, và DegenBox theo dõi tiền ở phía sau.

Vấn đề và cách thức tấn công

Vấn đề xảy ra là một cờ an toàn, lẽ ra phải kiểm tra xem người vay có thực sự có tài sản thế chấp hay không, đã bị tắt trong một giao dịch đơn. Như báo cáo của Hacken chỉ ra, kẻ tấn công “đã khai thác một lỗi logic trong chức năng cook của Abracadabra, nơi họ có thể vay token MIM và sau đó ngay lập tức đặt lại cờ xác thực mà lẽ ra phải kiểm tra xem họ có đủ tài sản thế chấp hay không.” Điều này cho phép một khoản vay không có tài sản thế chấp diễn ra trên nhiều Cauldrons.

Cách thức hoạt động của dòng chảy này khá đơn giản. Abracadabra sử dụng một chức năng batch 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 đó, như bước “vay”, đặt một cờ có tên là needsSolvencyCheck thành true, có nghĩa là “cuối cùng của giao dịch này, kiểm tra rằng người vay an toàn.” Tuy nhiên, một hành động khác có thể được thực hiện trong cùng một batch gọi là _additionalCookAction(…). Như Hacken chỉ ra, chức năng đó được khai báo là “virtual” và chưa bao giờ được triển khai, vì vậy theo mặc định nó trả về một đối tượng rỗng, nơi 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.

Hậu quả và phản ứng

Các nhà phân tích cho biết kẻ tấn công đã tấn công sáu Cauldrons trong một lần, lấy khoảng 1.79 triệu MIM và đổi nó lấy ETH. Kẻ tấn công đã khai thác lỗ hổng và một cách có hệ thống đã đi qua sáu Cauldrons khác nhau, rút cạn từng cái “sử dụng cùng một kỹ thuật với một cuộc gọi chức năng cook chuyên dụng,” các nhà phân tích giải thích. Sau khi đổi, kẻ tấn công đã chuyển tiền qua Tornado Cash, một giao thức trộn crypto, chủ yếu là 10 ETH mỗi lần, gửi dần dần trong ngày tiếp theo.

Đây không phải là lần đầu tiên mã CauldronV4 của Abracadabra gặp rắc rối. Các sự cố khác trước đó trong năm nay đã sử dụng các trường hợp biên khác nhau trong cùng một gia đình hợp đồng. Điều thú vị là cách mà việc triển khai fork phản ứng nhanh chóng. Theo báo cáo, một fork gọi là Synnax đã tạm dừng hoặc không cho phép CauldronV4 master của nó trên DegenBox của riêng nó vài ngày trước khi xảy ra vụ rút tiền của Abracadabra. Điều này cho thấy rằng đội ngũ 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 đã rõ ràng với các đội đang theo dõi mã, nếu không được khắc phục.