BTC $64,264.91 +1.86%
ETH $1,906.12 +1.19%
BNB $605.62 +0.02%
XRP $1.00 +0.14%
SOL $75.84 +0.86%
TRX $0.3306 -0.37%
DOGE $0.0703 +0.52%
ADA $0.1738 -1.27%
BCH $204.78 +0.29%
LINK $9.50 +0.91%
HYPE $59.01 +2.48%
AAVE $87.87 +1.39%
SUI $0.6767 +0.07%
XLM $0.1578 +0.19%
ZEC $510.91 +4.17%
BTC $64,264.91 +1.86%
ETH $1,906.12 +1.19%
BNB $605.62 +0.02%
XRP $1.00 +0.14%
SOL $75.84 +0.86%
TRX $0.3306 -0.37%
DOGE $0.0703 +0.52%
ADA $0.1738 -1.27%
BCH $204.78 +0.29%
LINK $9.50 +0.91%
HYPE $59.01 +2.48%
AAVE $87.87 +1.39%
SUI $0.6767 +0.07%
XLM $0.1578 +0.19%
ZEC $510.91 +4.17%

慢雾分析 AutoShark 被黑:黑客利用 AutoShark 策略池机制分两步完成攻击

2021-05-25 14:36:45

链捕手消息,据慢雾区分析,币安智能链(BSC)DeFi 项目 AutoShark Finance 被黑,导致代币价格闪崩。慢雾团队针对攻击过程分析如下:

由于 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 价值的时候,使用的是 Panther WBNB/SHARK 池的 WBNB 实时数量除以 LP 总量来计算 LP 能兑换多少 WBNB。但是由于在第 2 步中,Panther 池中 WBNB 的数量已经非常多,导致计算出来的 LP 的价值非常高;

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

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

关联标签
关联标签
app_icon
ChainCatcher 与创新者共建Web3世界