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借贷池中抵押做准备。
澳大利亚ASIC披露侦破Telegram群组“pump and dump”计划的细节:12月29日消息,澳大利亚证券和投资委员会(ASIC)披露了10月如何关闭加密“pump and dump”Telegram群组的细节。新文件显示,自10月初以来,ASIC一直在征求金融学者和加密货币研究员Talis Putnins的意见。
Putnins向ASIC调查人员展示的38张幻灯片显示,“pump and dump”计划是周期性的,在2018年达到峰值,2021年再次达到峰值。报告指出,它们往往与整体市场情绪和价格相关。据介绍,从2018年到2021年10月发表报告期间,有许多因素发生了变化。在2018年的6个月里,Putnins记录了超过355起加密市场操纵案件。他提到了这些计划具有“明显的拉盘意图”,而且这些计划“完全公开,让所有人都能看到”。
该报告详细介绍了Telegram群组“Crypto Binance Trading | Signals & Pumps”9月19日为Frax Share(FXS)拉盘,在不到一分钟的时间内就获得了高达90%涨幅,成交量达6500万美元。报告称,缺乏法律风险、论坛匿名和加密是这些团体存在的潜在原因,并补充说,(人们)认为加密是不受监管的,因此拉盘是合法的。(Cointelegraph)[2021/12/29 8:10:57]
之后攻击者开始向Cream的crYUSD借贷池中抵押其获得yUSD凭证,为了扩大其抵押规模,攻击者从AAVE闪电贷借出约52.4万个WETH,并将其抵押到Cream的crETH池子中。
Bancor V3细节披露:将推出Omnipool、InfinityPools、无常损失保护等新功能:11月30日消息,去中心化交易协议Bancor在推特上公布了BancorV3版本的相关细节,主要变化包括:-Omnipool:在Bancorv2.1中,每个交易对都有一个单独的BNT池(ETH/BNT、DAI/BNT等)。在Bancor V3中,有一个单一的池来质押BNT,并从整个网络中赚取收益,即Omnipool。此举旨在减少gas成本,并使Bancor在同样水平的流动性下吸引更多的交易费用,使该协议的资本效率更高;此外官方还表示,Bancor V3将分三阶段推出,分别是Dawn、Sunrise、Daylight。Dawn阶段的代码将是开源的,并提供公开的漏洞奖励,最终需要BancorDAO的投票才能激活。[2021/11/30 12:40:55]
攻击者通过在crETH池子中抵押大量ETH,来使得其有足够的借贷能力将crYUSD池子中的yUSD全部借出并重复抵押到crYUSD池子中,随后通过在crYUSD池子中进行循环贷以杠杆的形式扩大了本身在crYUSD池子中yUSD的抵押规模,为后续操控价格获利做准备。
Cashaa创始人兼首席执行官披露被盗事件更多细节:一涉事员工已被暂时停职:此前消息,7月12日,加密货币交易所Cashaa被盗,失窃超336枚BTC。
Cashaa创始人兼首席执行官Kumar Gaurav最近向媒体透露了导致这起事件的更多细节:“起先,一名员工于2020年7月8日报告,公司提供的办公电脑出现了机器故障。因此,该名员工请求公司是否可以在自己的个人电脑上进行工作操作,在Blockchain.com、火币等不同平台上建立多种可供选择的在线钱包。考虑到客户体验问题,我们破例允许了他这么做。”
Kumar Gaurav继续表示,Cashaa推测是该员工的个人电脑上被装载了恶意病,这导致了被盗事件的发生。事故发生后,涉事设备已被公司的调查小组扣留,该员工也将被停职,直至调查结束。(Cointelegraph)[2020/7/20]
随后为了获得yDAI/yUSDC/yUSDT/yTUSD4Pool凭证以操控价格,攻击者用约1,873个ETH从UniswapV3中兑换出约745万个USDC,并通过Curve3Pool将其兑换成DUSD代币约338万个。
Lendf.Me黑客攻击事件细节还原:4月19日,Lendf.Me遭到黑客攻击,价值约2500万美金的加密资产被盗;4月21日,黑客已将所盗资产全部返还。本次事件一些未曾披露的细节如下:
1. 19日12点起,dForce向各大资产发行方和去中心化金融协议报告了攻击事件的原因和资产当下情况,各方要求出具来自的强制执行信以便下一步行动。
2. 19日22点53分,dForce正式向新加坡提出请求,希望配合出具强制执行信。
3. 20日上午起,新加坡陆续给其他团队提供了强制执行信,要求团队向直接提供跟案件相关的必要信息或进行相关账号的监控和冻结。与各第三方团队的沟通过程从未经过dForce团队,dForce团队也从未获得1inch提供给的IP信息。
4. 20日,基于黑客留下的痕迹,安全团队成功确定了准确的黑客画像,并开始与国内外各方资源进行交叉对比,获得突破性线索,离黑客越来越近。
5. 21日13点33分,黑客在重重压力下,与我方主动沟通,并开始归还部分资产。继续沟通后,所有资产被成功找回。
6. 截至21日17点,未找到黑客真人信息,由于资产已被追回,我们已向提交撤案请求。[2020/4/22]
接下来攻击者通过获得的DUSD代币从YVaultPeak中赎回yDAI/yUSDC/yUSDT/yTUSD4Pool凭证,并利用此凭证从yUSD池子中取回yDAI/yUSDC/yUSDT/yTUSD代币。
高盛和Square利好消息的关键细节可能会冷却加密货币多头的热情:随着加密货币多头为关于高盛和Square的消息欢呼,比特币一度超过9600美元关口,但一些关键细节可能会冷却市场热情。此前纽约时报报道称,高盛表示,比特币不是局,将推出比特币合约交易。但彭博援引知情人士称,高盛并不是买卖真正的比特币,该公司计划通过提供数量有限的衍生品开始小规模的交易。此外,市场也因Square公布的与加密货币有关的3400万美元收入欢呼,但细节显示,去除成本,该公司只从加密货币出售中赚了约20万美元。[2018/5/4]
随后攻击者开始进行此次攻击的关键操作,其将约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被黑简要分析
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。