智能合约漏洞案例,跨链桥 Allbridge 57 万美元漏洞分析

智能合约漏洞案例,跨链桥 Allbridge 57 万美元漏洞分析

事件背景

Safful区块链安全情报平台监控到消息,北京时间 2023 年 4 月 1 日,BSC 链上 Allbridge 跨链桥受到黑客攻击,攻击者获利约 57 万美元,攻击者地址为 0xc578d755cd56255d3ff6e92e1b6371ba945e3984,被盗资金转移至 Tornado.cash 混币平台。Safful安全团队及时对此安全事件进行分析。

合约漏洞

合约中执行兑换操作函数 swapToVUsd 中计算兑换结果方式为合约中当前记录 BUSD 余额与计算转入 token 后的数量转换为 BUSD 的差值得到的,因此攻击者通过存取大量资金以及进行大量代币兑换实现对池子中代币价格控制。

攻击步骤

  1. 攻击者通过闪电贷借出 7,500,000 BUSD
  2. 将 2,003,300 BUSD 兑换为 2,000,296 USDT,此时合约中 BUSD 余额为 11,405,966,USDT 余额为 8,296,249
  3. 调用合约中 deposit 函数,向合约中存入 5,000,000 BUSD
  4. 此时攻击者地址剩余 496,700 BUSD,攻击者将剩余 BUSD 全部兑换为 USDT,共 495,488 个
  5. 将之前兑换得到的 2,000,296 USDT 存入合约
  6. 调用 Allbridge Core: Bridge 合约中 swap 函数,使用 495,784 USDT 兑换 490,849 BUSD
  7. 取出之前存入的 4,830,999 BUSD
  8. 调用 Allbridge Core: Bridge 合约中 swap 函数,使用 40,000 BUSD 兑换出 789,632 USDT
  9. 将存入的资金提出,并将 USDT 兑换为 BUSD
  10. 归还闪电贷

    攻击者此次攻击中共获利 549,874 BUSD

总结及建议

此次攻击是由于攻击者可以通过大额存取资金和进行兑换,从而修改交易池中代币的比例,实现用较少的 BUSD 兑换出大额 USDT 从而获利。

安全建议

建议对合约中进行代币兑换的函数添加最大兑换比判断,避免当池子中代币数量差值较大时执行兑换产生较大损失。
建议项目方上线前进行多次审计,避免出现审计步骤缺失。

猜你喜欢

转载自blog.csdn.net/weixin_28733483/article/details/133303022
57
今日推荐