据慢雾区消息,2021 年 2 月 13 日,以太坊 DeFi Alpha Finance 遭受攻击,慢雾安全团队第一时间跟进分析,并以简讯的形式分享给大家,供大家研究。
1. 攻击者用一部分的 WETH 在 Uniswap WETH-UNI 池子上添加流动性,再把一部分的 WETH 兑换成 sUSD 并在 Cream 中添加流动性获得 cySUSD 凭证。
2. 攻击者通过 Alpha Homora V2 从 IronBank 借出 sUSD,并将 LP 抵押到 WERC20 中为后面开杠杆做准备。
3. 攻击者再通过 Alpha Homora V2 将上一步借出的sUSD 归还给 IronBank。
4. 上面几步似乎只是试探。
5. 随后攻击者开始利用 Alpha Homora V2 的杠杆借贷从 IronBank 中循环借出 sUSD,每次借出数量都是上一次的一倍,最后将借出的 sUSD 再转到 Cream 中添加流动性获得 cySUSD 凭证。
6. 之后攻击者不满足于这种低效的杠杆循环借贷叠 cySUSD 的方式,开始使用闪电贷加快速度。
7. 攻击者开始从 AAVE 中闪电贷借出 180 万 USDC,并通过 Curve 将 USDC 兑换成 sUSD,这时候攻击者就拿到了大量的 sUSD 了。
8. 随后攻击者先用 sUSD 到 Cream 中添加流动性,并获得 cySUSD 凭证,再开始继续使用 Alpha Homora V2 的杠杆借贷从 IronBank 中循环翻倍的借出 sUSD,最后利用借出的 sUSD 去归还闪电贷。(偿还的闪电贷中有包含先前几步的一部分 sUSD 作为利息,因为最后一步借出的不足以还贷,但都是拿从 Alpha 借的去还的)
9. 重复上一步,闪电贷借出 1000 万 USDC,换成 sUSD,先添加在 Cream 中,添加 9,668,335 的流动性拿到 cySUSD,再继续杠杆借贷,最后翻倍到 10,088,930 应该基本把池子借空了。然后开始重复添加流动性,获取 cySUSD。最后再去归还闪电贷。
10. 再闪电贷借出 1000万,再重复添加流动性与借贷,获取 cySUSD 并归还闪电贷。
11. 由于经过以上步骤攻击者已获得大量 cySUSD,因此攻击者开始直接在 Cream 借出 WETH、USDC、USDT、DAI、sUSD。
总结:攻击者使用闪电贷到 Alpha Finance 中进行杠杆借贷,并使用 Alpha Finance 本身的 Cream IronBank 额度来归还闪电贷,在这个过程中攻击者通过在 Cream 添加流动性获得了大量的 cySUSD,使攻击者得以用这些 cySUSD 在 Cream Finance 中进行进一步的借贷。由于 Alpha Finance 的问题,导致了两个协议同时遭受了损失。