安全机构:AutoShark Finance 闪电贷事件分析_SHA:SHAB

币安智能链DeFi项目AutoSharkFinance遭到攻击,导致代币价格闪崩。慢雾安全团队对此次事件进行了跟进分析,慢雾表示,由于AutoShark策略池的机制,攻击者需要事先存入一定数量的LP代币到策略池中,为后续攻击做准备,所以整个攻击其实分成了2步,这里主要分析的是第2笔的攻击交易。

攻击步骤如下:

1.攻击者从Pancake的WBNB/BUSD交易对中借出大量WBNB;

2.将第1步借出的全部WBNB中的一半通过Panther的SHARK/WBNB交易对兑换出大量的SHARK,同时池中WBNB的数量增多;

3.将第1步和第2步的WBNB和SHARK打入到SharkMinter中,为后续攻击做准备;

4.调用AutoShark项目中的WBNB/SHARK策略池中的getReward函数,该函数会根据用户获利的资金从中抽出一部分手续费,作为贡献值给用户奖励SHARK代币,这部分操作在SharkMinter合约中进行操作;

5.SharkMinter合约在收到用户收益的LP手续费之后,会将LP重新拆成对应的WBNB和SHARK,重新加入到Panther的WBNB/SHARK交易池中;

6.由于第3步攻击者已经事先将对应的代币打入到SharkMinter合约中,SharkMinter合约在移除流动性后再添加流动性的时候,使用的是SharkMinter合约本身的WBNB和SHARK余额进行添加,这部分余额包含攻击者在第3步打入SharkMinter的余额,导致最后合约获取的添加流动性的余额是错误的,也就是说SharkMinter合约误以为攻击者打入了巨量的手续费到合约中;

7.SharkMinter合约在获取到手续费的数量后,会通过tvlInWBNB函数计算这部分手续费的价值,然后根据手续费的价值铸币SHARK代币给用户。但是在计算LP价值的时候,使用的是PantherWBNB/SHARK池的WBNB实时数量除以LP总量来计算LP能兑换多少WBNB。但是由于在第2步中,Panther池中WBNB的数量已经非常多,导致计算出来的LP的价值非常高;

8.在LP价值错误和手续费获取数量错误的情况下,SharkMinter合约最后在计算攻击者的贡献的时候计算出了一个非常大的值,导致SharkMinter合约给攻击者铸出了大量的SHARK代币;

9.攻击者后续通过卖出SHARK代币来换出WBNB,偿还闪电贷。然后获利离开。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:15ms0-1:738ms