慢雾认为,本次攻击的核心在于利用Cream借贷池对抵押物价格获取的缺陷,恶意拉高抵押物价格,使攻击者可以从Cream借贷池借出更多代币。
撰文:慢雾安全团队
据慢雾区消息,2021年10月27日,CreamFinance再次遭受攻击,损失约1.3亿美金,慢雾安全团队第一时间介入分析,并将简要分析分享如下。
攻击核心
本次攻击的核心在于利用Cream借贷池对抵押物价格获取的缺陷,恶意操控拉高了其抵押物的价格,使得攻击者可以从Cream借贷池借出更多的代币。
攻击细节
首先攻击者从DssFlash中闪电贷借出5亿个DAI,随后将借出的5亿个DAI抵押至yearn的yDAI池中,以获得约4.5亿个yDAI凭证。
慢雾:区块链因黑客攻击损失总金额已超300亿美元:金色财经报道,据慢雾统计数据显示,自2012年1月以来,区块链黑客造成的损失总金额约为30,011,604,576.24美元;黑客事件总数达到1101起。
其中Exchange、ETH Ecosystem、Bridge是在黑客攻击中损失最大的类别,损失金额分别为10,953,323,803.39美元、3,123,297,416.28美元,2,005,030,543.30美元。另外合约漏洞、Rug Pull、闪电贷攻击是最常见的攻击方式,分别发生黑客事件137起,106起,87起。[2023/7/7 22:24:09]
随后攻击者将获得的yDAI代币在Curve的yDAI/yUSDC/yUSDT/yTUSD池子中进行单币流动性添加,以获得相应的流动性凭证。紧接着攻击者就将获得的凭证抵押到yvWBTC池子中以获得yUSD凭证,为后续在CreamcrYUSD借贷池中抵押做准备。
慢雾:PREMINT攻击者共窃取约300枚NFT,总计获利约280枚ETH:7月18日消息,慢雾监测数据显示,攻击PREMINT的两个黑客地址一共窃取了大约300枚NFT,卖出后总计获利约280枚ETH。此前报道,黑客在PREMINT网站植入恶意JS文件实施钓鱼攻击,从而盗取用户的NFT等资产。[2022/7/18 2:19:58]
之后攻击者开始向Cream的crYUSD借贷池中抵押其获得yUSD凭证,为了扩大其抵押规模,攻击者从AAVE闪电贷借出约52.4万个WETH,并将其抵押到Cream的crETH池子中。
攻击者通过在crETH池子中抵押大量ETH,来使得其有足够的借贷能力将crYUSD池子中的yUSD全部借出并重复抵押到crYUSD池子中,随后通过在crYUSD池子中进行循环贷以杠杆的形式扩大了本身在crYUSD池子中yUSD的抵押规模,为后续操控价格获利做准备。
动态 | 慢雾:10 月发生多起针对交易所的提币地址劫持替换攻击:据慢雾区块链威胁情报(BTI)系统监测及慢雾 AML 数据显示,过去的 10 月里发生了多起针对数字货币交易所的提币地址劫持替换攻击,手法包括但不限于:第三方 JS 恶意代码植入、第三方 NPM 模块污染、Docker 容器污染。慢雾安全团队建议数字货币交易所加强风控措施,例如:1. 密切注意第三方 JS 链接风险;2. 提币地址应为白名单地址,添加时设置双因素校验,用户提币时从白名单地址中选择,后台严格做好校验。此外,也要多加注意内部后台的权限控制,防止内部作案。[2019/11/1]
随后为了获得yDAI/yUSDC/yUSDT/yTUSD4Pool凭证以操控价格,攻击者用约1,873个ETH从UniswapV3中兑换出约745万个USDC,并通过Curve3Pool将其兑换成DUSD代币约338万个。
动态 | 慢雾:9 月共发生 12 起较典型的安全事件,供应链攻击趋势愈发明显:过去的 9 月区块链生态共发生 12 起较典型的安全事件,包括:EOSPlay 遭受新型随机数攻击、资金盘项目 FairWin 智能合约权限管理缺陷、EOS 黑名单账号 craigspys211 利用新晋 BP 黑名单缺陷转移走 19.999 万枚 EOS 等典型安全事件。此外,慢雾区块链威胁情报(BTI)系统监测发现,针对区块链生态的供应链攻击越来越多,形如:去年 11 月慢雾披露的污染 NPM 模块 EventStream、今年 7 月披露的对数字货币钱包 Agama 构建链的攻击、今年 8 月披露的针对数字货币行情/导航站的 URL 劫持攻击,还有 9 月慢雾披露的针对交易所使用的第三方统计、客服 js 的恶意代码植入,进行实施盗币攻击。[2019/10/1]
接下来攻击者通过获得的DUSD代币从YVaultPeak中赎回yDAI/yUSDC/yUSDT/yTUSD4Pool凭证,并利用此凭证从yUSD(yvWBTC)池子中取回yDAI/yUSDC/yUSDT/yTUSD代币。
声音 | 慢雾:Ghostscript存在多个漏洞:据慢雾区消息,Google Project Zero发布Ghostscript多个漏洞预警,远端攻击者可利用漏洞在目标系统执行任意代码及绕过安全限制。Ghostscript 9.26及更早版本都受影响。软件供应商已提供补丁程序。[2019/1/24]
随后攻击者开始进行此次攻击的关键操作,其将约843万个yDAI/yUSDC/yUSDT/yTUSD代币直接转回yUSD池子中,由于其不是通过正常抵押操作进行抵押的,所以这843万个yDAI/yUSDC/yUSDT/yTUSD代币并没有被单独记账,而是直接分散给了yDAI/yUSDC/yUSDT/yTUSD凭证的持有者,这相当于直接拉高了其share的价格。
在crToken中由于其抵押物价格被恶意拉高了,因此攻击者抵押的大量yUSD可以使其借出更多的资金,最后攻击者将Cream的其他15个池子全部借空。接下来我们跟进Cream的crToken借贷池中具体借贷逻辑。
从cToken合约中我们可以看到,主要借贷检查在borrowAllowed函数中:
我们跟进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被黑简要分析
王者开局偶遇猪队友——简析AlphaFinance&Cream被黑
来源链接:mp.weixin.qq.com
免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。
慢雾
慢雾
慢雾科技是一家专注区块链生态安全的国家高新技术企业,通过「威胁发现到威胁防御一体化因地制宜的安全解决方案」服务了全球许多头部或知名的项目。慢雾科技的安全解决方案包括:安全审计、威胁情报、漏洞赏金、防御部署、安全顾问等服务并配套有加密货币反、假充值漏洞扫描、漏洞监测、被黑档案库、智能合约防火墙、SafeStaking等SAAS型安全产品,已有商业客户上千家。慢雾慢雾科技慢雾AML慢雾安全Slowmist查看更多CreamFinance
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。