前言
8月17日,BSC链上的XSURGE协议遭到闪电贷攻击,损失超过500万美元。对此,知道创宇区块链安全实验室对攻击流程和代码细节进行了全盘梳理。
全盘梳理
基础信息
-攻击tx:0x7e2a6ec08464e8e0118368cb933dc64ed9ce36445ecf9c49cacb970ea78531d2-攻击合约:
0x1514AAA4dCF56c4Aa90da6a4ed19118E6800dc46
-SurgeToken:
0xE1E1Aa58983F6b8eE8E4eCD206ceA6578F036c21
0xScope:某地址在Base上部署了29个Meme并全部Rug Pull:7月31日消息,据0xScope监测,某地址在Base上部署了29个Meme并全部Rug Pull,该地址最初向Base转入了55.5枚ETH,价值10.3万美元,现钱包资产共计107万美元。[2023/7/31 16:09:26]
攻击流程
这里有个小细节,代币转移流程中的顺序是按照事件先后顺序来显示的,而重入之后的买操作引起的事件会在卖操作引起的事件之前,所以在流程中看到的每一个单独的重入攻击中是SURGE的买入发生在卖出之前。
26小时前226091枚FXS解锁,其中Dragonfly Capital获得46296枚:金色财经报道,据Spot On Chain监测,26小时前,226091枚FXS以8.17美元的价格从Treasury和Advisor开发者钱包中解锁。
作为其私募投资方之一的Dragonfly Capital从解锁中获得了46296枚FXS(价值37.8万美元)。[2023/4/23 14:21:46]
漏洞原理
漏洞点在于SurgeToken合约中的sell()函数,其中对调用者msg.sender的BNB转账采用的call()函数,并且在转账之后才更新代币总量_totalSupply,是典型的重入漏洞场景。
数据:本周解锁金额超1000万美元的代币有AXS、RON和IMX:金色财经报道,Token Unlocks数据显示,本周将有AXS、ACA、GAL、RON、YGG、IMX代币解锁。其中,AXS代币1月23日21:10解锁约489万枚(约合6318 万美元),占总供应量的1.812%;RON代币将于1月27日08:00解锁约 4293 万枚(约合 2425 万美元),约占总供应量的4.293%;IMX代币将于1月28日18:00解锁约1807万枚(约合1217万美元),约占总供应量的0.904%。[2023/1/23 11:27:01]
虽然\nsell()函数使用了nonReentrant修饰防止了重入,但purchase()函数并没有。重入转回BNB给合约,触发\nfallback函数调用purchase(),由于_totalSupply尚未减去卖出量,而导致可买入相较正常更多的SURGE代币。
Frax联合创始人提议斥资2000万美元回购FXS代币:金色财经报道,Frax Finance的联合创始人Sam Kazemian和Travis Moore发布了一份新的治理提案,拟以2000万美元回购协议的Frax Shares (FXS)代币,该回购计划旨在提高过去六个月暴跌的代币的价值。如果通过,该协议将回购并烧毁价值2000万美元的FXS。回购和烧毁过程将从流通中移除这些代币,导致流通供应减少。(theblockcrypto)[2022/6/9 4:11:38]
复现
价格分析
sell()函数卖出过程中,输入tokenAmount与输出amountBNB的关系:
purchase()函数买入过程中,输入bnbAmount与输出tokensToSend的关系:
在重入过程中,sell()函数卖出后获得的BNB通过重入打回SurgeToken合约传入purchase()函数故令sell()函数的输出amountBNB与purchase()函数的输入bnbAmount相等,可得到整个利用流程中输入与输出的关系:
若要实现套利,需要输出大于输入,则有:
最后得到:
也就是说重入套利过程中调用sell()卖出的代币量必须在代币总量的12.383%以上
模拟演示
为方便调试,将SurgeToken合约中的mint()函数可见性改为public,并为构造函数增加payable修饰,在部署时传入10^15wei。
SurgeToken合约初始化的代币总量为10^9,根据前面推导出的结论,为攻击合约铸币200000000,则攻击合约拥有大约SURGE代币总量16%的代币。
攻击合约调用Attack()函数攻击,查看攻击合约的代币余额已变为209549307,获利9549307。
总结
XSURGE协议被攻击的本质原因在于sell()函数中存在重入漏洞,导致可通过purchase函数买入较多的SURGE代币而获利。
简而言之,典型的重入漏洞场景,教科书级的案例。
波卡通过中继链+平行链方式解决扩容问题,那流动性问题呢?本文将为你阐述波卡面临的流动性问题及现行解决方案.
《大教堂与集市》是当代软件技术领域最重要的著作,被誉为开源运动的《圣经》,相信很多互联网人都有阅读过。大教堂模式是典型的自上而下的开发范式,由最上层专属团队作为执行主导,是封闭的.
hi,朋友们,因为是一封跨越时区的信,所以此时你可能在明媚的清晨刚刚醒来,也可能在静谧的夜晚独自刷着推特,或者是下午在电脑前敲着代码,自我介绍一下,我们是metaversealliance.
DAOrayakiDAO研究奖金池:预测市场需要流动性才能正常运行。然而,尽管大多数人都了解事件发生的可能性意味着什么,但在预测市场中将事件发生的可能性的知识转化为相应的顺序可能是一项困难的工作.
撰文:Footprint分析师Bella(bella@footprint.network) 日期:2021年11月 数据来源:FootprintAnalytics10月月报dashboard(h.
币安有两条链,币安链和币安智能链,这两条链并不是一条链。在币安交易所提币的时候,你看到的BEP-2就是币安链,BEP-20就是币安智能链.