BSC链上XSURGE全面分析闪电贷攻击
8月17日,链必安-区块链安全态势感知平台(Beosin-Eagle Eye)舆情监测显示,BSC链上DeFi协议XSURGE被闪电贷攻击,攻击者利用合同重新进入的漏洞获利超过13111BNB。成都链安技术团队首次对此次攻击进行了事件分析。
#1事件概览
如何发生攻击 Event overview
DeFi项目XSURGE今日遭遇闪电贷攻击,不过在XSURGE在遭到攻击之前,官方发布了关于SurgeBNB声明漏洞。
XSURGE8月16日,当地时间被发现SurgeBNB由于合同的潜在安全漏洞。SurgeBNB合同不能改变,已经放弃,无法追溯和修复代币。XSURGE这个漏洞的性质没有透露任何具体细节,但强烈建议用户尽快迁出SurgereBnb,因为这个漏洞随时都可能被攻击者触发。
声明发布后,说时迟那时快,XSURGE然后说遭遇攻击,这甜蜜的一击让项目防不胜防。官方称,攻击者通过后门漏洞SurgeBNB偷了500万美元。SurgeUSD或SurgeETH不提取BNB,因此,它们不能成为未来攻击的目标。
回到闪电贷款攻击,让我们看看攻击者这次是如何实现的「空手套白狼」的。
#2事件具体分析
攻击者如何得手 Event overview
攻击者地址:
0x59c686272e6f11dC8701A162F938fb085D940ad3
攻击合约
以交易
0x8c93d6e5d6b3ec7478b4195123a696dbc82a3441be090e048fe4b33a242ef09d为例
round 0
首先通过闪电贷款借出1000000BNB。
Round 1
用所有的的BNB去购买SURGE,1、896、594、328、449、690SURGE。
获取的SURGE
Round 2
调用sell通过卖出函数获得SURGE,卖出了9346个BNB。
Round 3
因为sell函数是先转账后修改数据,转账代码中存在重入漏洞。在攻击合同中收到BNB时,SURGE合约的状态改变前(第595行代码),攻击合约可通过重入漏洞再次购买SURGE。
每次都是因为攻击合同BNB购买余额SURGE,合约的bnbAmount不变,而SURGE的代币总量_totalSupply未更新(仍为sell以前的数量),所以SURGE降价导致攻击者购买更多SURGE。
Round 4
重复3次Round2、Round3.攻击者通过重新进入积累了大量积累SURGE,然后把一切都做好SURGE全部卖出就能盈利。
交易结束时,攻击合同卖出了1.864、120、345、279、610、000 SURGE,获得了10327 BNB,最终将获利的297 BNB向攻击者发送地址。
#3 事件复盘
我们需要注意什么?Case Review
成都链安技术团队对此次攻击给出的修改建议如下:1.为防止重攻,任何转账操作都应在状态变化后发生;2.使用transfer或send转账,不要使用call.value。
攻击者通常属于此类安全事件「空手套白狼」,先用闪电贷获得大量资金,有攻击启动「砝码」之后,通过一系列手段进出各种抵押、贷款、交易等协议,实现资产价格数据的操纵和扭曲,实施套利,最终返还「本金」。
注意
在这次事件中,攻击者利用合同的重入漏洞获利超过1311BNB,成都链安在此提醒用户注意风险控制,如官方发布SurgeBNB声明漏洞后,应及时采取相应措施。
如果您也对数字货币挖掘平台和数字货币挖掘相关知识感兴趣,那么您可以添加我们的货币牛官方客户服务邀请免费进入我们的货币大师官方挖掘社区,数字货币挖掘上下游货币朋友粉丝,我们相互沟通,共同进步,共同在数字货币挖掘领域。添加客户服务申请。