Dự án Euler Finance bị cuộc tấn công cho vay chớp nhoáng, thiệt hại gần 200 triệu USD
Vào ngày 13 tháng 3, dự án Euler Finance đã bị tấn công cho vay chớp nhoáng do lỗ hổng trong hợp đồng thông minh, gây thiệt hại lên đến 197 triệu USD. Kẻ tấn công đã lợi dụng lỗ hổng trong hàm donateToReserves của hợp đồng Etoken trong dự án, nơi thiếu kiểm tra tính thanh khoản, thực hiện nhiều cuộc tấn công bằng nhiều loại tiền điện tử 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 cho vay và thanh lý. Quá trình tấn công đại khái như sau:
Đặt cọc 20 triệu DAI vào hợp đồng Euler Protocol, nhận 19.5 triệu eDAI.
Sử dụng tính năng đòn bẩy 10 lần của Euler Protocol, vay 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ợ, hủy bỏ dDAI tương ứng.
Một lần nữa cho vay số lượng eDAI và dDAI tương đương.
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ý, nhận được 310 triệu dDAI và 250 triệu eDAI.
Cuối cùng rút 38,9 triệu DAI, trả khoản vay nhanh sau khi thu lợi 8,87 triệu DAI.
Phân tích nguyên nhân lỗ hổng
Trọng tâm của cuộc tấn công này nằm ở việc hàm donateToReserves của dự án 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 gọi checkLiquidity để xác minh thanh khoản của người dùng. Đ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 chính mình để đáp ứng các điều kiện thanh lý, từ đó đạt được lợi nhuận không chính đáng.
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 đã bỏ qua bước này, kẻ tấn công có thể vượt qua cơ chế bảo mật.
Khuyến nghị an toàn
Sự kiện này một lần nữa làm nổi bật tầm quan trọng của việc kiểm toán an ninh hợp đồng thông minh. Đối với các dự án cho vay, đặc biệt cần chú ý đến một số khía cạnh sau:
Tính toàn vẹn của cơ chế hoàn trả vốn
Tính toàn diện của việc kiểm tra tính thanh khoản
Độ an toàn của quy trình thanh lý nợ
Các nhà phát triển dự án cần thực hiện một cuộc kiểm toán an ninh toàn diện và chi tiết trước khi triển khai hợp đồng, nhằm ngăn chặn sự xuất hiện của các lỗ hổng tương tự. Đồng thời, việc giám sát an ninh liên tục và khắc phục lỗ hổng kịp thời cũng là chìa khóa để đảm bảo dự án hoạt động an toàn lâu dài.
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.
7 thích
Phần thưởng
7
2
Chia sẻ
Bình luận
0/400
WhaleMinion
· 07-25 11:58
Lại có người gây rối.
Xem bản gốcTrả lời0
DefiEngineerJack
· 07-25 11:45
*thở dài* giờ của những tay mơ trong thiết kế hợp đồng thông minh... hiển thị cho tôi xác minh chính thức hoặc biến đi
Euler Finance遭 cuộc tấn công cho vay chớp nhoáng 损失近2亿美元
Dự án Euler Finance bị cuộc tấn công cho vay chớp nhoáng, thiệt hại gần 200 triệu USD
Vào ngày 13 tháng 3, dự án Euler Finance đã bị tấn công cho vay chớp nhoáng do lỗ hổng trong hợp đồng thông minh, gây thiệt hại lên đến 197 triệu USD. Kẻ tấn công đã lợi dụng lỗ hổng trong hàm donateToReserves của hợp đồng Etoken trong dự án, nơi thiếu kiểm tra tính thanh khoản, thực hiện nhiều cuộc tấn công bằng nhiều loại tiền điện tử 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 cho vay và thanh lý. Quá trình tấn công đại khái như sau:
Đặt cọc 20 triệu DAI vào hợp đồng Euler Protocol, nhận 19.5 triệu eDAI.
Sử dụng tính năng đòn bẩy 10 lần của Euler Protocol, vay 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ợ, hủy bỏ dDAI tương ứng.
Một lần nữa cho vay số lượng eDAI và dDAI tương đương.
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ý, nhận được 310 triệu dDAI và 250 triệu eDAI.
Cuối cùng rút 38,9 triệu DAI, trả khoản vay nhanh sau khi thu lợi 8,87 triệu DAI.
Phân tích nguyên nhân lỗ hổng
Trọng tâm của cuộc tấn công này nằm ở việc hàm donateToReserves của dự án 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 gọi checkLiquidity để xác minh thanh khoản của người dùng. Đ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 chính mình để đáp ứng các điều kiện thanh lý, từ đó đạt được lợi nhuận không chính đáng.
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 đã bỏ qua bước này, kẻ tấn công có thể vượt qua cơ chế bảo mật.
Khuyến nghị an toàn
Sự kiện này một lần nữa làm nổi bật tầm quan trọng của việc kiểm toán an ninh hợp đồng thông minh. Đối với các dự án cho vay, đặc biệt cần chú ý đến một số khía cạnh sau:
Các nhà phát triển dự án cần thực hiện một cuộc kiểm toán an ninh toàn diện và chi tiết trước khi triển khai hợp đồng, nhằm ngăn chặn sự xuất hiện của các lỗ hổng tương tự. Đồng thời, việc giám sát an ninh liên tục và khắc phục lỗ hổng kịp thời cũng là chìa khóa để đảm bảo dự án hoạt động an toàn lâu dài.