SharkTeam独家分析 | 重蹈覆辙:PancakeBunny二次闪电贷攻击事件分析
北京时间7月17日,PancakeBunny 在 Polygon 上的版本遭外部攻击,已经暂停所有 Polygon 网络上的 Sushi 机枪池。PancakeBunny 在币安智能链上的版本曾在 5 月 20 日遭遇闪电贷攻击,按当时价格计算超过 4000 万美元损失,第一次攻击时SharkTeam第一时间也进行了分析,详见《黑色519/520:PancakeBunny被黑事件分析》,此次攻击原理和第一次很类似,都是攻击者利用合约中数值计算存在的漏洞,恶意获取了大量的Bunny代币并获利。
SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。
一、事件分析
攻击交易:
https://polygonscan.com/tx/0x25e5d9ea359be7fc50358d18c2b6d429d27620fe665a99ba7ad0ea460e50ae55 ,具体攻击流程如下:
(1)攻击者首先通过闪电贷,从 AAVE中 借出 大量的USDT/USDC/WETH。
(2)攻击者将第1步中获得的USDC 与 USDT转入 SushiSwap 中添加流动性,并获得 SLP
(3)攻击者将第2步中获得的SLP 的小部分抵押至Bunny的 VaultSushiFlipToFlip 合约中,为获得 polyBUNNY 代币奖励做准备。
(4)攻击者将第2步中获得的SLP 的大部分抵押到MiniChefV2 中,并将存款收益地址指定为 VaultSushiFlipToFlip合约的地址
(5)攻击者将第一步通过闪电贷获取的100K个WETH在QuickSwap中换成了30M个WMATIC。通过持有WMATIC,攻击者后续的攻击成本将减少。
(6)调用 VaultSushiFlipToFlip 的 withdrawAll 函数,提取流动性与 polyBUNNY奖励。
(7)攻击者抛售 polyBUNNY ,归还闪电贷,并获利。
此次攻击的根本原因是:攻击者在第6步中从VaultSushiFlipToFlip合约中提取流动性和奖励时,由于第4步中大部分SLP抵押到 MiniChefV2 中,且获益地址是 VaultSushiFlipToFlip 合约,导致 VaultSushiFlipToFlip 获取到错误的余额(balanceOf),导致 performanceFee 变成一个错误的大值,而铸造 polyBUNNY 奖励使用了 performanceFee 作为乘数因子,导致错误的铸造了大量的 polyBUNNY 代币给攻击者。
二、安全建议
此次事件是又一次与闪电贷有关的安全事件,DeFi项目的业务逻辑设计复杂,涉及的经济学计算和参数较多,却不同项目和协议之间可组合性极其丰富,很难预测,非常容易出现安全漏洞。如下表,利用闪电贷这种新型产品进行攻击的DeFi事件在过去的一年里层出不穷,已增加到33起。通常闪电贷攻击包括“哄抬套利”、“操纵预言机”、“重入攻击”和“技术漏洞”四种,本次属于基于利用“技术漏洞”进行攻击。
SharkTeam提醒您,在涉足区块链项目时请提高警惕,选择更稳定、更安全,且经过完备多轮审计的公链和项目,切不可将您的资产置于风险之中,沦为黑客的提款机。
而作为项目方,智能合约安全关系用户的财产安全,至关重要!区块链项目开发者应与专业的安全审计公司合作,进行多轮审计,避免合约中的状态和计算错误,为用户的数字资产安全和项目本身安全提供保障。
SharkTeam作为领先的区块链安全服务团队,为开发者提供智能合约审计服务。智能合约审计服务由人工审计和自动化审计构成,满足不同客户需求,独家实现覆盖高级语言层、虚拟机层、区块链层、业务逻辑层四个方面近两百项审计内容,全面保障智能合约安全。
==
和2万人一起加入鸵鸟社群
添加TG群:鸵鸟中文社区 https://t.me/tuoniaox