SpecTrum: Specification-Guided Differential Fuzzing for Ethereum Consensus Clients
SpecTrum 是一个通过将共识规范机械化以明确定义有效性条件、测量前提覆盖范围以识别未测试场景,并生成成功揭露了 27 个跨客户端分歧案例的针对性输入,从而防止以太坊共识客户端分歧的框架。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
在以太坊的数字世界中,一个庞大的计算机网络协同工作,以维护一个安全且准确的共享账本。这个系统依赖于一个被称为“共识”的原则:为了让网络正常运行,每个运行该软件的独立计算机都必须对添加到链上的每一条新数据的确切结果达成一致。为了确保这种一致性,开发者使用各种编程语言编写了不同版本的软件,希望如果其中一个版本出现了错误,其他版本能够将其发现。然而,如果所有版本都不约而同地犯了同样的错误,或者它们对规则的理解略有偏差,网络就可能发生分裂,导致混乱、奖励丢失或运营完全停滞。管理这种行为的规则被写在一份详尽的技术文档中,但由于这些规则通常是以计算机代码而非简单的条件列表来描述的,因此很难准确知晓有效性的边界究竟在哪里。
一组研究人员开发出一种新方法,旨在寻找这些隐藏的边界,并确保不同版本的以太坊软件能够相互达成一致。他们创建了一个名为 SpecTrum 的工具,它充当了一个“翻译器”,将以太坊协议中复杂且隐性的规则转化为一套清晰、显性的、计算机可以进行系统性检查的条件集。该工具不再是猜测错误可能发生的地方,而是绘制出一张涵盖所有规则可能被破坏之可能场景的地图,包括数值过大导致计算机无法处理的情况,或是数据列表缺失预期条目的情况。通过利用这张地图,研究人员生成了数千个特定的测试用例,旨在将软件推向极限,从而揭示出标准测试方法未能发现的缺陷。
研究人员将该工具应用于五个主要的以太坊共识软件版本,这些版本使用不同的编程语言编写,并在全球范围内被数以千计的节点使用。他们的调查发现了二十七个明显的案例,在这些案例中,这些独立的程序在如何处理特定输入方面存在分歧。在某些情况下,程序接受了相同的数据,但计算出了不同的最终结果,这种隐性错误最终可能导致网络分裂。在另一些情况下,软件在面对异常但有效的输入时会完全崩溃。至关重要的一点是,这二十七个错误中的二十二个,如果没有研究人员这种使规则显性化的新方法,是无法被发现的。研究表明,传统的测试方法依赖于“代码覆盖率”来观察程序被执行了多少,却未能检测到这些问题,因为这些错误发生在规则如何应用的微妙逻辑层面,而非代码本身的可见结构之中。
团队还发现,这些错误并非孤立存在于单一的软件版本中。由于核心逻辑在不同版本的以太坊网络更新中是共享的,这二十七个错误在针对更新版本的协议进行测试时也一致地出现了。这表明,只要对底层规范进行一次性的修复,就能防止这些问题在网络未来的所有版本中再次出现。研究人员已将所有二十七项发现报告给了以太坊安全团队,目前正在审核中。这项工作证明了,通过将模糊、隐性的规则转化为清晰、可测试的条件,可以在深层的不一致性造成现实世界的损害之前将其发现并修复,从而确保数字网络保持稳定与可靠。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。