20250620 - Bonding 攻击事件: 项目方不创建的池子由我攻击者来创建

背景信息

本次攻击涉及 Bonding 和 LBM 两种代币,用户可以通过 Bonding.buy() 用 USDC 购买 Bonding,当 Bonding 合约中的 USDC 累积超过一定阈值时会触发回购机制将 USDC 兑换成 LBM,随后向 [Bonding, LBM] pool 添加流动性。

造成本次攻击的原因是添加流动性所采用的 pool 并未提前创建(代码逻辑是第一次触发时不存在则创建),攻击者先创建了比例失衡的恶意 [Bonding, LBM] pool。然后通过闪电贷大量的 USDC 来购买 Bonding 触发回购机制,当协议将大量的 LBM 添加到 pool 中后,攻击者将手上的 Bonding 兑换成 USDC 完成获利(Bonding -> LBM -> WETH -> USDC 完成获利)。损失金额 4884 USDC。

攻击交易:https://app.blocksec.com/explorer/tx/base/0x9d724db325de76b3d88368ed9948acd85e6b67b464eb0aac9f5d2bc3fdebf190

漏洞合约:https://basescan.org/address/0xffa1ed9c565a4e635543123b29889e96bcafa184#code

Trace 分析

  1. 闪电贷获得 100000 USDC

  2. 攻击者创建了Bonding 的价格极高的 [Bonding, LBM] pool

  3. 攻击者通过 Bonding.buy() 用 11949 USDC 换取 1194.9 Bonding

  4. 触发 Bonding 的回购机制

  5. 用 17100 USDC 换取 332874 LBM

  6. 将 332874 LBM 和 0 Bonding 作为流动性添加到攻击者创建的 pool 中

  7. 攻击者在恶意构造的 pool 中用 0.01 Bonding 换出 332874 LBM,随后按照 Bonding -> LBM -> WETH -> USDC 这个路径获得 16833 USDC

  8. 归还闪电贷 100000 USDC,获利 4884 USDC。

    代码分析

    Bonding 和 LBM 组成一个双代币协议,LBM 作为 Bonding 的 feeToken。本次漏洞产生的原因主要在 Bonding 代币中。攻击者通过购入大量的 Bonding 代币触发回购机制。
    https://vscode.blockscan.com/8453/0x8D2Eb55F429aC689134ee547C74720BC41219F39

_finalizeSale() 函数中,首先将 USDC 换成 LBM

随后检查需要添加流动性的 [Bonding, LBM] pool ,通过注释可以看出,项目方是故意先不部署池子的,等到实际触发回购机制的时候再创建,这就给了攻击者可乘之机。

由于攻击者已经创建好了 [Bonding, LBM] pool ,所以这里 pool 地址为非零地址。最终使得协议按照攻击者设置的 LBM 价格极高的比例向 pool 添加流动性,攻击者可以用极少的 Bonding 套取大量的 LBM,转而出售成 USDC 完成获利。

相关推荐
阿菜ACai22 天前
20250528 - Usual 攻击事件: 价差兑换与请君入瓮
漏洞分析·defi
阿菜ACai5 个月前
20250110-FortuneWheel 攻击事件:竟然不设滑点,那就体验一下 Force Investment 吧
漏洞分析·defi
阿菜ACai6 个月前
【漏洞分析】20250105-SorraStaking:奖励金额计算错误,每次取款都有大收益
漏洞分析·defi
阿菜ACai7 个月前
【漏洞分析】Vestra DAO 攻击事件:这个质押项目它取款不核销呀
漏洞分析
xzajyjs8 个月前
CodeQL学习笔记(3)-QL语法(模块、变量、表达式、公式和注解)
web安全·渗透测试·漏洞分析·代码审计·codeql
阿菜ACai9 个月前
【漏洞分析】20240507-SATURN:当闪电贷遇上有缺陷的通缩机制
智能合约·漏洞分析
阿菜ACai10 个月前
【漏洞分析】Penpie 攻击事件:重入攻击构造奖励金额
漏洞分析·defi
阿菜ACai10 个月前
【漏洞分析】OSN 代币攻击事件:一笔资金伪造多个分红大户
智能合约·漏洞分析·solidity
Soujer10 个月前
记一次CSDN认证模块后端未校验漏洞
安全威胁分析·漏洞分析·csdn