2644 万美元被盗:Truebit 协议智能合约漏洞分析

Truebit Protocol 在2026年1月8日遭受攻击,攻击者利用智能合约中的漏洞,获利约 8,535 ETH(约合 2644 万美元)。攻击原因是由于整数加法运算中缺少溢出保护,导致计算 TRU 代币所需的 ETH 数量时产生错误结果。文章详细分析了攻击过程、根本原因,并提出了安全建议。

背景

在2026年1月8日,去中心化离线计算协议 Truebit Protocol 遭到攻击。通过利用智能合约中的一个漏洞,攻击者获利约 8,535 ETH (约 2644万美元 )。以下是 SlowMist 安全团队对该事件的详细分析。

根本原因

由于在整数加法运算中缺乏溢出保护,Truebit Protocol的Purchase合约在计算铸造TRU代币所需的ETH数量时产生了错误的结果。因此,价格计算被错误地降至零,使得攻击者能够以几乎零成本铸造大量代币并耗尽合约的储备。

先决知识

Truebit Protocol是一个去中心化的链下计算市场,旨在将复杂的计算任务从区块链主网转移出去,并在链下执行,同时通过经济激励机制确保结果的正确性。该协议引入了一种原生代币 TRU,它采用算法弹性供应模型。TRU的实时价格由合约中持有的ETH储备与TRU的流通供应量之间的比率函数动态确定。TRU的铸造和销毁完全由链上智能合约自动管理:

  • 铸造: 用户将ETH存入 Purchase 合约,并以算法价格铸造TRU。
  • 销毁: 用户销毁他们持有的TRU,并以算法价格从合约中提取ETH。

攻击分析

攻击者地址: 0x6C8EC8f14bE7C01672d31CFa5f2CEfeAB2562b50

攻击合约: 0x764C64b2A09b09Acb100B80d8c505Aa6a0302EF2

相关攻击交易:

0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014

  1. 攻击者首先调用 Purchase 合约的 getPurchasePrice 函数,查询铸造 240,442,509,453,545,333,947,284,131 TRU 代币所需的 ETH 数量。由于这个值经过精心设计,价格计算过程中发生了整数溢出,导致函数返回 0

  1. 攻击者随后调用 Purchase 合约的铸造函数 (0xa0296215),传入上述代币数量。由于所需的 ETH 价格被计算为零,攻击者未支付任何 ETH,并成功铸造了 240,442,509,453,545,333,947,284,131 TRU 代币。

  1. 攻击者立即调用 Purchase 合约的 0xc471b10b 函数 (销毁函数),销毁所有新铸造的 TRU 代币,并从合约的储备中赎回 5,105.069 ETH。

  1. 攻击者重复执行上述 “铸造 → 销毁” 循环。随着 TRU 总供应量 ($S$) 的增加,后续的铸造需要少量 ETH,但铸造的代币价值仍然远超过支付的成本,留下了一个显着的套利机会。攻击者持续此过程,直到合约的 ETH 储备被完全耗尽。

攻击机制分析

1. 价格计算公式

通过对 Purchase 合约的逆向工程,我们确定了核心的价格计算函数:

该函数用于计算铸造指定数量代币所需的 ETH 数量。公式如下:

Price = (100 * A² * R + 200 * A * R * S) / ((100 — T) * S²)

其中:

  • A (AmountIn): 用户打算铸造的代币数量
  • R (Reserve): 合约当前持有的 ETH 储备
  • S (Supply): 代币当前的Token总供应量
  • T (THETA): 合约参数,固定为75

2. 漏洞的根本原因

该合约使用 Solidity ^0.6.10 编译。在 Solidity 0.8.0 之前的版本中,算术运算符 (+, -, *) 不包含内置的溢出检查。当计算超过 uint256 的最大值 (²²⁵⁶ − 1) 时,会发生静默溢出,导致结果回绕到接近零的小值。

在价格计算代码的关键部分:

虽然乘法运算受到了 SafeMath 库的保护,但分子中的加法运算 (v12 + v9) 直接使用了原生的 + 运算符,没有溢出保护。这种缺乏验证构成了本次攻击中被利用的核心漏洞。

3. 攻击的量化分析

以攻击者的第一笔铸造交易为例:

计算过程:

溢出判定:

由于 v12 + v9 的结果超过了 uint256 的最大值,因此发生了溢出并回绕。溢出后分子变成了一个极小的值,经过整数除法后,最终计算出的 Price = 0

4. 攻击的影响

通过精心设计 AmountIn 参数,攻击者确保:

  1. 所有乘法运算都通过了 SafeMath 检查(未触发 revert);

  2. 加法运算溢出,导致分子回绕到一个极小的值;

  3. 整数除法的结果变为 0

因此,攻击者能够无需支付任何 ETH 铸造大量代币。

MistTrack 分析

根据链上跟踪和反洗钱工具 MistTrack,在此次事件中,攻击者获利约 8,535 ETH(约 2644万美元)。

被盗的 8,535 ETH 首先被转移到三个新创建的地址,最终全部流入 Tornado Cash

链上记录显示,攻击者的地址在 2025/11/202025/12/062025/12/27 之前有交易记录,主要活动如下:

  • 2025/11/20: 通过 DrainAvalanche 上获取资金,并通过 Rhino.fi 将其桥接到 BNB Chain

  • 2025/12/06:BNB Chain 上,通过 Rhino.fi 将收到的资金桥接到 Ethereum

  • 2025/12/27:Ethereum 上,通过 RUN 获得了 4.98 ETH,怀疑是攻击者发起的先前攻击所得,总共有 5 ETH 被转移到 Tornado Cash

MistTrack 目前已标记了相关地址。

结论

本次攻击的根本原因是Purchase合约价格计算的分子中的加法运算未使用SafeMath库进行溢出保护。由于该合约使用Solidity 0.6.10编译,因此原生+运算符不包含溢出检查。通过精心设计特定的铸造数量,攻击者使加法运算超过了uint256的最大值并回绕,导致Price = 0,从而实现近零成本的代币铸造和套利。

SlowMist安全团队建议,对于使用Solidity 0.8.0以下版本编译的合约,开发人员应确保所有算术运算都使用SafeMath库进行保护,以防止由整数溢出引起的逻辑漏洞。

关于 SlowMist

SlowMist 是一家专注于区块链安全,成立于2018年1月的威胁情报公司。公司由一支拥有超过十年网络安全经验的团队创立,力求成为全球一股重要的力量。我们的目标是尽可能地使每个人的区块链生态系统都安全。我们现在是一家著名的国际区块链安全公司,曾与多个知名项目合作,如HashKey Exchange、OSL、MEEX、BGE、BTCBOX、Bitget、BHEX.SG、OKX、Binance、HTX、Amber Group、Crypto.com等。

SlowMist提供各种服务,包括但不限于安全审计、威胁情报、防御部署、安全顾问和其他与安全相关的服务。我们还提供AML(反洗钱)软件、MistEye(安全监控)、SlowMist Hacked(加密黑客档案)、FireWall.x(智能合约防火墙)和其他SaaS产品。我们与国内外公司建立了合作伙伴关系,如Akamai、BitDefender、RC²、天际伙伴、IPIP等。我们在加密货币犯罪调查方面的广泛工作已被包括联合国安全理事会和联合国毒品和犯罪问题办公室在内的国际组织和政府机构引用。

通过提供为各个项目量身定制的综合安全解决方案,我们可以识别风险并防止其发生。我们的团队能够发现并发布几个高风险的区块链安全漏洞。通过这样做,我们可以传播意识并提高区块链生态系统中的安全标准。

  • 原文链接: slowmist.medium.com/26-4...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
slowmist
slowmist
江湖只有他的大名,没有他的介绍。