Truebit Protocol因合约漏洞遭黑客攻击,损失高达2644万美元
2026年1月8日,Truebit Protocol遭受了一次严重的黑客攻击,导致约8,535.36 ETH(约合2644万美元)的资产损失。Truebit Protocol官方在次日凌晨发布声明确认了这一事件。ExVul安全团队对此次攻击进行了深入分析,以下是详细的漏洞分析报告。
攻击流程
攻击者地址:
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
攻击交易哈希:
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
攻击者通过四轮循环调用 getPurchasePrice→0xa0296215→0xc471b10b 的交易完成攻击。以下以第一次循环为例进行分析。
1. 攻击者首先调用 getPurchasePrice(240442509453545333947284131) 函数,返回值为 0。

2. 随后,攻击者调用 0xa0296215(c6e3ae8e2cbab1298abaa3) 函数,并将 msg.value 设置为 0。最终成功铸造了 240442509453545333947284131 枚 TRU。

3. 最后,攻击者调用 0xc471b10b(c6e3ae8e2cbab1298abaa3) 函数,销毁了 240442509453545333947284131 枚 TRU,并获得了 5105.06 枚 ETH。
攻击逻辑分析
通过上述攻击流程可以看出,getPurchasePrice 函数与 0xa0296215 函数的逻辑存在明显问题。由于合约未开源,以下代码均为反编译结果。


通过对比两个函数的共同点,可以发现 0x1446 函数用于计算购买指定数量的 TRU 所需的 ETH 数量。显然,0x1446 函数的逻辑存在问题,导致 ETH 计算错误。以下是对其逻辑的详细分析。

观察 0x1446 函数中的逻辑,由于最终计算结果 v13 == 0,因此问题必然出现在之前的计算逻辑中。需要说明的是,0x18ef 函数的功能与 _SafeMul 相同,因此问题出在使用原生加法 v12 + v9(合约版本为 ^0.6.10,因此无溢出检查)。
v12 与 v9 分别表示:

通过上述分析可知,攻击者的思路是通过输入极大的 _amountIn 值,使 v12 + v9 溢出为一个极小的值,从而导致 (v12 + v9) / v6 == 0。
总结
Truebit Protocol 此次被攻击的根本原因在于其代币购买价格计算逻辑中存在严重的整数溢出漏洞。由于合约使用的是 Solidity ^0.6.10 版本,且未对关键算术运算进行安全检查,最终造成了 8,535.36 ETH 的重大损失。目前新版本的 Solidity 已经缓解了此类溢出漏洞。
这起攻击事件很可能是黑客利用 AI 自动化扫描一些已经上线的老 DeFi 协议发现的漏洞(例如前段时间的 Balancer 和 yETH 攻击)。我们认为,近期可能会出现更多类似利用 AI 攻击老 DeFi 协议的事件。因此,我们建议项目方对合约代码进行新一轮的安全审计,若发现漏洞,应尽快升级合约或进行资产转移,同时加强链上监控,及时发现异常,最大限度地降低损失。
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代币币情的观点或立场
首页
快讯