# Euler Finance 遭遇閃電貸攻擊,損失近2億美元2023年3月13日,Euler Finance 項目因智能合約漏洞遭受閃電貸攻擊,造成約1.97億美元損失。攻擊者利用了合約中 donateToReserves 函數缺乏流動性檢查的漏洞,通過多次操作獲取了巨額利潤。## 攻擊過程分析1. 攻擊者首先從某借貸平台閃電貸借入3000萬 DAI,並部署了兩個合約:借貸合約和清算合約。2. 將借來的 DAI 中的2000萬質押到 Euler Protocol 合約,獲得約1950萬 eDAI。3. 利用 Euler Protocol 的10倍槓杆功能,借出1.956億 eDAI 和2億 dDAI。4. 使用剩餘1000萬 DAI 償還部分債務並銷毀相應 dDAI,隨後再次借出同樣數量的 eDAI 和 dDAI。5. 調用 donateToReserves 函數捐贈1億 eDAI,然後通過 liquidate 函數進行清算,獲得3.1億 dDAI 和2.5億 eDAI。6. 最後提取3890萬 DAI,歸還閃電貸的3000萬 DAI,淨賺約887萬 DAI。## 漏洞原因攻擊得以成功的主要原因是 donateToReserves 函數缺少必要的流動性檢查。與其他關鍵函數(如 mint)相比,donateToReserves 未調用 checkLiquidity 函數來驗證用戶的流動性狀態。這使得攻擊者能夠操縱自身帳戶進入可被清算的狀態,並從中獲利。正常情況下,checkLiquidity 函數會調用 RiskManager 模塊來確保用戶的 Etoken 數量大於 Dtoken 數量,以維持帳戶的健康狀態。然而,donateToReserves 函數跳過了這一關鍵步驟,爲攻擊創造了可乘之機。## 教訓與建議這次事件再次凸顯了智能合約安全審計的重要性。對於借貸類項目,尤其需要重點關注以下幾個方面:1. 資金償還機制的完整性2. 流動性檢測的全面性3. 債務清算流程的安全性項目方在合約上線前,應當進行全面而嚴格的安全審計,以確保合約的安全性和穩定性。同時,持續的安全監控和及時的漏洞修復也是不可或缺的。隨着去中心化金融的快速發展,類似的安全事件可能會不斷出現。開發者和項目方需要保持警惕,不斷學習和改進,以構建更加安全、可靠的區塊鏈生態系統。
Euler Finance遭2億美元閃電貸攻擊 智能合約漏洞成禍因
Euler Finance 遭遇閃電貸攻擊,損失近2億美元
2023年3月13日,Euler Finance 項目因智能合約漏洞遭受閃電貸攻擊,造成約1.97億美元損失。攻擊者利用了合約中 donateToReserves 函數缺乏流動性檢查的漏洞,通過多次操作獲取了巨額利潤。
攻擊過程分析
攻擊者首先從某借貸平台閃電貸借入3000萬 DAI,並部署了兩個合約:借貸合約和清算合約。
將借來的 DAI 中的2000萬質押到 Euler Protocol 合約,獲得約1950萬 eDAI。
利用 Euler Protocol 的10倍槓杆功能,借出1.956億 eDAI 和2億 dDAI。
使用剩餘1000萬 DAI 償還部分債務並銷毀相應 dDAI,隨後再次借出同樣數量的 eDAI 和 dDAI。
調用 donateToReserves 函數捐贈1億 eDAI,然後通過 liquidate 函數進行清算,獲得3.1億 dDAI 和2.5億 eDAI。
最後提取3890萬 DAI,歸還閃電貸的3000萬 DAI,淨賺約887萬 DAI。
漏洞原因
攻擊得以成功的主要原因是 donateToReserves 函數缺少必要的流動性檢查。與其他關鍵函數(如 mint)相比,donateToReserves 未調用 checkLiquidity 函數來驗證用戶的流動性狀態。這使得攻擊者能夠操縱自身帳戶進入可被清算的狀態,並從中獲利。
正常情況下,checkLiquidity 函數會調用 RiskManager 模塊來確保用戶的 Etoken 數量大於 Dtoken 數量,以維持帳戶的健康狀態。然而,donateToReserves 函數跳過了這一關鍵步驟,爲攻擊創造了可乘之機。
教訓與建議
這次事件再次凸顯了智能合約安全審計的重要性。對於借貸類項目,尤其需要重點關注以下幾個方面:
項目方在合約上線前,應當進行全面而嚴格的安全審計,以確保合約的安全性和穩定性。同時,持續的安全監控和及時的漏洞修復也是不可或缺的。
隨着去中心化金融的快速發展,類似的安全事件可能會不斷出現。開發者和項目方需要保持警惕,不斷學習和改進,以構建更加安全、可靠的區塊鏈生態系統。