最近的 @ResupplyFi 黑客事件顯示,簡單的整數除法如何導致災難性的金庫操控。一次 $9.56M 的漏洞在部署幾小時內被執行。 讓我們來分析這個關鍵的 ERC4626 漏洞 ↓
2/ 攻擊向量:ERC4626 "首次捐贈" 操控: • 部署時空的金庫 • 攻擊者存入 1 wei • 進行大量資產捐贈 • 股價驟然膨脹 • 協議的匯率計算崩潰
3/ 漏洞簡述: _exchangeRate = 1e36 / IOracle(_exchangeRateInfo.oracle).getPrices(address(collateral)); 整數除法沒有四捨五入保護 → 當 oracle 價格過大時,匯率會四捨五入為零。
4/ 利用鏈: 1. 向空的保險庫存入 1 wei 2. 捐贈以提高股份價格 3. 預言機報告膨脹的價格 4. 由於除法,匯率 = 0 5. LTV 檢查:0 <= maxLTV(總是正確的!) 6. 解鎖無限借貸
5/ 預防措施很簡單: _exchangeRate = 1e36 / price; require(_exchangeRate > 0, "無效的匯率"); 此外: • 強制最低存款 • 添加股份比例檢查 • 監控金庫流動性
6/ 主要教訓:ERC4626 金庫在部署時需要額外的保護。 「首位存款人」問題並不新鮮,但 ResupplyFi 展示了它如何演變成一個關鍵的漏洞。 在我們的博客上閱讀完整的技術分析:
3.4K