零时科技 || 跨链桥Allbridge约57万美元损失事件分析

目前一攻击者已归还1500枚BNB,Allbridge正邀请另一攻击者谈判。

image

事件背景

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

合约漏洞

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

攻击步骤

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

总结及建议

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

安全建议

建议对合约中进行代币兑换的函数添加最大兑换比判断,避免当池子中代币数量差值较大时执行兑换产生较大损失。

建议项目方上线前进行多次审计,避免出现审计步骤缺失

点赞 2
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
零时科技
零时科技
0xbD0b...A354
专注区块链生态安全