ethrex 完成首次外部安全审计

lambdaclass 发布于 2026-06-19 阅读 80

以太坊执行客户端 ethrex 完成了首次外部安全审计(由 Least Authority 进行),审计覆盖了 EVM 实现、智能合约、排序器、证明器等核心组件,发现 20 个问题与 8 项建议。所有确认的漏洞均已修复并通过验证。ethrex 代码约 10 万行,已在以太坊主网运行,被多个验证者采用,并支持 ZK-rollup 模式。文章详细介绍了审计过程、问题分类及修复方法。

ethrex(我们的以太坊执行客户端)已完成首次外部安全审计。Least Authority 于 2026 年 1 月至 5 月对客户端进行了审查,发现了 20 个问题和 8 条建议。最终报告于 5 月 4 日交付,证实每个问题均已得到处理。两份报告均已发布在代码仓库中。

ethrex 是什么

ethrex 是用 Rust 编写的以太坊协议的最小化实现。它运行在两种模式下:作为以太坊主网的执行客户端,或者作为 ZK-rollup 堆栈——同一客户端对 L2 进行排序,并在你选择的 zkVM(SP1、RISC Zero、ZisK、OpenVM)或 TEE 上证明区块执行。从一开始,我们就构建了核心执行引擎,使其可以在两个地方运行:在跟踪链时原生运行,以及在证明区块时在 zkVM 内部运行。

我们围绕一个核心理念构建了 ethrex:简洁。该客户端大约有 10 万行 Rust 代码,而成熟的客户端超过 50 万行。我们尽量减少依赖,避免在有必要之前引入抽象,并跳过推测性功能。我们的工程哲学涵盖了其中的原理。

代码规模也决定了审计能覆盖的范围。外部审查人员可以端到端地阅读此客户端,他们也确实这样做了。对于五倍大的代码库,同样的审查只能覆盖一小部分。

审计

Least Authority 是一家安全咨询公司,以审查密码协议和分布式系统而闻名。一个由五名安全和密码学研究人员组成的团队花费了三周时间审查 ethrex v9.0.0,涵盖了 LEVM(我们的 EVM 实现)、智能合约、排序器、证明器及其 zkVM 后端、网络和 RPC 层,以及我们加密库中手写的 Keccak 和 Blake2 汇编代码。

初始报告列出了 20 个问题和 8 条建议。我们修复了这些发现,Least Authority 在交付最终报告前逐一验证了每个修复。验证针对的是 v11.0.0,比审计时的版本高出两个大版本:客户端在审计期间持续发布,审计人员针对当前代码检查了修复。

最终报告统计如下:

严重程度 问题数 最终状态
9 8 已解决,1 非问题
7 5 已解决,2 非问题
3 3 已解决
未确定 1 1 已解决

在 8 条建议中,5 条已解决,3 条仍在进行中(涉及测试覆盖率、代码注释和证明器代码质量)。

问题集中在区块验证边界情况、交易最终确定的原子性、证明管道的活性以及汇编代码中的输入处理。

报告将代码描述为“组织良好且易于浏览”,将虚拟机描述为“编写良好且推理清晰”,并将范围描述为“包含了所有安全关键组件”。报告也称我们的测试覆盖率不足。这一批评是合理的,并影响了修复方案:每个修复都附带了回归测试,虚拟机边界情况和合约不变量的测试覆盖率也在持续增长。

我们如何处理审计发现

每个发现都有公开的回应。验证回应文档将每个问题映射到修复它的 Pull Request,因此你可以查看上表中每个“已解决”项对应的代码变更。

一些修复超出了报告的要求范围。Blake2 和 Keccak 汇编中的两个发现实际上不可达,因为 Rust 调用方会在汇编运行前验证输入。但我们仍然加强了汇编代码;即使未来调用方跳过验证,它也能保持安全。

对于三个发现,我们提出了异议。我们引用了以太坊执行规范和客户端的行为,认为设计是合理的,审计人员也同意:最终报告将它们标记为非问题。我们修复了每个确认的错误,并在存在分歧时提供了证据。

我们还更新了由 cargo audit 标记的依赖项。一个传递依赖仍存在于建议列表中:该漏洞代码路径仅接收编译时常量,回应页面记录了其影响为零的原因。

安全工作在最终报告之后继续进行。客户端在 CI 中运行以太坊基金会的执行规范测试,并且在修复过程中开始的回归测试套件也在持续增长。

ethrex 的现状

ethrex 已可用于生产环境:

  • 在主网上。它目前作为以太坊主网的执行客户端运行,在适中的硬件上同步:4-8 核、32 GB RAM 和 1 TB NVMe 磁盘。
  • 由运营商运行。质押运营商在生产环境中运行 ethrex,其中包括 SerenitaStakelyRockLogic,以及 Obol Collective 中的分布式验证器集群。
  • 由家庭质押者运行eth-docker(EthStaker 社区的节点栈)内置了对 ethrex 的支持。
  • 与网络其他部分一样经过测试。它在 CI 中运行以太坊基金会的执行规范测试和跨客户端 hive 套件,每日生成报告。
  • 证明以太坊。它通过多个 zkVM 后端在 Ethproofs 上证明主网区块。
  • 作为 ZK L2 堆栈运行。它包含排序器、证明器和桥接合约。
  • 随协议一起升级。它已经运行在 Glamsterdam(下一次网络升级)的开发网络上,我们与其他客户端团队一起在那里实现和测试即将到来的 EIP。

以上大部分成就并非我们单方面完成:其他团队的利益依赖于 ethrex,社区工具内置了它,用于把关所有客户端的相同测试套件和开发网络也用于把关这个客户端。以太坊的韧性依赖于独立的实现,clientdiversity.org 已经将 ethrex 列为稳定选择之一。

Ethereum on ARM(将 ARM 板变成完整以太坊节点的项目)在 Obol Collective 分布式验证器集群中运行了 ethrex 一个月,并在 X 平台上写道:

对 ethrex 执行层客户端印象深刻:500 GB 数据库,极低的 CPU 负载,坚如磐石的稳定性。[...] 它是一个已同步的完整节点。我们用它进行质押,因此它功能完整。

阅读报告

你可以在 ethrex GitHub 仓库中找到官方报告和回应:

也可以在 Least Authority 网站 上找到。

要运行节点,请从入门指南开始。欢迎在 GitHubTelegramX 上提出问题和反馈。

  • 原文链接: blog.lambdaclass.com/eth...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论