权限漏洞+价格操纵:SwapX被攻击事件分析
作者: 日期:2023年03月06日 阅:1,346

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)请专业的审计团队对智能合约进行审计。

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章