PancakeBunny 第二次被攻击策略

交易链接: https://polygonscan.com/tx/0x25e5d9ea359be7fc50358d18c2b6d429d27620fe665a99ba7ad0ea460e50ae55

攻击者地址:

https://polygonscan.com/address/0xa6021d8c36b2de6ceb4fe281b89d37d2be321431

攻击策略

攻击者按照以下步骤来利用 polyBUNNY 铸币机制:

1.首先从AAVE闪电贷贷了大量的USDT与USDC与WETH,并且拿USDT与USDC组流动池获得总量0.000023542352845069 SLP代币。

2.攻击者将 0.000000009416941138 SLP(约 19,203 美元)存入polygon.pancakebunny USDT-USDC Vault。接下来,攻击者直接将 0.000023532935903931 SLP(约 47,990,975 美元)存入 SushiSwap 上的 USDT-USDC MiniChefV2 合约,并将存款收益地址指定为 VaultSushiFlipToFlip 合约。这是攻击的关键。

3.攻击者拿100000WETH换成一定量的WMATIC,然后调用了 VaultSushiFlipToFlip 合约的 withdrawAll 函数,从Sushi MiniChefV2转到 0.000023542352845069 USDT-USDC SLP代币转到 Bunny的USDT-USDC Vault合约地址,正常performanceFee是很低的,由于MiniChefV2 的特殊性导致performanceFee费用变得异常高。这部分的USDT-USDC 将会删除流动性。

4.withdrawAll 的performance手续费删除流动性的USDC,USDT转给ZAP合约,再利用ZAP合约,把USDC,USDT都换成一半BUNNY,一半换成WETH,组成BUNNY-WETH流动池。一共获得16,649+12,849 LP token。攻击者铸造了 2,136,672.974656942582870591 的 BUNNY。

5.提取铸造的奖励与剩余的币换成WETH,再把USDT与USDC的流动池取出,把部分weth转换成USDC,USDT偿还 AAVE 的闪电贷贷款,攻击者获利了 1,281.702952074137533313 ETH。

总结:PancakeBunny上次被攻击通过dex是预言机价格导致铸币异常,这次被攻击的原因的defi项目之间的搭配而导致出现的问题,因为合作项目方sushi的LP奖励池MiniChefV2的机制不同,MiniChefV2收益地址是可调整的,才导致的有被攻击的可能。而quickswap与币安链的pancake不会出现类似问题。

目前项目方已更新并提供了解决方案,针对sushi这样的平台添加一个totalBalance的变量,限制balance()的最大额度,代码对比参考链接

https://www.diffchecker.com/Fo1mcQKL

Last updated