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 đã bị cuộc tấn công cho vay chớp nhoáng do lỗ hổng hợp đồng thông minh, gây thiệt hại khoảng 197 triệu đô la. Kẻ tấn công đã lợi dụng lỗ hổng thiếu kiểm tra tính thanh khoản trong hàm donateToReserves của hợp đồng, thông qua nhiều thao tác để thu được lợi nhuận khổng lồ.
Phân tích quá trình tấn công
Kẻ tấn công trước tiên đã vay 30 triệu DAI từ một nền tảng cho vay chớp nhoáng và triển khai hai hợp đồng: hợp đồng cho vay và hợp đồng thanh lý.
Đặt 20 triệu DAI đã vay vào hợp đồng Euler Protocol, nhận khoảng 19,5 triệu eDAI.
Sử dụng chức năng đòn bẩy 10x của Giao thức Euler, vay 1.956 triệu eDAI và 200 triệu dDAI.
Sử dụng 10 triệu DAI còn lại để trả bớt nợ và tiêu hủy số dDAI tương ứng, sau đó lại vay ra cùng số lượng eDAI và dDAI.
Gọi hàm donateToReserves để quyên góp 100 triệu eDAI, sau đó thực hiện thanh lý thông qua hàm liquidate để nhận được 310 triệu dDAI và 250 triệu eDAI.
Cuối cùng rút 3890 triệu DAI, hoàn trả khoản vay nhanh 3000 triệu DAI, lãi ròng khoảng 887 triệu DAI.
Nguyên nhân lỗ hổng
Nguyên nhân chính khiến cuộc tấn công thành công là hàm donateToReserves thiếu kiểm tra tính thanh khoản cần thiết. So với các hàm quan trọng khác (như mint), donateToReserves không gọi hàm checkLiquidity để xác minh trạng thái thanh khoản của người dùng. Điều này cho phép kẻ tấn công thao túng tài khoản của chính mình vào trạng thái có thể bị thanh lý và thu lợi từ đó.
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 lớn hơn số lượng Dtoken, nhằm duy trì trạng thái tài khoản khỏe mạnh. Tuy nhiên, hàm donateToReserves đã bỏ qua bước quan trọng này, tạo cơ hội cho cuộc tấn công.
Bài học và khuyến nghị
Sự kiện lầ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 toàn 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 đây:
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 dự án nên thực hiện kiểm toán bảo mật toàn diện và chặt chẽ trước khi hợp đồng được ra mắt, nhằm đảm bảo tính an toàn và ổn định của hợp đồng. Đồng thời, việc giám sát an ninh liên tục và sửa lỗi kịp thời cũng là điều không thể thiếu.
Với sự phát triển nhanh chóng của tài chính phi tập trung, các sự kiện an ninh tương tự có thể sẽ tiếp tục xuất hiện. Các nhà phát triển và bên dự án cần duy trì sự cảnh giác, không ngừng học hỏi và cải tiến để xây dựng một hệ sinh thái blockchain 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.
5 thích
Phần thưởng
5
6
Đăng lại
Chia sẻ
Bình luận
0/400
ChainComedian
· 9giờ trước
Một dự án bull khác lại gặp sự cố.
Xem bản gốcTrả lời0
OfflineNewbie
· 9giờ trước
đồ ngốc lại bị chơi đùa với mọi người rồi~
Xem bản gốcTrả lời0
SmartMoneyWallet
· 9giờ trước
1.97 triệu đô la Mỹ? Cách thao tác này thật là thấp kém, nhưng số tiền không hề nhỏ.
Xem bản gốcTrả lời0
SolidityStruggler
· 9giờ trước
Lại một lần nữa hợp đồng thông minh phải gánh chịu.
Euler Finance遭2亿美元cuộc tấn công cho vay chớp nhoáng 智能合约漏洞成祸因
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 đã bị cuộc tấn công cho vay chớp nhoáng do lỗ hổng hợp đồng thông minh, gây thiệt hại khoảng 197 triệu đô la. Kẻ tấn công đã lợi dụng lỗ hổng thiếu kiểm tra tính thanh khoản trong hàm donateToReserves của hợp đồng, thông qua nhiều thao tác để thu được lợi nhuận khổng lồ.
Phân tích quá trình tấn công
Kẻ tấn công trước tiên đã vay 30 triệu DAI từ một nền tảng cho vay chớp nhoáng và triển khai hai hợp đồng: hợp đồng cho vay và hợp đồng thanh lý.
Đặt 20 triệu DAI đã vay vào hợp đồng Euler Protocol, nhận khoảng 19,5 triệu eDAI.
Sử dụng chức năng đòn bẩy 10x của Giao thức Euler, vay 1.956 triệu eDAI và 200 triệu dDAI.
Sử dụng 10 triệu DAI còn lại để trả bớt nợ và tiêu hủy số dDAI tương ứng, sau đó lại vay ra cùng số lượng eDAI và dDAI.
Gọi hàm donateToReserves để quyên góp 100 triệu eDAI, sau đó thực hiện thanh lý thông qua hàm liquidate để nhận được 310 triệu dDAI và 250 triệu eDAI.
Cuối cùng rút 3890 triệu DAI, hoàn trả khoản vay nhanh 3000 triệu DAI, lãi ròng khoảng 887 triệu DAI.
Nguyên nhân lỗ hổng
Nguyên nhân chính khiến cuộc tấn công thành công là hàm donateToReserves thiếu kiểm tra tính thanh khoản cần thiết. So với các hàm quan trọng khác (như mint), donateToReserves không gọi hàm checkLiquidity để xác minh trạng thái thanh khoản của người dùng. Điều này cho phép kẻ tấn công thao túng tài khoản của chính mình vào trạng thái có thể bị thanh lý và thu lợi từ đó.
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 lớn hơn số lượng Dtoken, nhằm duy trì trạng thái tài khoản khỏe mạnh. Tuy nhiên, hàm donateToReserves đã bỏ qua bước quan trọng này, tạo cơ hội cho cuộc tấn công.
Bài học và khuyến nghị
Sự kiện lầ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 toàn 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 đây:
Các dự án nên thực hiện kiểm toán bảo mật toàn diện và chặt chẽ trước khi hợp đồng được ra mắt, nhằm đảm bảo tính an toàn và ổn định của hợp đồng. Đồng thời, việc giám sát an ninh liên tục và sửa lỗi kịp thời cũng là điều không thể thiếu.
Với sự phát triển nhanh chóng của tài chính phi tập trung, các sự kiện an ninh tương tự có thể sẽ tiếp tục xuất hiện. Các nhà phát triển và bên dự án cần duy trì sự cảnh giác, không ngừng học hỏi và cải tiến để xây dựng một hệ sinh thái blockchain an toàn và đáng tin cậy hơn.