# Cream 第三次被攻击策略

### 攻击合约地址1

&#x20;[0x961d2b694d9097f35cfffa363ef98823928a330d](https://etherscan.io/address/0x961d2b694d9097f35cfffa363ef98823928a330d)

&#x20;

### 攻击合约地址2

0xf701426b8126BC60530574CEcDCb365D47973284

### 攻击者账号

[0x24354d31bc9d90f62fe5f2454709c32049cf866b](https://etherscan.io/address/0x24354d31bc9d90f62fe5f2454709c32049cf866b)

&#x20;

### 攻击交易<https://etherscan.io/tx/0x0fe2542079644e107cbf13690eb9c2c65963ccb79089ff96bfaf8dced2331c92>​​​

&#x20;

&#x20;

### CREAME的yUSD喂价方式

yUSD的价格 = Curve Y Pool yVaul \* yUSD的pricepershare

pricepershare \~= yVaul 的yUSD的balance/ total yUSD

\\

## &#x20;攻击流程

&#x20;

1\.     攻击合约1通过MakerDAO闪电贷借500000000个DAI

2\.     把500000000个DAI存入YFI池子里，获得451065927个yDAI

3\.     让后把451065927个yDAI存入curve 的Y池里(curve针对YFI的稳定币兑换池，包含yDAI+yUSDC+yUSDC+yTUSD)

4\.     然后得到447,202,022 个Curve.fi y池代币(4 pool token)

5\.     4 pool token都存到Curve Y Pool yVault (yUSD)池子里,得到446,756,774个yUSD

6\.     yUSD存款到cream里，调用cream的ctoken合约存款（得到22,337,774个cryUSD）

7\.     攻击2合约通过aave闪电贷524,102个ETH并转6000个ETH给攻击1合约

8\.     攻击2合约再把剩下的518102个ETH存款到cream，获得一定量存款crETH

9\.     攻击2合约通过eth存款，借出446,758,198个yUSD

10\.  再把446,758,198个yUSD存起来,得到22,337,845,550个cryUSD（cream的yUSD存款凭证）

11\.  攻击2合约把22,337,845,550 cryUSD转给攻击1地址

12\.  攻击2地址再借出446,758,198个yUSD，再存起来,得到22,337,845,550个cryUSD

13\.  攻击2合约把22,337,845,550 cryUSD转给攻击1地址

14\.  攻击2地址再借出446,758,198个yUSD

15\.  攻击2地址把446,758,198个yUSD 转给攻击1地址

16\.  这时攻击合约1有15亿美金的cryUSD，和价值5亿美金的Yusd

17\.  攻击合约1通过uniswap把ETH换成USDC，在通过curve(3crv)的池子把USDC换成DUSD，接着把DUSD都存到Curve Y Pool yVault (yUSD)池子里，得到Yusd

18\.  然后通过yUSD合约调用withdaw，得到4pool token

19\.  把4pool token 交易到 yUSD合约，根据cream 的 yUSD喂价逻辑，yUSD的价格成倍上涨

20\.  由于yUSD价格翻倍，本身价值15亿美元的抵押品，变成了价值30亿美金

21\.  攻击合约1通过30亿美金的cryUSD（存款凭证）借出523208个eth（将近20亿u），并结合之前剩余的给攻击合约2还AAVE的ETH闪电贷费用

22\.  剩余的抵押价值借出cream平台的各种代币（该部分收益全归黑客所有）

23\.  最后还掉攻击合约1从MakerDAO借的5亿的DAI

原因总结：

核心在于cream给yUSD的喂价逻辑问题，yUSD价格有被操控的风险

解决方案:

1.采用chainlink预言机喂价

2.增加借贷的风控限制
