事件背景
零时科技区块链安全情报平台监控到消息,北京时间2023年7月1日,BSC链上Biswap受到黑客攻击,攻击者获利约71万美元,攻击者地址为0xe3aeede563bc6a72dc881755cc98dc57fadf30f6。零时科技安全团队及时对此安全事件进行分析。
漏洞及核心
此合约中migrate函数为公共函数,用户可以通过此函数执行资金迁移,由于此合约中没有对迁移者和交易发起者进行验证,并且没有对代币以及交易对进行有效性验证。
以其中一笔攻击交易为例:
攻击者第一次调用migrate函数,此时攻击者传入的参数中pair为正确的交易对BiswapPair合约,token0与token1为攻击者自行构造的代币,在此次调用中攻击者使用自行构造的代币将用户正常添加的流动性锁定在被攻击合约中。
攻击者将用户应正常迁移的代币恶意修改为由攻击者自行构造的代币
攻击者第二次调用migrate函数,此时攻击者传入的参数中pair为攻击者自行构造的交易对,token0与token1为正常的USDT与BUSD代币合约地址,在此次调用函数后攻击者使用自行构造的交易对将之前恶意锁定在合约中的用户添加的流动性转出。
攻击者将正常用户锁定的资金转出。
资金流向
攻击者通过合约将资金转出
-
173,715 BUSD转移至地址:
0xDA49173f098a614205925Ca4C59382a54148068c
2. 173,715 BUSD转移至地址:
0x6151b69b76dc133632213739534bc90852e2e83a
总结及建议
?此次攻击是由于此项目中执行资金迁移的函数中缺失权限校验,攻击者可以通过使用正常用户的LP和自行构造的Token,将用户正常添加的流动性通过迁移函数转出从而获利。
安全建议
-
建议对合约中交易发起者与执行迁移者进行判断。
-
建议合约中添加对交易对与所对应的代币的判断,避免出现交易对与代币出现不匹配的情况。
-
建议项目方上线前进行多次审计,避免出现审计步骤缺失
往期内容回顾
原文始发于微信公众号(零时科技):零时科技 || BSC链上Biswap被攻击,攻击者获利约71万美元事件分析