事件概述:一起由整数溢出引发的重大安全事件

2026年1月8日,去中心化计算协议Truebit Protocol遭遇重大安全攻击,损失高达8,535.36枚以太坊(约合2644万美元)。官方在次日凌晨确认了此次事件。安全研究团队ExVul对攻击过程进行了深入的技术复盘,揭示了其核心漏洞所在。

攻击过程技术拆解

攻击者(地址:0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50)通过一笔精心构造的交易(哈希:0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014)完成了攻击。其攻击模式采用了四轮循环调用,核心步骤如下:

第一轮攻击循环分析

  1. 价格查询阶段:攻击者首先调用 `getPurchasePrice` 函数,并传入一个巨大的代币数量参数(240,442,509,453,545,333,947,284,131枚TRU)。函数错误地返回了购买成本为0 ETH的结果。
  2. 零成本铸造阶段:随后,攻击者调用函数选择器为 `0xa0296215` 的合约方法,并附上 `msg.value` 为0。此操作成功地零成本铸造了上述天文数字的TRU代币。
  3. 代币销毁套利阶段:最后,攻击者调用函数选择器为 `0xc471b10b` 的方法,将铸造出的巨额TRU代币销毁,并从中提取了5,105.06枚ETH作为回报。

漏洞根源:关键函数逻辑缺陷剖析

通过对攻击链路的追溯,问题核心指向 `getPurchasePrice` 函数与内部函数 `0xa0296215` 的计算逻辑。在未开源的合约反编译代码中,一个关键的内部函数(此处标识为 `0x1446` 函数)负责计算购买指定数量TRU所需的ETH。

该函数在执行算术运算 `v12 + v9` 时发生了整数溢出。由于该合约基于Solidity `^0.6.10` 版本编译,此版本默认不包含内置的溢出检查。攻击者通过输入一个极其庞大的 `_amountIn` 参数,故意使加法运算 `v12 + v9` 的结果溢出,绕过了正常的数学逻辑,最终导致 `(v12 + v9) / v6` 的计算结果归零。

这意味着,协议错误地认为铸造海量TRU代币的成本为零,从而为攻击者打开了零成本铸造并立即兑换为ETH的套利大门。

安全启示与行业建议

本次Truebit Protocol安全事件的本质,是其代币经济模型中的核心价格计算函数存在严重的整数溢出漏洞。这暴露了使用旧版本Solidity(0.8.x之前)且未手动实施安全算术检查的固有风险。

当前,越来越多的攻击者开始利用自动化工具乃至AI技术,系统性扫描并攻击那些部署较早、未及时更新或审计的DeFi协议。类似的安全事件(如早前的Balancer和yETH攻击)已多次敲响警钟。

给项目方的安全建议:

  • 升级与审计:强烈建议仍在使用旧版Solidity(0.8.x以下)的协议尽快升级至具有默认溢出检查的新版本,并对核心合约进行新一轮的全面安全审计。
  • 主动监控与应急预案:建立完善的链上监控预警系统,对关键合约函数的异常调用保持高度警惕。同时,制定并演练资产紧急转移等应急预案,以最大限度降低潜在损失。
  • 防御性编程:即使在较新的编译器版本中,对于涉及核心资产计算的数学运算,也应考虑使用经过严格审计的安全数学库(如OpenZeppelin的SafeMath)进行二次加固。

🔥 这篇深度分析够不够劲?群里还有更多加密专题干货!

想跟志同道合的朋友一起聊趋势?赶紧进群→青岚免费交易社群

💡 感谢阅读

1、市场风云变幻,以上仅为青岚姐个人的复盘与思考,不作为任何投资建议。在加密市场的长跑中,比起预测,更重要的是执行——请务必管好仓位,严带止损,愿我们且行且珍惜,在每一轮波动中稳健前行!

2、关于如何合理设置止盈止损,请点这里查看青岚姐的教程。

3、本文由青岚加密课堂整理优化,如需转载请注明出处。