最近太忙了,没时间打理这个公众号,但是这个公众号本身的目的是为了传播和分享知识,本着不要辜负读者的目的,写一下 yearn 的被黑分享。除了市面上的分析外,我更加鼓励大家亲自去分析看看,挺多细节点,蛮有趣的。以下是简析:
前置条件:yUSDT 依赖 Compound,,Aave, bzx(USDC),dYdx 做底层收益
-
闪电贷 USDC, 并且到 Curve 兑换 USDT
-
帮Aave V1 的用户还钱,为了让 yUSDT 的 apr 为0(关键操作,建议反复思考)
-
充值一点钱到 yUSDT 中拿点份额
-
再充点USDT 到 bzx 里头拿点份额,把份额转给 yUSDT (细节点)
-
这个时候从yUSD提现,因为 yUSD是 Yield Farming,因为第三步的操作让合约误以为有收益,此时提现就会从除了 bZx 以外的协议提款,直接提空
-
调用 yUSDT 的 rebalance, 因为 第4步里头还有点钱在bZx,rebalance 会把这里的钱也取出来(取出来的是USDC) 但是呢这个时候通过 yUSDT 的balance()函数再算 balance的时候,就已经没有任何钱了,因为 balance()算的是所有底层协议的凭证的钱和yUSDT自己的钱,没有算留在 yUSDT 的USDC 的钱
-
好了,现在合约里的价值为0,攻击者转单位 1的 yUSDT到 yUSDT 合约里,然后调用 depos it 函数冲 10000000000 USDT, 得到了 10000000000 yUSDT,然后去 Curve y池兑换成 yDAI,然后从yDAI里提现走人
精彩
样本: https://etherscan.io/tx/0xd55e43c1602b28d4fd4667ee445d570c8f298f5401cf04e62ec329759ecda95d
原文始发于微信公众号(蛋蛋的区块链笔记):AC 的项目少玩? yUSDT 被黑 yDAI 却躺枪?