Phân tích chuyên sâu về vụ hack Euler Finance trị giá 195 triệu USD

Vào ngày 13 tháng 3 năm 2023, nhóm quỹ của Euler Finance đã bị tấn công bởi một khoản vay chớp nhoáng và tổng thiệt hại ước tính là khoảng 195 triệu đô la Mỹ. Con số này cũng cao hơn gấp đôi tổng thiệt hại tài sản từ tất cả các sự cố bảo mật khác trong không gian Web3 cho đến năm 2023.
Theo mô tả của Euler Finance về chính nó, nền tảng này là “một giao thức không giam giữ trên Ethereum cho phép người dùng cho vay và mượn hầu như bất kỳ tài sản tiền điện tử nào.”
Lý do chính cho cuộc tấn công này là có một lỗ hổng trong `donateToReserve` trong hợp đồng Euler Pool. Vì chức năng này không kiểm tra tình trạng vị trí của người gọi, nên người dùng có thể tự nguyện từ bỏ một phần tiền gửi có đòn bẩy để làm mất cân bằng vị trí của chính họ, sau đó sử dụng quy tắc thanh lý đặc trưng của Euler để thanh lý vị trí của chính họ nhằm kiếm lợi nhuận.

Sử dụng tài sản mượn từ các khoản vay chớp nhoáng, trước tiên kẻ tấn công đã tạo ra một tình huống có đòn bẩy cao và mất khả năng thanh toán thông qua chức năng `mint' duy nhất trong giao thức cho vay Euler và chức năng 'donateToReserves' dễ bị tấn công trong hợp đồng nhóm quỹ Euler. Sau đó, kẻ tấn công đã thanh lý các vị trí mất khả năng thanh toán do chính anh ta tạo ra với tư cách là người thanh lý trong cùng một giao dịch để nhận được một số lượng lớn eToken phái sinh miễn phí. Cuối cùng, nhóm quỹ cạn kiệt khi rút tiền và cuộc tấn công được thực hiện liên tục trên nhiều Nhóm Euler để làm cạn kiệt tất cả các nhóm quỹ.
quá trình tấn công
quá trình tấn công
① Kẻ tấn công flash đã cho vay 30 triệu DAI từ AAVE.
②Kẻ tấn công gửi 20 triệu DAI cho Euler thông qua hợp đồng eDAI và nhận 20 triệu eDAI. Trước khi kẻ tấn công gửi 20 triệu DAI, số dư DAI trong nhóm Euler là 8,9 triệu.
③Gọi `eDAI.mint()`. Tính năng `đúc tiền` cụ thể này là duy nhất của Eule Financer và cho phép người dùng vay và trả nhiều lần. Đây là một phương pháp tạo ra một chu kỳ vay, kết quả của nó là một vị thế vay có đòn bẩy.
④ Sau khi gọi `mint`, 200 triệu dDAI và 195,6 triệu eDAI đã được nhận. (Lưu ý: dTokens đại diện cho token nợ, eTokens đại diện cho vốn chủ sở hữu thế chấp).
, hoàn trả 10 triệu DAI trong nhóm eDAI cho Euler, điều này sẽ phá hủy 10 triệu dDAI. sau đó gọi lại"repay", hoàn trả 10 triệu DAI trong nhóm eDAI cho Euler, điều này sẽ phá hủy 10 triệu dDAI. sau đó gọi lại"mint", tạo ra một vị thế vay khác dưới dạng 200 triệu dDAI và 195,6 triệu eDAI cho hợp đồng tấn công. Tại thời điểm này, vị trí của kẻ tấn công là: 390 triệu dDAI và 400 triệu eDAI.
⑥ Gọi `donateToReserves` (chức năng dễ bị tấn công được giới thiệu vào tháng 7 năm 2022) để chuyển 100 triệu eDAI cho Euler. Do không có sự kiểm tra thích hợp về tình trạng tài sản thế chấp của đạo luật này,"donate"Kẻ tấn công sau này trở thành"người phạm tội"(địa chỉ có mức nợ không lành mạnh), có các khoản nợ được điều chỉnh theo rủi ro vượt xa giá trị tài sản thế chấp của họ, vì vậy chúng có thể được thanh lý. Tại thời điểm này, vị trí của kẻ tấn công là: 390 triệu dDAI và 300 triệu eDAI.
⑦Hợp đồng thanh lý do kẻ tấn công triển khai bắt đầu thanh lý "những kẻ vi phạm". Một điểm đặc biệt trong logic thanh lý của Euler Finance là khi vị thế cho vay của người bị thanh lý cực kỳ không lành mạnh, người thanh lý có thể nhận được "chiết khấu" lên tới 20% trong quá trình này.
⑧Thông qua thanh lý, người thanh lý đã nhận được "khoản nợ" là 259 triệu dDAI và "tài sản" là 3,1 eDAI. Tổng số nợ được chuyển trong thanh lý thấp hơn nhiều so với tài sản. Những người thanh lý đã thu được gần 45 triệu tài sản eDAI.
⑨Người thanh lý đã lấy đi tất cả tài sản thế chấp trị giá 38,9 triệu DAI từ thỏa thuận thông qua eDAI thu được, sau đó hoàn trả khoản vay chớp nhoáng, kiếm được lợi nhuận 8 triệu đô la Mỹ.
Kẻ tấn công hiện đang nắm giữ ETH trị giá 13,5 triệu đô la tại địa chỉ một, 148 triệu đô la ETH và 43 triệu DAI tại địa chỉ hai.
Địa chỉ một:
https://etherscan.io/address/0x B 2698 C 2D 99 aD 2c 302 a 95 A 8 DB 26 B 08 D 17 a 77 cedd 4
Địa chỉ hai:
https://etherscan.io/address/0x b 66 cd 966670 d 96 2C 227 B 3 EABA 30 a 87 2D bFb 995 db
Thật kỳ diệu, giao dịch tấn công đầu tiên đã vô tình bị chặn bởi các bot MEV. Bot kiếm được 8,79 triệu đô la trong DAI. Thật đáng tiếc khi địa chỉ rút tiền được ghi chết trong hợp đồng của kẻ tấn công và robot MEV chỉ có thể gửi số tiền bị chặn đến địa chỉ của kẻ tấn công trong quá trình cố gắng trả lại tiền.
Các cuộc tấn công thứ hai đến thứ năm đã thu được tài sản trị giá 177 triệu đô la của tin tặc.
viết ở cuối
viết ở cuối
Hiện tại, sự kiện này là vụ hack lớn nhất trong không gian Web3 vào năm 2023. Euler Finance thừa nhận tính xác thực của vụ việc trong một tweet và cho biết họ hiện đang hợp tác với các chuyên gia bảo mật và cơ quan thực thi pháp luật.
Mức độ bảo mật tổng thể và nhận thức của nhóm Tài chính Euler ở mức tương đối cao trong ngành và họ cũng đã hợp tác với nhiều công ty bảo mật. Dự án đã được kiểm toán và cũng được hỗ trợ bởi chương trình tiền thưởng lỗi, nhưng dự án đã không thoát khỏi móng vuốt của tin tặc.
Do đó, các chuyên gia bảo mật của CertiK nhắc lại rằng các chức năng mới được thêm vào cũng phải được kiểm tra. Lỗ hổng hợp đồng nêu trên được https://forum.euler.finance/t/eip-14-contract-upgrades/305 giới thiệu, đã gây ra hậu quả nghiêm trọng như vậy.
Vì vậy, việc kiểm toán không phải một lần là xong, khi bổ sung chức năng mới vào hợp đồng thì phải kiểm tra lại các chức năng mới bổ sung, nếu không thì “vạn dặm” dù có kiểm toán cũng có thể sụp đổ trong tương lai. một "tổ kiến" chưa được kiểm toán.


