Yearn Finance 被黑简析_USD:SDT

据慢雾区情报,2023年4月13日,去中心化收益聚合平台YearnFinance遭到攻击,攻击者获利超千万美金。慢雾安全团队以简讯的形式分享如下:

相关信息

Yearn的yUSDT合约设计存在aUSDT、dydx头寸、iUSDC与cUSDT储备,用户在deposit/withdraw时会根据上述储备余额计算用户所能获得的份额/所需存款的数额。

攻击核心点

此次攻击的原因在于攻击者利用yUSDT合约被错误设置了fulcrum地址,从而操控yUSDT合约中的稳定币储备余额,通过在yUSDT中存入USDT,以获得大量的非预期的yUSDT代币进行获利。

Yearn孵化项目多维耕作协议Tesseract Finance启动:10月15日消息,多维耕作协议Tesseract Finance启动,该项目由Yearn Finance孵化,目前仅在Polygon启动,拥有USDC、DAI、WBTC和WETH资金库,上限均为100万美元,费用与Yearn五五分叉。[2021/10/15 20:32:13]

具体细节分析

1、攻击者首先通过闪电贷借出大量的DAI、USDC和USDT,接着通过Curve的ySwap将DAI和USDC换成USDT,以消耗yUSDT合约中的aUSDT储备。

Yearn已完成对于6666枚YFI的增发:2月6日,据Etherscan显示,Yearn已完成了对于6666枚YFI的铸造。此前,Yearn社区已通过对于用于激励开发者等目的而新铸造6666枚YFI的提案。[2021/2/6 19:03:33]

2、接着攻击者为AavePoolv1上存在负债的用户还款,目的是增加AavePoolv1中的USDT数额,以便yUSDT中的aUSDT能够顺利被赎回。

Pickle和Yearn达成合作,将分配跟踪Jar攻击所造成损失的新代币CORNICHON:YFI创始人Andre Cronje表示,Pickle和Yearn的开发人员已经设计出一种结构,以使两个项目可以共生地协同工作。下面最初的最低版本,并计划进一步集成。

1. Pickle Jars和Yearn’s v2 Vaults合并;

2. Pickle推出奖励Gauges,Pickle释放仍然存在,代币通过奖励Gauges分配;

3. Yearn Vault储户可以通过将Vault份额存储在Gauges中来获得额外的奖励;

4. Pickle Governance参与者将Pickle锁定在设定的到期日获得投票权,并获得DILL;

5. Yearn vault可以通过锁定Pickle得到DILL获得额外的奖励,最高可达2.5倍,他们持有的DILL越多,奖励就越大;

6. Gauge存款、取款、履约和协议费用归DILL持有人;

7. 一个跟踪最近Jar攻击所造成的损失新代币CORNICHON,按比例分配给攻击的受害者。[2020/11/24 21:59:32]

3、紧跟着调用yUSDT合约的deposit函数进行USDT存款,得到相对应的yUSDT代币。为后续通过withdraw清空yUSDT中aUSDT储备做准备。

yearn创始人AndreCronje宣布推出去中心化保险服务yinsure.finance:yearn创始人AndreCronje宣布推出去中心化的保险类服务原型yinsure.finance,将于接下来的几周里系统性地发布产品。该产品将包含三个核心部分:承保金库(InsurerVaults)、投保金库(InsuredVaults)和索赔治理(ClaimGovernance)。承保金库的保险服务是由流动性提供方(LP)提供的,但是可以获得相关的费用作为收入。首个上线的承保金库是USDC,首个提供的投保金库是yVault中的yUSD(包裹的yCRV)资产。[2020/8/17]

4、为了确保withdraw时能够清空yUSDT中aUSDT储备,攻击者调用iUSDC合约的mint函数铸造iUSDC后,将iUSDC直接转给yUSDT合约,为yUSDT合约增加储备深度。

5、随后攻击者调用yUSDT合约的withdraw函数进行取款,由于此时provider指定为AAVE,因此yUSDT会通过AavePoolv1赎回USDT给提款人。

6、由于攻击者在之前通过iUSDC增加了合约中的储备,因此在此次提现中可以将yUSDT里的aUSDT储备全部清空。

7、此时yUSDT合约中的aUSDT、dydx头寸与cUSDT储备都被操控为0了。最后,为清空iUSDC储备,攻击者调用yUSDT合约的rebalance函数,进行储备更新。

8、由于此时yUSDT中只剩余iUSDC,因此合约的新provider将会被指向iUSDC,导致Rebalance函数会先进行_withdrawAll操作,再通过余额获取的方式更新储备。

9、而在_withdrawAll操作中会燃烧掉iUSDC以获得USDC代币,但在更新储备时获取的是yUSDT合约中USDT的余额。因此fulcrum储备被错误的指向了iUSDC,导致此时yUSDT合约储备被操控为0。

10、攻击者为确保能通过存款获得大量的yUSDT,向yUSDT合约中转入1wei的USDT。

11、最后,攻击者调用yUSDT的存款函数,存入10,000枚USDT,获得1,252,660,242,850,000枚yUSDT,并通过curve将yUSDT换成大量的yDAI、yUSDC、yTUSD。

总结

本次攻击事件是由于YearnFinance的yUSDT合约错误的配置导致的。慢雾安全团队建议在对协议进行配置时,应仔细检查所有参数是否符合预期并进行充分的测试以确保协议的安全。

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

金宝趣谈

[0:15ms0-7:474ms