最近的 @ResupplyFi 黑客事件显示,简单的整数除法如何导致灾难性的保险库操控。一个 $9.56M 的漏洞在部署后几小时内被利用。 让我们来分析这个关键的 ERC4626 漏洞 ↓
2/ 攻击向量:ERC4626 "首次捐赠" 操作: • 部署时空的金库 • 攻击者存入1 wei • 进行大额资产捐赠 • 份额价格飙升至天文数字 • 协议的汇率计算崩溃
3/ 漏洞概述: _exchangeRate = 1e36 / IOracle(_exchangeRateInfo.oracle).getPrices(address(collateral)); 整数除法没有舍入保护 → 当预言机价格过大时,汇率四舍五入为零。
4/ 利用链: 1. 向空的保险库存入 1 wei 2. 捐赠以抬高股价 3. 预言机报告抬高的价格 4. 由于除法,汇率 = 0 5. LTV 检查:0 <= maxLTV(总是成立!) 6. 解锁无限借贷
5/ 预防很简单: _exchangeRate = 1e36 / price; require(_exchangeRate > 0, "无效的汇率"); 此外: • 强制最低存款 • 添加股份比例检查 • 监控金库流动性
6/ 关键教训:ERC4626 金库在部署时需要额外保护。 “首位存款人”问题并不新鲜,但 ResupplyFi 展示了它如何导致一个关键漏洞的级联效应。 在我们的博客上阅读完整的技术分析:
3.39K