CRE:Cream Finance 攻击事件分析-ODAILY

前言

北京时间10月27日晚,以太坊DeFi协议CreamFinance再次遭到攻击,损失高达1.3亿美元。知道创宇区块链安全实验室第一时间跟踪本次事件并分析。

分析

基础信息

攻击者:0x24354D31bC9D90F62FE5f2454709C32049cf866b

攻击tx:0x0fe2542079644e107cbf13690eb9c2c65963ccb79089ff96bfaf8dced2331c92

家族办公室Accretion Capital正在为机构投资者推出NFT基金:金色财经报道,迈阿密家族办公室Accretion Capital正在为机构投资者推出 NFT 基金“Accretion NFT Fund”,计划在第二季度上线。该基金将进行短期投资,例如新的 NFT 基础设施提供商和相关的代币经济学项目,也准备参与长期战略,包括购买和持有蓝筹 NFT,如 Bored Ape Yacht Club 收藏品和 CryptoPunks。

新基金是独立于家族办公室的实体,Accretion Capital还自行投资区块链公司,包括入股有前途的 Web3 初创公司。(Blockworks)[2022/2/25 10:15:40]

攻击合约1:0x961D2B694D9097f35cfFfa363eF98823928a330d

Cream社区成员提议将COVER列为抵押资产:12月22日,Cream Finance提出一项提案,拟将COVER列为抵押资产。在提案中称将COVER列为抵押资产将有3个好处。

1.进一步激励COVER代币持有者为Cream提供流动性;

2.为COVER代币持有者提供将代币用作抵押的机会,为Cover Protocol提供流动性;

3.COVER代币持有者将为CREAM增加额外的锁仓量,并付出额外的费用,因为目前还没有其它借贷平台支持COVER代币。

目前提案投票支持率为100%,投票至12月25日结束。[2020/12/22 16:09:44]

攻击合约2:0xf701426b8126BC60530574CEcDCb365D47973284

SBF讨论借贷协议:Compound最安全 Cream最为大胆:FTX创始人、Serum顾问Sam Bankman-Fried(SBF)刚刚在推特上分享关于借贷的一些思考,“有很多借贷协议,比如compound、Aave、Cream Finance。我不是在说谁做了什么,我也不是在说他们各自的代币,每个代币都有一定的价格/市值/等等,讨论仅仅限于协议。或许可能是错的,你可以自己对它们排序,我从安全到最大胆的顺序是:Compound——Aave——Cream。通常情况下,引入更多代币,移动速度更快等时,会增加这些协议的效用。添加一些东西会极大地增加效用,但不会增加太多风险,但是增加其他东西会适得其反。我的结论是:多样性很好。有些情况下我们需要容易理解、不可改变、“安全”的代币清单;另一些则要在有需求的地方做出改变。例如,你是否可以借出UNI并以此为抵押进行借贷?一方面,它非常不稳定,增加了风险。另一方面,市场需求巨大,能够接受它可以增加很多价值。需要做出一个权衡。[2020/9/20]

流程

1、攻击者调用攻击合约10x961D的0x67c354b5函数启动整个攻击流程,首先通过MakerDAO闪电贷借来500MDAI,然后质押兑换成yDAI,将yDAI在CurveySwap中添加流动性获得ySwapToken凭证,再用于质押兑换成yUSD,最后在Cream中存入yUSD获得凭证crYUSD;

2、随后攻击合约10x961D调用攻击合约20xf701的flashLoanAAVE()函数,先通过AAVE闪电贷借来524102WETH,其中6000WETH转给攻击合约10x961D,剩下WETH存入Cream获得crETH。随后三次从Cream借出446758198yUSD,前两次借出后再次存入Cream获得crYUSD并转给攻击合约10x961D,第三次直接将借出的yUSD转给攻击合约10x961D,用于后面赎回;

3、flashLoanAAVE()函数紧接着调用攻击合约10x961D的0x0ed1ecb1函数,通过UniswapV3和Curve完成WETH=>USDC=>DUSD的兑换,通过YVaultPeak合约用383317DUSD赎回了3022172yUSD,加上第二步攻击合约20xf701转来的446758198yUSD,在ySwap中赎回约450228633ySwapToken凭证。并将其全部转给yUSD合约,导致Cream协议对抵押资产yUSD的价值计算剧增,最后借出大量ETH、CRETH2、xSUSHI等共15种资产,其中ETH转给攻击合约20xf701用于归还闪电贷;

4、最后赎回各资产成DAI,归还闪电贷。

细节

此次攻击的核心代码原因在于PriceOracleProxy喂价合约对抵押资产的价值计算出现问题,价格因子pricePerShare通过简单的资产数额占比来动态定价,而这种方式容易受到闪电贷的大额资产操控。

此次攻击的成因是多维度的,同样也反映出其他很多问题,比如Cream协议允许yUSD的重复循环地存入和借出、ySwap的凭证可直接转给yUSD等等。

总结

CreamFinance遭遇的闪电贷攻击的核心原因在于对抵押物价值的计算易被操控,使得攻击者通过闪电贷的巨额资金抬高了抵押物的价格,而超额借出了Cream金库的资产。

近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:15ms0-0:856ms