8月4日,去中心化做市商 Popsicle Finance 和收益聚合平台 Wault Finance 接连遭到攻击,分别损失 2,070 万美元和 88.8 万美元。
PeckShield「派盾」安全人员第一时间定位分析,发现在 Popsicle Finance 的安全事件中,攻击者创建了 3 个合约,即合约 A、B、C,并在 8 个流动池中重复调用 A.deposit()、A.transfer(B)、B.collectFees()、B.transfer(C)、C.collectFees() 进行攻击。
PeckShield「派盾」简述攻击过程:
第一步,攻击者从 Aave 中通过闪电贷借出 3,000 万 USDT、1,300 WETH、1,400 BTC, 3,000 万 USDC、3,000 万 DAI 和 200,000 UNI;
第二步,调用合约 A 的 deposit() 函数,在 USDT-WETH PLP 流动池中添加 3,000 万 USDT 和 5,460 WETH,同时获得 10.52 PLP tokens;
第三步,A 将 10.52 PLP tokens 转给 B;
第四步,调用合约 B 的 collectFees() 函数,旨在更新 tokenRewards;
第五步,B 将 10.52 PLP tokens 转给 C;
第六步,调用合约 C 的 collectFees() 函数,旨在更新 tokenRewards;
第七步,C 将 10.52 PLP tokens 转给 A,便于 A 移除流动性;
第八步,调用合约 A 的 withdraw() 函数,移除流动性,A 获得 3,000 万 USDT 和 5,460 WETH;
第九步,调用合约 B 的 collectFees() 函数,获得奖励 215 万 USDT 和 392 WETH;
第十步,调用合约 C 的 collectFees() 函数,获得奖励 215 万 USDT 和 402 WETH;
最后,攻击者重复操作二至十的步骤,归还闪电贷完成攻击。
Peck Shield
PeckShield「派盾」安全人员第一时间定位分析,发现 Wault Finance 的攻击手段和此前损失 1,000 多万美元的 yDAI 相似,即使在 USDT-WEX 交易对的价格被操纵的情况下,stake() 函数仍可通过相关的 USDT-WEX 交易对强制将 USDT 兑换为 WEX。
PeckShield「派盾」简述攻击过程:
第一步,攻击者通过闪电贷从 WUSD-USDT 池中借出 1,683 万 WUSD,
第二步,调用 WUSDMaster 赎回 1,503 万 USDT (90%)和 1.065 亿 WEX(10%),此时 WEX 的价格为 0.015 USDT;
第三步,攻击者从 PancakeSwap 通过闪电贷借出 4,000 万 USDT,并将其中 2,300 万 USDT 兑换为 WEX,此时 WEX 的价格上升至 0.044 USDT,攻击者获得 5.179 亿 WEX;
第四步,攻击者重复调用 stake() 函数,质押 68 次 25 万 USDT(总计 1,700 万 USDT),每次质押 WUSDMaster 都会将其中 10% 的 USDT 强制兑换为 WEX,此时 WEX 的价格为 0.14 USDT;
第五步,攻击者归还 1,688 万 WUSD 闪电贷;
第六步,攻击者用 6.24 亿 WEX 兑换为 USDT, 获得 2,593 万 USDT,随后归还 4,012 万 USDT 的闪电贷;此时攻击者获利 11 万 WUSD 和 84 万 USDT,并将这些代币在 PancakeSwap 上兑换为 370 ETH,并通过 AnySwap 跨链到以太坊上。
受到安全事件的影响,WEX 短时腰斩,从 0.012 美元跌至 0.006 美元。