# Euler Finance遭受閃電貸攻擊,損失近2億美元3月13日,Euler Finance項目因其智能合約存在漏洞而遭受閃電貸攻擊,造成約1.97億美元的巨額損失。這次攻擊涉及6種不同的加密貨幣代幣。## 攻擊過程分析攻擊者首先從某借貸平台獲取了3000萬DAI的閃電貸,並部署了兩個關鍵合約:一個用於借貸操作,另一個用於清算。隨後,攻擊者將2000萬DAI質押到Euler Protocol合約中,獲得了約1950萬eDAI。利用Euler Protocol的10倍槓杆功能,攻擊者進一步借出了1.956億eDAI和2億dDAI。接着,攻擊者使用剩餘的1000萬DAI償還部分債務,銷毀了相應的dDAI。然後再次借出同樣數量的eDAI和dDAI。關鍵的一步是,攻擊者利用donateToReserves函數的漏洞,捐贈了10倍於償還資金的金額,即1億eDAI。這一操作使得攻擊者能夠觸發清算機制,從而獲得3.1億dDAI和2.5億eDAI。最後,攻擊者通過提現功能獲取了3890萬DAI,歸還了3000萬DAI的閃電貸,最終獲利約887萬DAI。## 漏洞原因分析此次攻擊的核心漏洞在於Euler Finance的donateToReserves函數缺少必要的流動性檢查。與其他關鍵函數(如mint函數)相比,donateToReserves函數沒有調用checkLiquidity進行用戶流動性驗證。正常情況下,checkLiquidity函數會通過調用RiskManager模塊來確保用戶的eToken數量大於dToken數量,以維持系統的安全性。然而,由於donateToReserves函數缺少這一關鍵步驟,攻擊者得以操縱自身帳戶狀態,使其符合被清算的條件,然後執行清算獲利。## 安全建議針對此類攻擊,我們建議區塊鏈項目方:1. 在智能合約上線前進行全面的安全審計,尤其關注資金借貸、流動性管理和債務清算等關鍵環節。2. 對所有可能影響用戶資產狀態的函數實施嚴格的安全檢查,包括但不限於流動性驗證。3. 定期進行代碼審查和漏洞掃描,及時修復潛在的安全隱患。4. 建立完善的風險管理機制,設置合理的借貸限額和清算閾值。5. 考慮引入多重籤名或時間鎖等額外的安全措施,以防止大規模資金流失。通過採取這些預防措施,可以顯著提高DeFi項目的安全性,降低遭受類似攻擊的風險。
Euler Finance遭2億美元閃電貸攻擊 智能合約漏洞成禍根
Euler Finance遭受閃電貸攻擊,損失近2億美元
3月13日,Euler Finance項目因其智能合約存在漏洞而遭受閃電貸攻擊,造成約1.97億美元的巨額損失。這次攻擊涉及6種不同的加密貨幣代幣。
攻擊過程分析
攻擊者首先從某借貸平台獲取了3000萬DAI的閃電貸,並部署了兩個關鍵合約:一個用於借貸操作,另一個用於清算。
隨後,攻擊者將2000萬DAI質押到Euler Protocol合約中,獲得了約1950萬eDAI。利用Euler Protocol的10倍槓杆功能,攻擊者進一步借出了1.956億eDAI和2億dDAI。
接着,攻擊者使用剩餘的1000萬DAI償還部分債務,銷毀了相應的dDAI。然後再次借出同樣數量的eDAI和dDAI。
關鍵的一步是,攻擊者利用donateToReserves函數的漏洞,捐贈了10倍於償還資金的金額,即1億eDAI。這一操作使得攻擊者能夠觸發清算機制,從而獲得3.1億dDAI和2.5億eDAI。
最後,攻擊者通過提現功能獲取了3890萬DAI,歸還了3000萬DAI的閃電貸,最終獲利約887萬DAI。
漏洞原因分析
此次攻擊的核心漏洞在於Euler Finance的donateToReserves函數缺少必要的流動性檢查。與其他關鍵函數(如mint函數)相比,donateToReserves函數沒有調用checkLiquidity進行用戶流動性驗證。
正常情況下,checkLiquidity函數會通過調用RiskManager模塊來確保用戶的eToken數量大於dToken數量,以維持系統的安全性。然而,由於donateToReserves函數缺少這一關鍵步驟,攻擊者得以操縱自身帳戶狀態,使其符合被清算的條件,然後執行清算獲利。
安全建議
針對此類攻擊,我們建議區塊鏈項目方:
在智能合約上線前進行全面的安全審計,尤其關注資金借貸、流動性管理和債務清算等關鍵環節。
對所有可能影響用戶資產狀態的函數實施嚴格的安全檢查,包括但不限於流動性驗證。
定期進行代碼審查和漏洞掃描,及時修復潛在的安全隱患。
建立完善的風險管理機制,設置合理的借貸限額和清算閾值。
考慮引入多重籤名或時間鎖等額外的安全措施,以防止大規模資金流失。
通過採取這些預防措施,可以顯著提高DeFi項目的安全性,降低遭受類似攻擊的風險。