据慢雾区情报,2023 年 4 月 13 日,去中心化收益聚合平台 Yearn Finance 遭到攻击,攻击者获利超千万美金。慢雾安全团队以简讯的形式分享如下:
相关信息
Yearn 的 yUSDT 合约设计存在 aUSDT、dydx 头寸、iUSDC 与 cUSDT 储备,用户在 deposit/withdraw 时会根据上述储备余额计算用户所能获得的份额/所需存款的数额。
攻击核心点
此次攻击的原因在于攻击者利用 yUSDT 合约被错误设置了 fulcrum 地址,从而操控 yUSDT 合约中的稳定币储备余额,通过在 yUSDT 中存入 USDT,以获得大量的非预期的 yUSDT 代币进行获利。
Yearn开发者:Yearn v2保险库似乎未受影响,正在对攻击事件进行调查:4月13日消息,针对收益聚合器 Yearn 攻击事件,Yearn 开发者 storming0x 表示,目前已知的问题与 2020 年推出的 iearn 遗留协议和流动性池无关,Yearn v2 保险库似乎没有受到影响,Yearn 贡献者正在进行调查。
此前消息,Aave 和 Yearn Finance 在今日攻击中损失金额已超 1100 万美元。[2023/4/13 14:01:26]
具体细节分析
1、攻击者首先通过闪电贷借出大量的 DAI、USDC 和 USDT,接着通过 Curve 的 ySwap 将 DAI 和 USDC 换成 USDT,以消耗 yUSDT 合约中的 aUSDT 储备。
Ruler Protocol:赔偿金已送至Yearn Deployer,将由yearn.finance代为支付:9月8日消息,去中心化借贷平台Ruler Protocol和DeFi保险协议Cover Protocol同时发推表示,由于Ruler Protocol和Cover Protocol没有开发人员来支付赔偿金,所以其资金已送至Yearn Deployer,后续将由yearn.finance代为支付用户的赔偿金,在赔偿结束后,其用户界面将延续到10月并永久关闭。[2021/9/8 23:09:59]
2、接着攻击者为 Aave Pool v1 上存在负债的用户还款,目的是增加 Aave Pool v1 中的 USDT 数额,以便 yUSDT 中的 aUSDT 能够顺利被赎回。
yearn.finance的yETH Vault2天时间吸收37.8万枚以太坊:加密资产投资家Andrew Kang发推表示:最新推出的yearn.finance的yETH Vault在推出后2天时间吸收37.8万枚以太坊。它还可以在出现25%的暴跌时成功管控风险。[2020/9/4]
3、紧跟着调用 yUSDT 合约的 deposit 函数进行 USDT 存款,得到相对应的 yUSDT 代币。为后续通过 withdraw 清空 yUSDT 中 aUSDT 储备做准备。
4、为了确保 withdraw 时能够清空 yUSDT 中 aUSDT 储备,攻击者调用 iUSDC 合约的 mint 函数铸造 iUSDC 后,将 iUSDC 直接转给 yUSDT 合约,为 yUSDT 合约增加储备深度。
yearn.finance:治理每周可调整curve.fi池的奖励,优先级和权重经讨论决定:yearn.finance官方发推称,dao.curve.fi/gaugeweight允许治理每周调整curve.fi池的奖励,可讨论哪些池应该优先和给予的具体权重。一旦决定,这些调整将保持默认状态,直到另一项提案做出新的调整。[2020/8/27]
5、随后攻击者调用 yUSDT 合约的 withdraw 函数进行取款,由于此时 provider 指定为 AAVE,因此 yUSDT 会通过 Aave Pool v1 赎回 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 合约中转入 1 wei 的 USDT。
11、最后,攻击者调用 yUSDT 的存款函数,存入 10,000 枚 USDT,获得 1,252,660,242,850,000 枚 yUSDT,并通过 curve 将 yUSDT 换成大量的 yDAI、yUSDC、yTUSD。
总结
本次攻击事件是由于 Yearn Finance 的 yUSDT 合约错误的配置导致的。慢雾安全团队建议在对协议进行配置时,应仔细检查所有参数是否符合预期并进行充分的测试以确保协议的安全。
慢雾科技
个人专栏
阅读更多
金色财经 善欧巴
Chainlink预言机
金色早8点
白话区块链
Odaily星球日报
Arcane Labs
深潮TechFlow
欧科云链
BTCStudy
MarsBit
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。