Euler Finance遭受 cuộc tấn công cho vay chớp nhoáng,损失近2亿美元
Vào ngày 13 tháng 3 năm 2023, dự án Euler Finance đã gặp phải một cuộc tấn công cho vay chớp nhoáng nghiêm trọng. Theo dữ liệu giám sát trên chuỗi, kẻ tấn công đã lợi dụng một lỗ hổng trong hợp đồng của dự án, thành công đánh cắp khoảng 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
Kẻ tấn công trước tiên đã lấy khoản vay nhanh 30 triệu DAI từ một nền tảng cho vay, sau đó triển khai hai hợp đồng quan trọng: một để thực hiện các hoạt động cho vay, một để thanh lý.
Các bước chính của cuộc tấn công như sau:
Đặt 20 triệu DAI vào hợp đồng Euler Protocol, nhận được 19.5 triệu eDAI.
Sử dụng chức năng đòn bẩy 10x của Euler Protocol, vay 195.6 triệu eDAI và 200 triệu dDAI.
Sử dụng 10 triệu DAI còn lại để trả một phần nợ và tiêu hủy dDAI tương ứng.
Một lần nữa vay cùng số lượng eDAI và dDAI.
Thông qua hàm donateToReserves để quyên góp 100 triệu eDAI, sau đó gọi hàm liquidate để thực hiện thanh lý, thu được 310 triệu dDAI và 250 triệu eDAI.
Cuối cùng rút 38.9 triệu DAI, hoàn trả 30 triệu Khoản vay nhanh, lợi nhuận ròng khoảng 8.87 triệu DAI.
Phân tích nguyên nhân lỗ hổng
Lỗ hổng cốt lõi của cuộc tấn công này nằm ở hàm donateToReserves trong hợp đồng 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ư hàm mint), hàm donateToReserves không thực hiện thao tác checkLiquidity, điều này đã cho phép kẻ tấn công thao túng trạng thái tài khoản của mình, khiến nó đáp ứng các điều kiện để bị 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 số lượng eToken của người dùng luôn lớn hơn số lượng dToken. Tuy nhiên, do hàm donateToReserves thiếu bước quan trọng này, kẻ tấn công đã có thể vượt qua cơ chế bảo mật, đạt được lợi nhuận không chính đáng.
Đề xuất an toàn
Đối với các cuộc tấn công như vậy, các dự án blockchain nên:
Thực hiện kiểm toán an ninh toàn diện trước khi hợp đồng được ra mắt, đảm bảo chất lượng mã và an toàn.
Đặc biệt chú ý đến các khâu quan trọng như hoàn trả vốn, kiểm tra thanh khoản và thanh lý nợ trong các dự án cho vay.
Đả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 bước kiểm tra an toàn cần thiết.
Thường xuyên thực hiện xem xét mã và quét lỗ hổng, kịp thời sửa chữa các rủi ro tiềm ẩn.
Cân nhắc việc giới thiệu cơ chế ký nhiều chữ ký hoặc khóa thời gian và các biện pháp an toàn bổ sung khác để dự trữ thời gian đệm cho các tình huống khẩn cấp.
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 toàn hợp đồng thông minh. Các bên dự án nên luôn đặt an toàn lên hàng đầu, thông qua các thực hành an toàn liên tục và đổi mới công nghệ, cùng nhau xây dựng một hệ sinh thái Web3 an toàn và đáng tin cậy hơ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 donateToReserves函数存漏洞
Euler Finance遭受 cuộc tấn công cho vay chớp nhoáng,损失近2亿美元
Vào ngày 13 tháng 3 năm 2023, dự án Euler Finance đã gặp phải một cuộc tấn công cho vay chớp nhoáng nghiêm trọng. Theo dữ liệu giám sát trên chuỗi, kẻ tấn công đã lợi dụng một lỗ hổng trong hợp đồng của dự án, thành công đánh cắp khoảng 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
Kẻ tấn công trước tiên đã lấy khoản vay nhanh 30 triệu DAI từ một nền tảng cho vay, sau đó triển khai hai hợp đồng quan trọng: một để thực hiện các hoạt động cho vay, một để thanh lý.
Các bước chính của cuộc tấn công như sau:
Đặt 20 triệu DAI vào hợp đồng Euler Protocol, nhận được 19.5 triệu eDAI.
Sử dụng chức năng đòn bẩy 10x của Euler Protocol, vay 195.6 triệu eDAI và 200 triệu dDAI.
Sử dụng 10 triệu DAI còn lại để trả một phần nợ và tiêu hủy dDAI tương ứng.
Một lần nữa vay cùng số lượng eDAI và dDAI.
Thông qua hàm donateToReserves để quyên góp 100 triệu eDAI, sau đó gọi hàm liquidate để thực hiện thanh lý, thu được 310 triệu dDAI và 250 triệu eDAI.
Cuối cùng rút 38.9 triệu DAI, hoàn trả 30 triệu Khoản vay nhanh, lợi nhuận ròng khoảng 8.87 triệu DAI.
Phân tích nguyên nhân lỗ hổng
Lỗ hổng cốt lõi của cuộc tấn công này nằm ở hàm donateToReserves trong hợp đồng 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ư hàm mint), hàm donateToReserves không thực hiện thao tác checkLiquidity, điều này đã cho phép kẻ tấn công thao túng trạng thái tài khoản của mình, khiến nó đáp ứng các điều kiện để bị 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 số lượng eToken của người dùng luôn lớn hơn số lượng dToken. Tuy nhiên, do hàm donateToReserves thiếu bước quan trọng này, kẻ tấn công đã có thể vượt qua cơ chế bảo mật, đạt được lợi nhuận không chính đáng.
Đề xuất an toàn
Đối với các cuộc tấn công như vậy, các dự án blockchain nên:
Thực hiện kiểm toán an ninh toàn diện trước khi hợp đồng được ra mắt, đảm bảo chất lượng mã và an toàn.
Đặc biệt chú ý đến các khâu quan trọng như hoàn trả vốn, kiểm tra thanh khoản và thanh lý nợ trong các dự án cho vay.
Đả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 bước kiểm tra an toàn cần thiết.
Thường xuyên thực hiện xem xét mã và quét lỗ hổng, kịp thời sửa chữa các rủi ro tiềm ẩn.
Cân nhắc việc giới thiệu cơ chế ký nhiều chữ ký hoặc khóa thời gian và các biện pháp an toàn bổ sung khác để dự trữ thời gian đệm cho các tình huống khẩn cấp.
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 toàn hợp đồng thông minh. Các bên dự án nên luôn đặt an toàn lên hàng đầu, thông qua các thực hành an toàn liên tục và đổi mới công nghệ, cùng nhau xây dựng một hệ sinh thái Web3 an toàn và đáng tin cậy hơn.