去中心化交易所Bunni遭遇840万美元漏洞攻击
Bunni团队在9月4日发布的事后分析报告中指出,本周初遭遇的840万美元安全事件源于智能合约中的取整漏洞。攻击者通过闪电贷攻击操纵两个流动性池,系统性地抽走了巨额资金。
攻击过程全解析
本次攻击涉及两个流动性池:Unichain上的weETH/ETH交易对以及以太坊上的USDC/USDT交易对。攻击者首先通过闪电贷借入300万USDT,随后执行一系列兑换操作将池内现货价格推至极端水平,导致活跃余额中仅剩28wei的USDC。
真正的破坏随之而来。攻击者连续发起44次微小提款操作,每次操作都利用合约的取整漏洞。原设计假设取整会始终偏向"安全"方向:闲置余额向上取整,活跃余额向下取整。
这种逻辑在单次操作中或许成立,但在多次重复操作下就会失效。通过串联提款操作,攻击者将这种"安全"取整转化为系统漏洞,使得池内活跃资金流失远超预期,超过84%的流动性被抽干。
当流动性池处于暴露状态时,攻击者执行大额兑换推高价格,随即以扭曲的汇率反向交易套取巨额利润。最终即便偿还闪电贷后,攻击者仍获利约133万USDC和100万USDT。
部分资金池幸免原因
Bunni特别指出,其最大资金池Unichain上的USDC/USD₮0未被波及,并非因为安全性更高,而是攻击者无法获得所需资金规模。据分析,Unichain上的闪电贷平台流动性不足,无法达到操纵价格所需的资金门槛。
代码漏洞本质
问题的核心在于Bunni提款逻辑中的单一假设。开发者认为向下取整能通过提高交易成本来保护资金池,但在微小提款的连续攻击下,实际效果适得其反。流动性被危险性地低估,为操纵创造了可乘之机。
目前团队已通过修改取整方式测试修复方案,可有效防御此类特定攻击。但团队承认此事件暴露了测试框架的缺陷,承诺在恢复正常运营前将加强模糊测试和不变性测试。
后续应对措施
被盗资金目前存放在攻击者关联的两个钱包中。虽然资金经过Tornado Cash混币后追踪受阻,但Bunni已联系攻击者提出和解方案:归还90%资金,10%作为"白帽"奖励保留。团队同时已通知中心化交易所并联系执法部门。
目前平台已重新开放提款功能供流动性提供者取回资产,但存入和兑换功能仍处于暂停状态。
在公开信的结尾,六人核心团队表示:"我们投入数年光阴和数百万资金创建Bunni,因为坚信这是AMM的未来。无论发生什么,我们都将继续建设Bunni,塑造DeFi的未来。"