SEL:XSURGE闪电贷攻击事件分析-ODAILY

一.事件背景

8月17日,有消息爆出BSC上DeFi协议XSURGE遭到闪电贷攻击,被盗金额价值500万美金。知道创宇区块链安全实验室迅速展开分析。

二.攻击合约及交易

攻击合约地址:

0x1514AAA4dCF56c4Aa90da6a4ed19118E6800dc46

攻击交易链接:

https://bscscan.com/tx/0x7e2a6ec08464e8e0118368cb933dc64ed9ce36445ecf9c49cacb970ea78531d2

三.事件复盘

分析攻击交易,攻击者通过闪电贷借入BNB后购买surge代币,然后不断卖出再买入,最后套利离场,分析代币源代码可以发现,这次漏洞的原因是因为合约内的sell函数导致的重入漏洞。

sell函数计算完卖出代币所值BNB数量后,合约会把BNB发送给攻击合约,但是如果攻击合约此时在回退函数中又执行了purchase函数,就会导致重入的发生。

观察此次函数调用产生的影响,由于这是在sell函数中调用的purchase,所以totaslSupply还没有销毁掉sell的SurgeToken,导致totalSupply高于正常值,bnbAmount和prevBNBAmount的值会因为94%的手续费问题而有所变化,但也影响不大。

也就是说攻击者通过买入-卖出-买入的操作,以更低的代币价格获取到了更多的surge代币,值得一提的是因为sell函数中nonReentrant修饰函数的影响,攻击合约只能重复之前的操作,也说明了防重入修饰函数不能完全解决这种伪重入问题,最好的方法还是限制call函数转账调用,用更安全的transfer函数限制转账gas消耗。

四.事件总结

最近链上安全事件频繁发生,这次重入漏洞又造成了重大的经济损失,我们建议各大项目方认真审视自身代码,做好安全保障。同时官方发文称将会尽量弥补受害者被盗资金,如有最新进展,我们将会及时跟进。

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

链链资讯

[0:15ms0-8:479ms