2023年2月27日,BNB Chain上的SwapX项目遭遇到黑客攻击。黑客利用权限漏洞,通过操纵代币DND/WBNB价格,获利约100万美元。
SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。
攻击者账户地址:0x7d192fa3a48c307100c3e663050291fff786aa1f,简记为0x7d19
【资料图】
攻击合约地址:0xc4bea60f5644b20ebb4576e34d84854f9588a7e2,简记为0xc4be
被攻击合约地址:0x6d8981847eb3cc2234179d0f0e72f6b6b2421a01,简记为:0x6d89
攻击过程如下:
其中,攻击交易的txHash为:
0x3ee23c1585474eaa4f976313cafbc09461abb781d263547c8397788c68a00160
(1)查询0x0b70 BUSD对0x6d18授权的额度allowance
(2)将0x0b70授权的BUSD转入BUSD/WBNB交易对,通过swap函数兑换成WBNB;
(3)将WBNB转入WBNB/DND交易对,通过swap函数兑换成DND并返还给0x0b70。
通过以上两步,攻击者利用了0x0b70的授权,通过两次代币兑换抬高了DND/WBNB交易对中的DND的价格。
同样地,攻击者多次利用其他账户地址的授权,进一步抬高交易对DND/WBNB交易对中DND的价格。
最后,攻击者通过DND/WBNB交易对将最初的100万DND兑换成了739.64 WBNB,实现最终获利。
从整个攻击过程中,攻击者利用了各个账户的BUSD对被攻击合约0x6d89的授权,然后通过swap抬高了DND的价格。攻击原因很可能是被攻击合约0x6d89中存在权限校验漏洞,这使得攻击者可以利用该漏洞转移授权的BUSD并实现操纵价格,也可能是被攻击合约没有考虑代币授权对交易池价格的影响。
针对代币授权(批准)带来的风险,建议:
(1)取消全额授权的情况,根据每次交易交易的金额进行授权;
(2)在交易结束时取消授权;
(3)在合约(如DEX合约)功能设计和实现时,要考虑代币授权的影响,避免价格被操纵的情况;
(4)请专业的审计团队对智能合约进行审计。
SharkTeam的愿景是全面保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立长期合作关系。
Twitter:https://twitter.com/sharkteamorg
Discord:https://discord.gg/jGH9xXCjDZ
Telegram:https://t.me/sharkteamorg
更多区块链安全咨询与分析,点击下方链接查看
D查查|链上风险核查https://app.chainaegis.com