帅不过三秒,Four.meme攻击事件分析
背景介绍
four.meme 是一个 Binance Academy 孵化的一个类似于 pump.fun 的 memecoin launchpad 。
我们监测到平台上的 memecoin snowboard( https://four.meme/token/0x4abfd9a204344bd81a276c075ef89412c9fd2f64 )遭受黑客攻击。损失约 15, 000 USD 。攻击交易为: https://bscscan.com/tx/0x2902f93a0e0e32893b6d5c907ee7bb5dabc459093efa6dbc6e6ba49f85c27f61
攻击及事件分析
four.meme技术原理
four.meme 是一个在 bnb smartchain 上的类似于 pump.fun 的 memecoin launchpad 。类似的 launchpad 平台主要有三个阶段:
•阶段1:用户在平台自定义名称、logo、描述、社交账户(可选)等创建memecoin
•阶段2:其他用户在平台上可以买卖该 memecoin
•阶段3:当该 memecoin 市值到达一定阈值时( 24 BNB ),将其迁移到 DEX(PancakeSwap)上
下面,我们详细了解一下每个阶段的具体技术细节。
阶段1
用户在 launchpad 平台上,通过接口填写需要创建的 memecoin 的具体信息。
填写完成后,支付手续费便完成 memecoin 的链上合约创建。当然这个合约是由 launchpad 官方的合约创建的,所以创建后的 ERC-20 Token 的 owner 也是 launchpad 官方合约。下面我们可以看一下 four.meme 的一个 memecoin 创建的例子:
首先,由用户支付手续费, launchpad 官方合约完成 memecoin 的 ERC-20 Token 合约部署,并mint 1,000,000,000 初始资金(该 memecoin 预计的虚拟池总量为 30 BNB ),
随后,我们看到创建好的 Token 的 owner 同样也是 launchpad 官网的智能合约。
这也就说明虽然在 launchpad 上, memecoin 是该用户创建的,但实际上链上的 ERC-20 合约的 owner 并不是该用户,这样做的可以防止用户自行 mint 等一些恶意行为出现。该 memecoin 智能合约在链上部署完成就就进入第二阶段,平台上的所有用户进行买卖。
阶段2
平台上其他用户可以通过平台进行买卖,但是,买卖后的 token 没法通过 transfer 转给其他用户,我们可以看一下链上 ERC-20 Token 的源代码,
其中在 _beforeTokenTransfer 通过参数 _mode 对转账进行了限制
此时,我们可以看到阶段2的 Token 对应的 _mode 为1,也就是 MODE_TRANSFER_RESTRICTED ,限制转账第三方。
此举是这是为了防止场外 OTC 对价格的影响。当买卖时, four.meme 合约通过先将 _mode 设置为2 后利用 transfer 给用户转账,转账完成后再将 _mode 设置为 1 ,限制其他用户转账。来完成购买后 memecoin 的转账。
阶段3
当该 memecoin 的市值到达 24 BNB 时,此时 Bonding Curve Process 达到 100% 。launchpad 官方就会将剩下的 20% memecoin 和 24 BNB 迁移到 DEX PancakeSwap 上。至此,阶段3正式完成。下面的交易就是 launchpad 官方将 memecoin 迁移到 PancakeSwap 上的交易。
我们可以看到,首先 launchpad 官方将 memecoin 的 _mode 设置为 0 ,即 MODE_NORMAL ,允许用户进行场外交易。接着,launchpad 官方创建了一个 memecoin 和 WBNB 的交易对,最后将 23.5BNB (其中 0.5 BNB 为 fee )和2亿 memecoin 的流动性添加到了该交易对中。添加流动性的价格为 sqrtPriceX96 = 27169599998237907265358521 。因为 sqrtPriceX96 的计算公式如下:
所以,添加流动性时的该 memecoin 价格为 0.0000001175 WBNB ,也可以通过 23.5 WBNB 除以2亿memecoin 得到,所以每个币迁移到DEX的价格都时相同的。均为 0.0000001175 WBNB 。
攻击原理
在了解完整个 memecoin 在 four.meme 的生命周期后,我们再来详细看一下攻击流程。首先,攻击者提前创建了一个已经初始化的DEX交易对。并且,将交易对的 sqrtPriceX96 设置为10000000000000000000000000000000000000000 ,比正常值大了 368058418256012 倍。
当该 memecoin 的 bond cvure process 到达 100% 时, launchpad 将该 memecoin 迁移到 DEX 时,使用 createAndInitializePoolIfNecessary 来创建交易对。由于该交易对在之前已经被攻击者创建并初始化。所以就按照创建时攻击者初始化的价格添加了流动性。相当于莫名拉高了该memecoin 的价格。
此时,该 launchpad 使用 1 个 memecoin 和 23.5 WBNB 添加了流动性。随后,疑似攻击者使用了1600 memecoin 将交易对中的 23.4 WBNB 兑换完成,至此攻击结束。
总结
本次漏洞的成因是在 Four.meme 在内盘的 bonding curve process 为100%,向DEX进行迁移时。使用 createAndInitializePoolIfNecessary 创建 PancakeSwap 交易对。没有考虑到交易对已经被提前创建的情况,因为错误的使用了攻击者提前创建并初始化完成的交易对,利用攻击者设置的错误的价格添加了流动性。导致迁移后该 memecoin 的价格暴增,随后攻击者利用手中的memecoin 将池子中的 WBNB 掏空完成攻击。建议项目方在设计经济模型和代码运行逻辑时要多方验证,合约上线前审计时尽量选择多个审计公司交叉审计。
Crypto Market Sees a Notable Surge as Bitcoin Price Hovers around $95K
The crypto market surges as Bitcoin ($BTC) is trading near $95K as well as DeFi and NFT sectors rall...
Joseph Stiglitz Warns: Trump’s Crypto Policies Could Turn U.S. Into “Biggest Tax Haven in History”
The post Joseph Stiglitz Warns: Trump’s Crypto Policies Could Turn U.S. Into “Biggest Tax Haven in H...
Charles Hoskinson Confirms XRP Integration and Midnight Airdrop for Holders
The post Charles Hoskinson Confirms XRP Integration and Midnight Airdrop for Holders appeared first ...