循环。攻击者一共进行了 8 次循环,分别攻击了 Popsicle Finance 项目下的多个机枪池,取出了大量流动性。向 AAVE 归还闪电贷,并将获利通过 Tornado Cash 洗钱。 本次攻击交易主要由数个 Deposit-Withdraw-CollectFees 循环构成,每一个循环的示意图如上图所示。根据我们的分析,逻辑如下: - 攻击者首先将闪电贷借来的流动性存入机枪池中,获得一定量的 PLP Token。
- 攻击者将 PLP Token 转给攻击合约 2。
- 攻击合约 2 调用机枪池的 collectFees(0, 0) 函数,设置合约 2 对应的 user.token0Rewards 和 user.token1Rewards 状态。
- 攻击合约 2 将 PLP Token 转给攻击合约 3。
- 和攻击合约 2 的操作类似,攻击合约 3 调用机枪池的 collectFees(0, 0) 函数,设置合约 2 对应的 user.token0Rewards 和 user.token1Rewards 状态。
- 攻击合约 2 将 PLP Token 转回攻击合约,后者调用机枪池的 withdraw 函数 Burn 掉 PLP Token,取回流动性。
- 攻击合约 2 和攻击合约 3 调用 collectFees 函数,用虚假的 tokenRewards 状态取回了存款奖励。
根据我们的以太坊交易 追踪可视化系统 给出的交易调用图如下,其中部分重要交易用红字进行标注: 利润分析本次攻击一共获利:2.56k WETH,96.2 WBTC,160k DAI,5.39m USDC,4.98m USDT,10.5k UNI,获利共计超过 20,000,000 美元。 在此次攻击之后攻击者通过首先通过 Uniswap 和 WETH 将攻击获得的其他 token 全部换成 ETH,然后通过多次使用 Tornado.Cash 将 ETH 洗白。
(责任编辑:admin) |