By:Kong@慢雾安全团队
据慢雾区消息,2021年10月27日,CreamFinance再次遭受攻击,损失约1.3亿美金,慢雾安全团队第一时间介入分析,并将简要分析分享如下。
攻击核心
本次攻击的核心在于利用Cream借贷池对抵押物价格获取的缺陷,恶意操控拉高了其抵押物的价格,使得攻击者可以从Cream借贷池借出更多的代币。
攻击细节
首先攻击者从DssFlash中闪电贷借出5亿个DAI,随后将借出的5亿个DAI抵押至yearn的yDAI池中,以获得约4.5亿个yDAI凭证。
随后攻击者将获得的yDAI代币在Curve的yDAI/yUSDC/yUSDT/yTUSD池子中进行单币流动性添加,以获得相应的流动性凭证。紧接着攻击者就将获得的凭证抵押到yUSD池子中以获得yUSD凭证,为后续在CreamcrYUSD借贷池中抵押做准备。
美SEC寻求封存针对Ripple一案中提交的专家细节:7月23日消息,美国SEC周五提交了一项动议,要求封存从2022年7月12日起在针对Ripple一案中诉讼方提交的部分文件。根据该文件,SEC强调,他们与被告会面并进行了磋商。然而,SEC预计Ripple和其他被告将反对SEC提议的大部分修改。它补充说,除了少数例外,SEC提议的修订旨在保护专家证人的身份。SEC提醒法院,其中一位专家的名字被律师公布后受到了广泛的威胁和骚扰。然而,该文件也强调,鉴于“道伯特动议”,被告正在请求允许修改第三方的细节。SEC不反对被告提出的对第三方姓名进行修改的申请。同时,它进一步补充说,如果法院决定封存所有这些细节,那么SEC将相应地进行修改。(Coin Gape)[2022/7/23 2:33:27]
之后攻击者开始向Cream的crYUSD借贷池中抵押其获得yUSD凭证,为了扩大其抵押规模,攻击者从AAVE闪电贷借出约52.4万个WETH,并将其抵押到Cream的crETH池子中。
Hop Protocol:将于本周宣布去中心化社区治理细节:5月4日消息,跨链桥Hop Protocol发表文章称,安全、无需信任以及去中心化的跨链桥对以太坊的长期成长非常重要,计划将Hop Protocol的治理去中心化并交由社区管理,具体细节将于本周发布。[2022/5/4 2:48:36]
攻击者通过在crETH池子中抵押大量ETH,来使得其有足够的借贷能力将crYUSD池子中的yUSD全部借出并重复抵押到crYUSD池子中,随后通过在crYUSD池子中进行循环贷以杠杆的形式扩大了本身在crYUSD池子中yUSD的抵押规模,为后续操控价格获利做准备。
随后为了获得yDAI/yUSDC/yUSDT/yTUSD4Pool凭证以操控价格,攻击者用约1,873个ETH从UniswapV3中兑换出约745万个USDC,并通过Curve3Pool将其兑换成DUSD代币约338万个。
AC继续在其社交网站发布关于新产品ve(3,3)相关细节:1月13日消息,AC 在其社交网站上宣布在新产品 ve(3,3)上线时,每支 Fantom 锁仓量排名前 20 的团队将各获得一枚 NFT。这些 NFT 将有 ve(3,3)的分配权,并可以在二级市场流通。[2022/1/13 8:47:22]
接下来攻击者通过获得的DUSD代币从YVaultPeak中赎回yDAI/yUSDC/yUSDT/yTUSD4Pool凭证,并利用此凭证从yUSD池子中取回yDAI/yUSDC/yUSDT/yTUSD代币。
随后攻击者开始进行此次攻击的关键操作,其将约843万个yDAI/yUSDC/yUSDT/yTUSD代币直接转回yUSD池子中,由于其不是通过正常抵押操作进行抵押的,所以这843万个yDAI/yUSDC/yUSDT/yTUSD代币并没有被单独记账,而是直接分散给了yDAI/yUSDC/yUSDT/yTUSD凭证的持有者,这相当于直接拉高了其share的价格。
Circle CEO:总统工作组关于稳定币的报告中还有细节需要澄清:12月9日消息,今日在美国国会的加密听证会上,众议员Sean Casten打趣说,我们可以就稳定币和其他问题举行一场完整的听证会。他进而询问Circle首席执行官Jeremy Allaire是否支持总统工作组关于稳定币的报告中的建议。
Allaire表示:“很多建议我都支持,但并不能一概而论。我认为报告中存在许多挑战。”他的第一个问题是,稳定币发行机构的联邦章程将采取“何种形式”,此外还有其他细节也需要澄清。(CoinDesk)[2021/12/9 13:00:18]
在crToken中由于其抵押物价格被恶意拉高了,因此攻击者抵押的大量yUSD可以使其借出更多的资金,最后攻击者将Cream的其他15个池子全部借空。接下来我们跟进Cream的crToken借贷池中具体借贷逻辑。
从cToken合约中我们可以看到,主要借贷检查在borrowAllowed函数中:
动态 | CME公布即将推出的比特币期权合约细节:金色财经报道,CME今日发布了即将推出的比特币期权合约的细节。CME透露,每份期权合约将基于一份比特币期货合约(该合约又由五枚比特币组成);合约将以美元报价,最小报价单位为25美元(减小的最小报价单位为5美元);将从中部时间星期日下午5:00开始交易,至中部时间星期五下午4:00结束。此外,比特币期权将在交易结束时结算为一份期货合约。此前,CME于9月宣布计划在2020年第一季度推出比特币期权。[2019/10/31]
我们跟进borrowAllowed函数,可以看到在427行,其会根据getHypotheticalAccountLiquidityInternal函数检查实时状态下的该账户所对应的所有cToken的资产价值总和和借贷的资产价值总和,并通过对比cToken的资产价值和借贷的Token价值和,来判断用户是否还可以继续借贷。
我们跟进getHypotheticalAccountLiquidityInternal函数,可以发现对于抵押物的价值获取来自886行的oracle.getUnderlyingPrice。
我们跟进预言机的getUnderlyingPrice函数,可以容易的发现其将通过代币150行的getYvTokenPrice函数进行价格获取。
继续跟进getYvTokenPrice函数,由于yvTokenInfo.version为V2,因此将通过yVault的pricePerShare函数进行价格获取。
跟进pricePerShare可以发现其直接返回了_shareValue作为价格,而_shareValue是通过_totalAssets除合约的总share数量(self.totalSupply)来计算单个share的价格的。因此攻击者只需要操控_totalAssets将其拉高就可以提高单个share的价格从而使得攻击者的抵押物价值变高以借出更多的其他代币。
我们可以查看下_totalAssets是如何获取的,从772行我们可以很清晰的看到,_totalAssets是直接取的当前合约的yDAI/yUSDC/yUSDT/yTUSD代币数量,以及抵押在策略池中的资产数额相加获得的。因此攻击者通过直接往yUSD合约中转入yDAI/yUSDC/yUSDT/yTUSD代币就可以拉高share价格从而完成获利。
通过Ethtx.info可以清晰的看到pricePerShare前后变化:
最后攻击者在借空其他池子后归还了闪电贷获利离场。
总结
本次攻击是典型的利用闪电贷进行价格操控,由于Cream的借贷池在获取yUSD池子share价格时直接使用了其pricePerShare接口,而此接口是通过合约的抵押物余额与策略池抵押资产数额相加除总share数来计算单个share的价格的。因此用户直接往yUSD转入抵押物就可以很容易的拉高单个share价格,最终使得Cream借贷池中抵押物可以借出更多的资金。
附:前两次CreamFinance被黑分析回顾
慢雾:CreamFinance被黑简要分析
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。