背景介绍
监控到一起的针对 SATX Token 的链上攻击事件
黑客总共发起了两次攻击:
第一次攻击
失败,因为在调用攻击合约的时候没有转入 BNB ,导致在执行BNB兑换为WBNB失败交易回滚。
第二次攻击成功。
黑客的初始资金均来自于 TornadoCash,
有趣的是攻击者的攻击合约函数名为f***you。
攻击及事件分析
首先,攻击者通过PancakeSwap将 0.001 WBNB 兑换为 13.397690168956297175 SATX 。随后,利用PancakeSwap Pair WBNB-CAKE 兑换 60 WBNB 。
接着,在回调函数中再用 0.0001 WBNB 兑换 350018.558642186154111639 SATX (在回调函数中又转入了 52 WBNB )。
接着,又将兑换来的350018.558642186154111639 SATX转入PancakeSwap Pair WBNB-SATX ,导致资金不平衡。然后,攻击者通过调用skim和sync平衡资金的同时从而完成对漏洞的利用。
由上图可以看到,通过skim本应从 PancakeSwap Pair中转出350018.558642186154111639 SATX来平衡资金,但是却多转了一倍的SATX 。
通过查看SATX Token合约的代码,我们可以看到transfer中的这段代码。首先,将amount转给了_tokenOwner,
接下来,将amount的 2.99% 转给了SATX Token合约,将amout的97.01%除以1000000的10%,9%和8.3%分别转给了三个EOA。
相当于额外转出了约一倍的SATX ,导致PancakeSwap Pair WBNB-SATX中的SATX 骤减,由于PancakeSwapV2使用的CPMM作为AMM算法,所以相当于SATX的价值飙升。
执行skim前, 1 WBNB=13844 SATX ,执行 skim后, 1 WBNB=33 SATX 。导致SATX价值飙升600多倍。
随后,攻击者就用手中的SATX通过swap兑换为WBNB。通过此次攻击,攻击者共获利约 50BNB 。
微信里点“发现”,扫一下二维码便可将本篇文章分享至朋友圈
