DeFi项目Yearn Finance被盗超1000万美元,攻击过程梳理
2023 年 4 月 13 日,据 Beosin-Eagle Eye 态势感知平台信息,Yearn Finance 的 yusdt 合约遭到网络黑客闪电贷攻击,网络黑客盈利超 1000 万美金。
有关本次事件,Beosin 安全团队白天已经将浅析以快报的方式推荐给大家,如今我们然后将文章共享如下所示:

事情有关信息
攻击买卖
0xd55e43c1602b28d4fd4667ee445d570c8f298f5401cf04e62ec329759ecda95d
0x8db0ef33024c47200d47d8e97b0fcfc4b51de1820dfb4e911f0e3fb0a4053138
0xee6ac7e16ec8cb0a70e6bae058597b11ec2c764601b4cb024dec28d766fe88b2
攻击者详细地址
0x5bac20beef31d0eccb369a33514831ed8e9cdfe0
0x16Af29b7eFbf019ef30aae9023A5140c012374A5
攻击合约
0x8102ae88c617deb2a5471cac90418da4ccd0579e
攻击步骤
下面以
0xd55e43c1602b28d4fd4667ee445d570c8f298f5401cf04e62ec329759ecda95d 为例子展开分析。
1. 攻击者先通过闪电贷借出去了 500 万 Maker: Dai Stablecoin、500 万 USD 及其 200 万 Tether: USDT Stablecoin 做为攻击本钱。

2. 攻击者启用 aave 池子合约的 repay 函数公式还款别人的借款,这一步就是为了将 aave 池子质押盈利减少,从而减少 yearn:yUSDT Token 合约中 aave 池子的优先(yearn: yUSDT Token 合约会依据收益情况分辨将资金分配哪一个池子)。

3. 然后攻击者启用 yearn: yUSDT Token 合约的 deposit 函数公式质押贷款了 90 万 Tether: USDT Stablecoin,该函数公式会依据质押贷款量是入参铸有关数量 yUSDT,计算方法与池子中的各种货币账户余额相关,如下图所示,这时为攻击者铸了 82 万 yUSDT。


4. 这时,合约含有 90 万 Tether: USDT Stablecoin 与 13 万 Aave: aUSDT Token V1

5. 下面攻击者应用 15 万 USD 兑换了 15 万 bZx USDC iToken,并把它发给了 yearn: yUSDT Token 合约,这时,合约含有 118 万资产,攻击者有着 90/103 的市场份额,其实就是能获取 103 万资金。

6. 接着,攻击者启用 yearn: yUSDT Token 合约的 withdraw 函数公式获取质押贷款资产,这时合约中只有攻击者以前质押的 90 万 Tether: USDT Stablecoin、初始的 13 万 Aave: aUSDT Token V1 及其攻击者转到的 15 万 bZx USDC iToken,而如果一个池子中货币不足的话,会按序获取后面池子的货币,这时攻击者将 90 万 Tether: USDT Stablecoin 及其 13 万 Aave: aUSDT Token V1 所有分离出来,通过本次操作,合约中只有 15 万 bZx USDC iToken。

7. 接着,攻击者启用 yearn: yUSDT Token 合约的 rebalance 函数公式,该函数公式会把现阶段池子的货币分离出来,并质押贷款到另一个收益更高的池子中,因为第 2 步实际操作,合约会把 USDT 和 USDC 分离出来,导入到收益更高的池子中,但目前合约只有 bZx USDC iToken,也只能是提取出来 USDC,分离出来之后将复投到另一个 USDT 池子,这时复投将绕过。

8. 攻击者向池子中转到 1 部门的 Tether: USDT Stablecoin,并重新启用 yearn: yUSDT Token 合约的 deposit 函数公式质押贷款了 1 万 Tether: USDT Stablecoin,因为第 7 步的实际操作,合约早已把所有池子里的资产所有取出了,而且没法导入到新池子中,造成 pool 这一自变量推算出来便是攻击者向在其中打进的 1,那么作为除数的 pool,将算出一个巨大的值,向攻击者铸了 1.25*10^15 枚 yUSDT。

9. 最终,攻击者运用 yUSDT 将其他稳定币所有换取出去并偿还闪电贷。
漏洞分析
此次攻击主要采用了 yUSDT Token 合约配置错误,在开展 rebalance 再选择池子时,仅采用了 USDT(token 为 USDT)做为加上总数,而 USDC 没法加上池子,从而导致攻击者应用 USDC 将这个合约全部 USDT「消耗」后,池子账户余额变成了 0,进而铸了很多的货币。


资产跟踪
截至发微博时,Beosin KYT 合规管理数据分析平台发觉被盗资产 1150 万美金部分已经转移至 Tornado cash,其他还保存在攻击者详细地址。
汇总
针对本次事情,Beosin 安全性团队建议:复位配备的情况下进行认真检查。与此同时项目上线前提议选择专业网络安全审计企业进行全方位网络安全审计,避开安全隐患。
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。

路安



