# Euler Finance遭受閃電貸攻擊,損失高達1.97億美元2023年3月13日,Euler Finance項目因其智能合約中的一個漏洞遭受了大規模閃電貸攻擊。攻擊者利用Etoken中donateToReserves函數缺少流動性檢查的漏洞,通過多次調用不同幣種的操作獲取了巨額利潤。此次攻擊造成的總損失高達1.97億美元,涉及6種不同的代幣。## 攻擊過程分析攻擊者的操作步驟如下:1. 從某借貸平台閃電貸借入3000萬DAI。2. 部署兩個合約:一個用於借貸,另一個用於清算。3. 將2000萬DAI質押到Euler Protocol合約中,獲得19.5萬eDAI。4. 利用Euler Protocol的10倍槓杆借貸功能,借出195.6萬eDAI和200萬dDAI。5. 使用剩餘的1000萬DAI償還部分債務,並銷毀相應的dDAI。6. 再次借出195.6萬eDAI和200萬dDAI。7. 調用donateToReserves函數,捐贈10倍於償還資金的金額(100萬eDAI)。8. 觸發清算函數,獲得310萬dDAI和250萬eDAI。9. 提取38.9萬DAI,歸還30萬閃電貸,最終獲利8.87萬DAI。## 漏洞分析攻擊得以成功的關鍵在於Euler Finance的donateToReserves函數缺少必要的流動性檢查。與其他關鍵函數(如mint)相比,donateToReserves函數未執行checkLiquidity步驟。這個疏忽導致用戶可以操縱自己的帳戶狀態,使其符合被清算的條件,然後通過清算獲利。正常情況下,checkLiquidity函數會調用RiskManager模塊,確保用戶的Etoken始終大於Dtoken,以維持系統的健康狀態。然而,由於donateToReserves函數缺少這一關鍵檢查,攻擊者得以繞過系統的安全機制。## 安全建議針對此類攻擊,我們提出以下安全建議:1. 智能合約上線前必須進行全面的安全審計。2. 借貸類項目應特別關注資金償還、流動性檢測和債務清算等關鍵環節。3. 確保所有可能影響用戶資產狀態的函數都包含必要的安全檢查。4. 定期進行代碼review,確保新增功能不會引入潛在漏洞。5. 建立應急響應機制,以便在發生安全事件時快速反應。此次事件再次凸顯了智能合約安全的重要性。項目方應當始終將安全置於首位,通過持續的安全實踐和審計來保護用戶資產的安全。
Euler Finance遭1.97億美元閃電貸攻擊 智能合約漏洞引發巨額損失
Euler Finance遭受閃電貸攻擊,損失高達1.97億美元
2023年3月13日,Euler Finance項目因其智能合約中的一個漏洞遭受了大規模閃電貸攻擊。攻擊者利用Etoken中donateToReserves函數缺少流動性檢查的漏洞,通過多次調用不同幣種的操作獲取了巨額利潤。此次攻擊造成的總損失高達1.97億美元,涉及6種不同的代幣。
攻擊過程分析
攻擊者的操作步驟如下:
漏洞分析
攻擊得以成功的關鍵在於Euler Finance的donateToReserves函數缺少必要的流動性檢查。與其他關鍵函數(如mint)相比,donateToReserves函數未執行checkLiquidity步驟。這個疏忽導致用戶可以操縱自己的帳戶狀態,使其符合被清算的條件,然後通過清算獲利。
正常情況下,checkLiquidity函數會調用RiskManager模塊,確保用戶的Etoken始終大於Dtoken,以維持系統的健康狀態。然而,由於donateToReserves函數缺少這一關鍵檢查,攻擊者得以繞過系統的安全機制。
安全建議
針對此類攻擊,我們提出以下安全建議:
此次事件再次凸顯了智能合約安全的重要性。項目方應當始終將安全置於首位,通過持續的安全實踐和審計來保護用戶資產的安全。