Cointime

扫码下载App
iOS & Android

用系统性的方法解决EVM的bug

VC

原文链接:Systematic Approach to Maintaining EVM Compatibility and Security 

本文来自:BlockSec  编译:CoinTime Candice

EVM(以太坊虚拟机)兼容区块链旨在与以太坊区块链的智能合约功能、编程语言(Solidity)和工具生态系统兼容。在这个过程中,实现符合EVM的虚拟机是关键步骤之一。然而,在研究过程中,我们发现,在不同的实现中保持对EVM的兼容性并不容易。

为了解决这个问题,BlockSec开发了一个内部系统,可以系统地定位EVM实现中的错误和安全漏洞。这个系统被证明是有效的。它报告了Aurora Engine中的四个错误和Moonbeam中的四个错误的定位。所有这些都已报告并修复。请注意,该测试方法还用于定位去年Solana rbpf实施中的两个关键错误(CVE-2021-46102、CVE-2022-23066)。

1. 背景

如今,人们提出了许多不同的区块链,并在低gas费用、高吞吐量和高性能方面进行了优化。在这种情况下,新的虚拟机或开发语言被提出,这增加了原始实体开发者的转型门槛。在这种情况下,提出了许多与EVM兼容的解决方案,允许用户将他们在solidity中开发的DApp部署在这些新的链上。Aurora和Moonbeam是这些EVM兼容解决方案的代表。然而,这些EVM实现的稳健性、可靠性和精确性是未知的,值得我们关注。为此,我们使用差分模糊技术,并检查实现中是否存在任何缺陷。

2. 差分模糊测试

其基本思想是向这些EVM实现(例如Aurora、Moonbeam)和最先进的以太坊客户端(即geth)提供相同的输入,以检查它们是否具有相同的输出。具体来说,我们收集以太坊上的历史交易,并使用不同的策略改变合约代码和交易状态,以生成测试用例。我们的发现表明,Aurora Engine和Moonbeam在某些情况下不符合规范。幸运的是,所有报告的问题都得到了解决,现在我们将分享细节。

3. 发现错误

这些错误大多存在于预编译的合约中,其根本原因和影响是多方面的。例如,一些错误可能会影响nonce值的计算,而另一些可能影响gas的计算,并可能进一步导致DoS攻击。所有发现的错误都违反了EVM规范的指定执行逻辑,并可能在特定情况下导致意外行为。请看下面对所发现的错误的详细描述。

3.1 验证不当

加密逻辑是复杂的。在这种情况下,在EVM字节码中实现相应的逻辑可以产生相当大的gas用量。相反,在本机代码中开发的预编译合约可以提高性能。然而,由于验证不当,我们在预编译的合约中发现了几个错误。

Aurora Engine:ecPairing

这个错误是在预编译的合约ecPairing中发现的。

ecPairing的输入由两条椭圆曲线上的多个点组成。根据规范,点(0,0)位于两条曲线上,应为有效输入:

但是,如果输入中包含点(0,0),Aurora Engine(2.7.0版)将恢复。

Moonbeam: ecMul

这个错误出现在预先编译的合约ecMul中。与Aurora Engine不同,Moonbeam在输入有效时还原交易。根据规范,当输入的长度小于64时,预编译的合约ecMul应该用零填充输入。但是,Moonbeam会还原,而不是进行填充操作。

我们还发现,预编译的合约ecAddmodexp有同样的问题。

Moonbeam: ecRecover

这个错误出现在预编译的合约ecRecover中,该合约用于恢复以太坊地址。

根据规范,输入[32..63]v表示U256标识符,它应该是27或28,否则ecRecover不应返回任何内容(但不应该还原整个交易)。

然而,Moonbeam在这里犯了两个错误:

  • 它只检查输入[63],而不是将输入[32..63]转换为U256类型,然后检查值。
  • 当标识符为0或1时,输入被视为有效(应仅为27或28)。

Moonbeam: ecPairing

这个错误出现在预编译的合约ecPairing中。当输入无效时,Moonbeam不会恢复交易。根据规范,预编译的合约ecPairing的输入应该是192的倍数。否则,交易应该被退回。

然而,当上述要求不符合时,Moonbeam不会恢复交易。

3.2 Gas计算不正确

每个预编译合约都有一个算法来确定gas的使用量。不正确的gas计算可能会导致DoS攻击。

然而,我们在Aurora Engine和Moonbeam中都发现了两个错误,即gas计算不正确。

Aurora Engine: modexp

这个错误出现在预编译的合约modexp中。计算gas使用量的算法由EIP-2565定义。Gas使用量与迭代次数有关。

计算迭代次数的算法如下。

根据上述算法,迭代次数至少是1。然而,Aurora Engine直接返回iteration_count,而不是max(iteration_coount,1)。在这种情况下,返回的值(即iteration_count)可以是0,这意味着在特定情况下,Aurora将收取比预期更少的gas费用。

Moonbeam: modexp

这个错误也出现在预编译的合约modexp的函数calculate_iteration_count中。但它是在Moonbeam中发现的。

exponent_length大于32时,iteration_count的计算方法如下。

请注意,它使用了exponent&(2**256-1),这需要exponent的最低32个字节,Moonbeam的实现也遵循了这种算法。

然而,根据规范,gas计算公式应使用最高32字节的exponent

3.3 Nonce增量错误

一个外部拥有的账户(EOA)的nonce表示这个地址所签署的成功交易的数量。然而,我们注意到,可以通过在Aurora Engine上发送无效交易来增加nonce。

根据EIP-1559,在执行交易之前,EVM应该确保签署者有足够的余额来支付转移的本地代币(如ETH)和所需的gas。否则,该交易应被放弃,签署者的nonce也不应增加。

虽然Aurora Engine在这种情况下会放弃交易,但它仍然会增加签署者的nonce。

3.4 操作码实现不正确

这个错误是关于特定操作码(即PUSH)的实现。当PUSH操作码后面的字节不完整时,它们应该是右对齐的。例如,字节码0x64ffff可以被解码为:

由于操作数应该是右对齐的,值0xffff000000应该被推入堆栈。然而,Aurora Engine和Moonbeam中的EVM实现却推送了0xffff,这是不正确的。

4. 我们的服务

在BlockSec,我们了解在不同的区块链实施中保持EVM兼容性和安全性的重要性。这就是为什么我们开发了一种系统的错误检测方法,可以轻松定位EVM实现中的漏洞。

我们的内部系统已被证明在定位EVM实现中的漏洞和安全漏洞方面非常有效。它已经成功报告并修复了Aurora Engine中的四个错误和Moonbeam中的四个错误。此外,我们的测试方法用于定位去年Solana rbpf实施中的两个关键漏洞(CVE-2021-46102、CVE-2022-23066),突出了我们方法的有效性。

通过实施我们的系统性漏洞检测方法,我们的客户可以确信他们的EVM实施是安全和可靠的。我们致力于为EVM的兼容性和安全性提供一流的解决方案,帮助我们的客户与他们的用户和利益相关者建立信任。

关于BlockSec

BlockSec团队专注于区块链生态系统的安全,并与领先的DeFi项目合作以确保其产品的安全。该团队由来自学术界和工业界的顶尖安全研究人员和经验丰富的专家组成。他们在著名会议上发表了多篇区块链安全论文,报告了几起DeFi应用程序的零日攻击,并发布了高影响安全事件的详细分析报告。

*本文由CoinTime整理编译,转载请注明来源。

评论

所有评论

推荐阅读

  • 智谱预告GLM-5.1将开源

    据 1M AI News 监测,智谱 Z.ai 全球负责人李子玄在 X 上发文:「Don't panic. GLM-5.1 will be open source.」(别慌,GLM-5.1 将会开源。)未透露发布时间及模型细节。

  • Claude Code上线云端定时任务:自动审PR、升级依赖,无需本地运行

    据 1M AI News 监测,Anthropic 旗下 AI 编程工具 Claude Code 新增云端定时任务功能。用户可指定代码仓库、执行计划和提示词,Claude 将通过云端基础设施按计划自动执行,无需保持本地 Claude Code 运行。从产品界面看,用户可通过 Web 端配置定时任务,也可在已有会话中输入 /schedule 命令创建。示例任务包括每日自动审查所有开放 PR、标记超过两天无人处理的 PR、每周一自动升级补丁级依赖并提交 PR、每晚重跑失败的 CI 任务并为反复失败的用例建 ticket。

  • 美股三大指数收跌,加密货币概念股普跌

    3 月 21 日,据 Bitget 行情数据,美股低开低走,道指收跌 0.97%,标普 500 指数收跌 1.51%,纳指跌 2.01%。超微电脑 (SMCI.O) 跌超 33%,英伟达 (NVDA.O) 跌 3.2%,美光科技 (MU.O) 跌 4.8%。加密货币概念股方面,MSTR 跌 1.87%;COIN 跌 2.67%,CRCL 跌 1.79%;SBET 跌 3.65%;BMNR 跌 0.95%。

  • 特朗普:正考虑逐步降级对伊朗的军事行动

    3 月 21 日,美国总统特朗普发文表示,随着他们考虑逐步降级在中东针对伊朗政权所开展的各项重大军事行动,他们已非常接近实现既定目标:1. 彻底削弱伊朗的导弹能力、发射装置及所有相关设施。2. 摧毁伊朗的国防工业基础。3. 消灭伊朗海空军力量,包括防空武器系统。4. 绝不允许伊朗哪怕是接近拥有核能力;同时,美国必须始终保持一种态势,以便一旦出现此类情况,能够迅速且强有力地予以反击。5. 以最高级别的力度,保护美国在中东的盟友,包括以色列、沙特阿拉伯、卡塔尔、阿拉伯联合酋长国、巴林、科威特及其他国家。特朗普称,霍尔木兹海峡的守卫与巡航工作,应在必要时由其他使用该海峡的国家来承担,美国将不再承担此责任。若受邀协助,美国愿为这些国家在霍尔木兹海峡的行动提供支持,但一旦伊朗的威胁被彻底消除,此类协助便将不再必要。尤为重要的是,对于这些国家而言,这将是一次轻而易举的军事行动。

  • 美国防部已为在伊部署地面部队做好详细准备

    3 月 21 日,据美国哥伦比亚广播公司报道,多位听取了相关简报的消息人士透露,美国国防部官员已为向伊朗部署美国地面部队做好了详细准备。消息人士称,随着特朗普正在权衡由美以主导的对伊冲突中的行动方案,高级军事指挥官已提交了旨在为此类选项做准备的具体请求。消息人士表示,特朗普一直在审议是否在该地区部署地面部队。目前尚不清楚他在何种情况下会授权动用地面部队。周四,当在椭圆形办公室被问及地面部队问题时,他告诉记者:「不,我不会在任何地方部署军队,」但他随即补充道:「如果我要部署,也肯定不会告诉你。」两名消息人士称,军方还举行了会议,准备应对如果特朗普决定派遣美国地面部队,该如何处理行动中可能扣押的伊朗士兵和准军事行动人员,包括这些伊朗人将被送往何处。(金十)

  • 特朗普:目前不想停火,霍尔木兹海峡会自动开放

    3 月 21 日,特朗普最新表示,他可以与伊朗进行对话,但目前不想停火,并表示尽管盟友不愿提供协助,但他有信心霍尔木兹海峡将在某个时间点「自动」重新开放。特朗普周五在白宫称:「你要知道,当你正彻底歼灭对方时,你是不会停火的。北约本可以帮助我们,但到目前为止他们还没有这份勇气。其他人也可以帮忙,但我们并没有指望他们。」谈及霍尔木兹海峡,特朗普再次表示:「我们不需要它。是欧洲需要它,韩国、日本以及许多其他国家都需要它,所以他们在那个问题上必须得参与进来。」特朗普还说,到了一定程度,霍尔木兹海峡会自动开放。谈到国内民调,特朗普表示:「CNN 今天发布了一项民调,我的支持率达到了 100%。」(金十)

  • Hugging Face CEO:中国开源正在成为塑造全球AI技术栈的最大力量

    据 1M AI News 监测,Hugging Face 联合创始人兼 CEO Clément Delangue 就 Cursor Composer 2 以 Kimi K2.5 为基座一事发表评论,称此事印证了三点判断:- 开源始终是竞争最大的推动力- 中国开源「如今是塑造全球 AI 技术栈的最大力量」- 前沿竞争不再只是谁从头训练,而是谁适配、微调、产品化得最快(他以 OpenClaw 为例)

  • 更新:Cursor官方确认Kimi K2.5为基座,月之暗面:使用经过授权商业合作

    据 1M AI News 监测,月之暗面官方账号 @Kimi_Moonshot 发文祝贺 Composer 2 发布,并说明:「Cursor 通过 Fireworks AI 托管的 RL 与推理平台访问 Kimi K2.5,属于授权商业合作。」Kimi 官方声明发出后,Cursor 联合创始人 Aman Sanger 和开发者教育副总裁 Lee Robinson 先后公开确认基座来源,并披露更多技术细节。Sanger 称团队对多个基座进行了困惑度评测,Kimi K2.5「证明是最强的」,随后叠加继续预训练和 4 倍规模的高算力强化学习,并通过 Fireworks AI 的推理与 RL 采样器进行部署。Robinson 补充,最终模型中来自基座的算力约占 1/4,其余 3/4 来自 Cursor 自身训练。Robinson 转引 Kimi 官方推文,表示月之暗面已确认使用符合许可证要求。Sanger 与 Robinson 均承认,发布博客时未提及 Kimi 基座「是一个失误」,表示下一个模型发布时会在第一时间注明基座来源。此前相关争议迅速在社交媒体上发酵,Elon Musk 也在 @fynnso 的帖子下回复「Yeah, it's Kimi 2.5」,进一步放大了话题热度。

  • James Wynn使用Hyperliquid邀请奖励40倍做空BTC

    3 月 21 日,据 Onchain Lens 监测,James Wynn 从 Hyperliquid 领取 5565 美元奖励,随后开设 40 倍杠杆 BTC 空单,入场价 69959 美元。

  • Strategy CEO:摩根士丹利若将2%资管规模配置BTC或给市场带来巨额买盘

    3 月 21 日,Strategy 首席执行官 Phong Le 在 X 平台发文表示,摩根士丹利旗下财富业务资产管理规模约为 8 万亿美元,其推荐的比特币配置比例区间为 0–4%,若按 2% 配置计算,意味着将给加密市场带来约 1600 亿美元潜在买盘,规模将是现有贝莱德比特币交易所交易基金 IBIT 规模的三倍。Phong Le 形容这类潜在需求为「Monster Bitcoin」,意指比特币市场将迎来巨额买盘,可能对价格和流动性产生显著影响。