前言
北京时间2022年6月16日,知道创宇区块链安全实验室?监测到以太坊链上借贷项目InverseFinance因预言机设计问题被攻击,损失约77BTC。
知道创宇区块链安全实验室?第一时间跟踪本次事件并分析。
基础信息
被攻击预言机合约:0xe8b3bc58774857732c6c1147bfc9b9e5fb6f427c
攻击者地址:0x7b792e49f640676b3706d666075e903b3a4deec6
攻击合约:0xf508c58ce37ce40a40997c715075172691f92e2d
tx:0x958236266991bc3fe3b77feaacea120f172c0708ad01c7a715b255f218f9313c
漏洞分析
与大部分预言机事件一样,项目方由于在预言机实现过程中过度依赖某一池子内的价格进行定价。导致攻击者可操控该分布式池子的代币比例导致价格控制进而攻击协议。
本次事件中,攻击者利用了项目方如下的价格预言机代码:
该喂价函数将Crv3池内BTC/ETH/USDT池内代币余额作为价格源的一部分,导致在攻击者在CRV3CRYPTO池子中利用大量BTC换取了USDT后产生了巨大的价格拉升。
攻击流程
1.攻击者首先利用闪电贷从AAVE中借来了27000个WBTC,随后将225个存入了Curve,协议为其铸造相应的质押凭据;
2.利用crv3crypto存入yvCurve-3Crypto,协议为其铸造相应凭据anYvCrv3Crypto;
3.利用余下的WBTC来进行兑换,进而控制latestAnswer中获取的Curve池子中的余额比例。(使用26,775WBTC交换获得了75403376USDT);
在第三步兑换前预言机latestAnswer返回为979*1e18;
在价格操控后latestAnswer返回为2831*1e18;
4.于是攻击者得以使用抵押物借出10,133,949个DOLA,而原本225个BTC价值466W美元;
5.然后则是利用USDT换回WBTC、交换DOLA为3Crv;
6.移除3Crv流动性换取稳定币USDT;
7.交换为BTC并归还闪电贷。
总结
预言机合约中错误的使用了balanceOf导致攻击者可操控数据源导致被攻击,这样的攻击方式在之前已出现过多次如Definer预言机攻击事件,项目方在开发过程中不应忽视安全性考量,在上线前建议做好审计工作。
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。