Euler Finance遭受 cuộc tấn công cho vay chớp nhoáng,损失高达1.97亿美元
Vào ngày 13 tháng 3 năm 2023, dự án Euler Finance đã bị tấn công lớn do một lỗ hổng trong hợp đồng thông minh của nó. Kẻ tấn công đã lợi dụng lỗ hổng thiếu kiểm tra thanh khoản trong hàm donateToReserves của Etoken, qua việc gọi nhiều lần các thao tác với các loại tiền khác nhau để thu được lợi nhuận khổng lồ. Tổng tổn thất do cuộc tấn công này lên tới 197 triệu USD, liên quan đến 6 loại token khác nhau.
Phân tích quá trình tấn công
Các bước thực hiện của kẻ tấn công như sau:
Từ một nền tảng cho vay, vay nhanh 30 triệu DAI.
Triển khai hai hợp đồng: một cho vay và một cho thanh lý.
Đặt 20 triệu DAI vào hợp đồng Euler Protocol, nhận được 195.000 eDAI.
Sử dụng chức năng vay mượn đòn bẩy 10x của Euler Protocol, vay ra 1.956 triệu eDAI và 2 triệu dDAI.
Sử dụng 10 triệu DAI còn lại để trả một phần nợ và thiêu hủy số dDAI tương ứng.
Một lần nữa cho vay 1.956 triệu eDAI và 2 triệu dDAI.
Gọi hàm donateToReserves, quyên góp gấp 10 lần số tiền hoàn trả (1 triệu eDAI).
Kích hoạt hàm thanh lý, nhận được 310 triệu dDAI và 250 triệu eDAI.
Rút 38.9 nghìn DAI, hoàn trả 30 nghìn khoản vay nhanh, cuối cùng thu lợi 8.87 nghìn DAI.
Phân tích lỗ hổng
Chìa khóa để cuộc tấn công thành công là hàm donateToReserves của Euler Finance thiếu kiểm tra thanh khoản cần thiết. So với các hàm quan trọng khác (như mint), hàm donateToReserves không thực hiện bước kiểm tra thanh khoản. Sự bất cẩn này đã cho phép người dùng thao túng trạng thái tài khoản của họ, khiến nó phù hợp với điều kiện bị thanh lý, sau đó thu lợi từ việc thanh lý.
Trong điều kiện bình thường, hàm checkLiquidity sẽ gọi mô-đun RiskManager để đảm bảo rằng Etoken của người dùng luôn lớn hơn Dtoken, nhằm duy trì trạng thái sức khỏe của hệ thống. Tuy nhiên, do hàm donateToReserves thiếu kiểm tra quan trọng này, kẻ tấn công có thể vượt qua cơ chế bảo mật của hệ thống.
Đề xuất an toàn
Đối với các cuộc tấn công như vậy, chúng tôi đưa ra những đề xuất an ninh sau:
Trước khi triển khai hợp đồng thông minh, phải thực hiện kiểm toán an ninh toàn diện.
Các dự án cho vay nên đặc biệt chú ý đến các khía cạnh quan trọng như hoàn trả vốn, kiểm tra thanh khoản và thanh lý nợ.
Đảm bảo rằng tất cả các hàm có thể ảnh hưởng đến trạng thái tài sản của người dùng đều bao gồm các kiểm tra an toàn cần thiết.
Thực hiện đánh giá mã định kỳ để đảm bảo rằng các tính năng mới không gây ra lỗ hổng tiềm ẩn.
Thiết lập cơ chế phản ứng khẩn cấp để có thể phản ứng nhanh chóng khi xảy ra sự kiện an ninh.
Sự kiện này một lần nữa làm nổi bật tầm quan trọng của an ninh hợp đồng thông minh. Các nhà phát triển dự án nên luôn đặt an ninh lên hàng đầu, bảo vệ tài sản của người dùng thông qua việc thực hành an ninh liên tục và kiểm toán.
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
Euler Finance遭1.97亿美元cuộc tấn công cho vay chớp nhoáng hợp đồng thông minh漏洞引发巨额损失
Euler Finance遭受 cuộc tấn công cho vay chớp nhoáng,损失高达1.97亿美元
Vào ngày 13 tháng 3 năm 2023, dự án Euler Finance đã bị tấn công lớn do một lỗ hổng trong hợp đồng thông minh của nó. Kẻ tấn công đã lợi dụng lỗ hổng thiếu kiểm tra thanh khoản trong hàm donateToReserves của Etoken, qua việc gọi nhiều lần các thao tác với các loại tiền khác nhau để thu được lợi nhuận khổng lồ. Tổng tổn thất do cuộc tấn công này lên tới 197 triệu USD, liên quan đến 6 loại token khác nhau.
Phân tích quá trình tấn công
Các bước thực hiện của kẻ tấn công như sau:
Phân tích lỗ hổng
Chìa khóa để cuộc tấn công thành công là hàm donateToReserves của Euler Finance thiếu kiểm tra thanh khoản cần thiết. So với các hàm quan trọng khác (như mint), hàm donateToReserves không thực hiện bước kiểm tra thanh khoản. Sự bất cẩn này đã cho phép người dùng thao túng trạng thái tài khoản của họ, khiến nó phù hợp với điều kiện bị thanh lý, sau đó thu lợi từ việc thanh lý.
Trong điều kiện bình thường, hàm checkLiquidity sẽ gọi mô-đun RiskManager để đảm bảo rằng Etoken của người dùng luôn lớn hơn Dtoken, nhằm duy trì trạng thái sức khỏe của hệ thống. Tuy nhiên, do hàm donateToReserves thiếu kiểm tra quan trọng này, kẻ tấn công có thể vượt qua cơ chế bảo mật của hệ thống.
Đề xuất an toàn
Đối với các cuộc tấn công như vậy, chúng tôi đưa ra những đề xuất an ninh sau:
Sự kiện này một lần nữa làm nổi bật tầm quan trọng của an ninh hợp đồng thông minh. Các nhà phát triển dự án nên luôn đặt an ninh lên hàng đầu, bảo vệ tài sản của người dùng thông qua việc thực hành an ninh liên tục và kiểm toán.