今日运势评分

5

本月运势

丁丑月

震荡偏多

甲庚相冲,子水为财
己不破券二比并亡
亥不嫁娶不利新郎

纳采,订盟,祭祀,祈福,求嗣,斋醮,沐浴,进人口,会亲友,入学,治病,安碓磑,掘井,开池,纳畜,牧养,造畜稠

嫁娶,合帐,入宅,行丧,安葬

月相

既朔

冲顶回落

日冲

Powered by RitMEX

PEPE0.00 1.03%

SUI4.14 3.96%

TON4.83 -1.98%

TRX0.25 3.16%

DOGE0.33 -1.26%

XRP3.08 -0.82%

SOL237.19 -0.98%

BNB677.59 0.09%

ETH3240.33 1.68%

BTC104270.52 -0.80%

ETH Gas1.22 Gwei

贪婪
70

BitsLab 旗下 TonBit 发现 TON VM 核心漏洞:漏洞根本原因以及缓解措施详细阐述

本报告详细分析了 TON 虚拟机中存在的核心 DoS 漏洞的技术细节、根本原因及其可能的攻击方式,同时展示了 TonBit 团队提出的高效解决方案。

近期,TON 网络的虚拟机系统迎来了一次重大安全升级。BitsLab 旗下的安全团队 TonBit 成功发现并协助修复了一个可能导致 TON 虚拟机资源耗尽的核心漏洞。这一漏洞利用虚拟机在处理 Continuation 嵌套时的递归机制,可能被恶意合约滥用,造成系统崩溃和网络不稳定。

如果该漏洞被恶意利用,不需要消耗一个 TON,就可能让所有验证节点宕机,直接威胁网络的可用性。在此次事件中,TonBit 凭借其出色的技术能力快速定位漏洞,并通过调整虚拟机的内部控制流机制,提出了以迭代替代递归的创新解决方案,成功为 TON 用户打造了一个更加安全的生态环境。TON 官方团队在其最新的更新公告中特别致谢 TonBit 对生态安全的卓越贡献。

在以下这份详细的安全报告中,我们将深入剖析此次漏洞的成因、技术细节及解决方案。报告详细描述了漏洞如何利用 Continuation 的深度嵌套构建触发资源耗尽攻击的递归链条,以及恶意合约如何通过扩展调用栈来耗尽主机的栈空间。同时,我们还将介绍 TonBit 团队如何通过消除递归链条的设计缺陷,改用协作迭代机制,协助彻底解决这一问题。此次修复不仅显著提升了 TON 网络的稳定性,还为区块链行业的底层安全提供了重要参考。

案例研究:TON VM中的DoS漏洞及相关缓解措施

简介

本报告描述了TON虚拟机中的一个 DoS(拒绝服务)漏洞以及解决该问题的缓解措施。该漏洞是由于虚拟机在合约执行过程中处理Continuation嵌套的方式引起的。该漏洞允许恶意合约通过创建Continuation,并以特定方式进行深度嵌套,从而在评估过程中触发深层递归,耗尽主机的栈空间并使虚拟机停止运行。为了缓解该问题,虚拟机对Continuation和控制流的处理进行了修改。现在,虚拟机不再通过Continuation链进行顺序尾调用,而是主动迭代链条。这种方法确保了只使用恒定的主机栈空间,防止栈溢出。

概要

根据官方文档,TON VM是一个基于栈的虚拟机,采用Continuation-Passing Style(CPS,Continuation传递风格)作为其控制流机制,用于内部流程和智能合约。控制流寄存器对合约是可访问的,从而提供了灵活性。

TVM中的Continuation理论上可以分为三类:

  • OrdCont(即vmc_std),包含需要执行的TON ASM片段,是TVM中的一级对象。合约可以在运行时显式创建它们并传递,以实现任意的控制流。

  • 非普通Continuation(Extraordinary continuations),通常包含OrdCont作为组件,通过显式迭代原语和特殊隐式操作创建,用于处理相应的控制流机制。

  • 额外的ArgContExt,封装其他Continuation以保存控制数据。

在合约执行过程中,虚拟机进入主循环,每次解码合约片段的一个字,并将相应的操作分派到合适的处理程序。普通处理程序在执行相应操作后立即返回。

相对而言,迭代指令会使用提供的Continuation作为组件创建一个非普通Continuation,并在适当的上下文中跳转到非普通Continuation。非普通Continuation本身在跳转时实现逻辑,并根据条件跳转到某个组件。例如,使用WHILE指令时,我们可以在图1中演示这一过程(省略了可能的跳出)。

图1:非普通Continuation逻辑

根本原因

在存在漏洞的虚拟机版本中,这些跳转会导致连续的动态尾调用,这要求主机栈为每次跳转维护一个栈帧(如图2所示)。

以WhileCont为例,其他部分为简洁起见省略。

图2:三重跳转递归以深入嵌套

理想情况下,这不会构成问题,因为组件通常表示为OrdCont,其跳转只会保存当前上下文,然后指示虚拟机执行它所持有的片段,先于剩余的合约片段执行,并不会引入更多递归。然而,非普通Continuation在理论上设计允许其组件通过TVM中的cc(c0)寄存器(即上文的set_c0分支)访问。因此,合约可以滥用此功能来执行深度递归(稍后描述)。相比于更改此常规功能的实现,直接在非普通Continuation的跳转过程中消除递归更为清晰且容易。

通过反复使用已获得的非普通Continuation来构建上一级的非普通Continuation,可以通过迭代创建一个深度嵌套的Continuation。这些深度嵌套的Continuation在评估时,可能会耗尽主机的可用栈空间,导致操作系统发出SIGSEGV信号并终止虚拟机进程。

图3提供了嵌套过程的概念验证(PoC)。

图3:嵌套过程

我们看到每次迭代中,主体都扩展了一个WhileCont{chkcond=true}。通过执行上一次迭代中生成并保存的cc,会得到一个类似这样的调用栈:

可以看出,栈空间与嵌套级别(即迭代次数)呈线性依赖关系,这表明可能会导致栈空间耗尽。

关于在实际环境中的利用

在实际的区块链中,燃料费限制使得恶意合约的构建相当困难。由于嵌套过程的线性复杂性(TVM设计有效地防止了通过自引用进行更廉价的构建),开发出实际可行的恶意合约并非易事。具体来说,一层嵌套会生成一个调用序列,在调试二进制文件中消耗三个主机栈帧(320字节),而在发布二进制文件中消耗两个(256字节,后两个调用内联为一个)。对于运行在现代POSIX操作系统上的验证节点,默认栈大小为8MiB,这足以支持发布二进制文件中超过30,000层的嵌套。尽管仍然可以构建一个能够耗尽栈空间的合约,但这比上一节的示例要困难得多。

缓解措施

该补丁修改了在Continuation嵌套情况下跳转的行为。我们可以看到Continuation跳转的签名发生了变化。

以 UntilCont为例,其他部分为简洁起见省略。

不再调用 VmState::jump来跳转到下一个Continuation,这意味着在每个Continuation上递归执行三重跳转并等待返回值向后传播。现在,Continuation跳转仅解析Continuation的下一级,然后将控制权交还给虚拟机。

虚拟机通过协作的方式迭代解析每一层级的 continuation,直到遇到一个 NullRef,表明链的解析已完成(如在 OrdCont或 ExuQuitCont中实现)。在这一迭代过程中,主机栈上始终只分配一个 continuation 跳转,从而保证栈的使用保持恒定。

结论

对于需要高可用性的服务,递归的使用可能成为潜在的攻击向量。在涉及用户定义的逻辑时,强制递归终止可能具有挑战性。此DoS漏洞展示了在资源受限情况下(或其他限制条件下)正常功能被意外滥用的极端案例。如果递归依赖于用户输入,类似问题可能会发生,这在虚拟机的控制流原语中十分常见。

本报告详细分析了 TON 虚拟机中存在的核心 DoS 漏洞的技术细节、根本原因及其可能的攻击方式,同时展示了 TonBit 团队提出的高效解决方案。通过将虚拟机的递归跳转机制调整为迭代处理,TonBit 成功提出了修复漏洞的解决方案,协助修复了这一可能导致网络瘫痪的核心漏洞,为 TON 生态提供了更加稳健的安全保障。本次事件不仅体现了 TonBit 在区块链底层技术安全领域的深厚积累,也展现了其作为 TON 官方 Security Assurance Provider (SAP)的重要角色。

作为 TON 生态不可或缺的安全合作伙伴,TonBit 始终在保护区块链网络稳定性和用户资产安全方面走在行业前沿。从漏洞发现到解决方案设计,TonBit 凭借其强大的技术能力和对区块链发展的深刻理解,为 TON 网络的长期发展奠定了坚实基础。同时,TonBit 团队也在网络安全架构、用户数据保护以及区块链应用场景的安全性提升等领域持续发力。未来,TonBit 将继续以创新驱动安全技术进步,为 TON 生态以及整个区块链行业的健康发展提供源源不断的支持和保障。这次漏洞发现以及协助修复工作获得了 TON 官方的高度认可,进一步巩固了 TonBit 在区块链安全领域的行业地位,也展现了其对推动去中心化生态发展的坚定承诺。

TonBit 官网:https://www.tonbit.xyz/

TonBit 官方Twitter:https://x.com/tonbit_

Telegram:https://t.me/BitsLabHQ

Linkedin: https://www.linkedin.com/company/tonbit-team/

Blog: https://www.tonbit.xyz/#blogs

Telegram 审计需求联系:@starchou

欢迎加入深潮TechFlow官方社群

Telegram订阅群:https://t.me/TechFlowDaily
Twitter官方账号:https://x.com/TechFlowPost
Twitter英文账号:https://x.com/DeFlow_Intern
作者TonBit@tonbit_
相关文章
2025.01.30 - 21 小时前
Plume Network与RWA.xyz达成整合,实现真实世界资产数据实时分析
在Plume主网上线后,其网络将被纳入RWA.xyz平台支持的24条区块链之一。
2025.01.29 - 前天
Enso Shortcuts Berachain 的 Boyco 启动提供 22 亿美元的结算基础设施
Enso 的区块链快捷方式使开发者能够更快、更轻松地创建应用程序,将创意转化为现实,免受干扰。
2025.01.29 - 前天
Arcanum Ventures 为什么支持 Spheron?
Spheron 正在开发并推出基础设施,以简化全球范围内 GPU 和 CPU 资源的供应。
2025.01.28 - 3 天前
起底 DeepSeek,为什么 DeepSeek 偏爱没有工作履历的年轻人?
没有工作履历,DeepSeek是如何选人的?答案是,看潜力。
2025.01.27 - 4 天前
Story:唯一连续三轮由 a16z 领投的 Layer 1 区块链,正在突破 AI 最大瓶颈
随着知识产权逐渐成为 AI 经济的核心“货币”,Story 的目标是让其资产化基础设施成为行业的标准。
2025.01.27 - 4 天前
PolyFlow PayFi 用例:通过区块链优化供应链金融
本文旨在分析全球贸易供应链中的融资需求,并探讨区块链和代币化技术如何应对这些挑战。
2025.01.27 - 4 天前
PolyFlow PayFi 用例:为 DePIN 网络构建的创新 PayFi 解决方案
在这个用例中,PolyFlow突破了传统仅向机构提供信贷的限制,促进机构信贷直接流向项目个人用户。
2025.01.27 - 4 天前
PolyFlow PayFi 用例:解锁无缝跨境支付,革新银行与商户的游戏规则
PolyFlow 代表了跨境支付的下一步演进。
2025.01.26 - 5 天前
漫长的季节,BNB 穿越过周期
在 AI、公链等技术术语之外,BNB Chain 依然在探索更多的可能性。
2025.01.26 - 5 天前
我在 Project89 内看到下一代 Agent 框架
Project89 采用了一种全新的方式来设计针对游戏开发的高性能 Agent Framework。