本文来自 Coinbase,原文作者:Ethen Pociask & Eric Meng & Nadir Akhtar & Gabriela Melendez Quan & Tom Ryan,由 Odaily 星球日报译者 Katie 辜编译。

如何评估“分叉版EVM”的安全风险?

为了加强对交易 ERC-20 和其他根据智能合约的财物的客户的安全和保管保证,Coinbase 区块链安全团队调查了界说这些财物行为的程序层:以太坊虚拟机(EVM)。在评价修正本身网络的 EVM 的项目时,Coinbase 的区块链安全团队会审查要害的 EVM 更改,以确认修正后的 EVM 是否可以供给与原始 EVM 施行相同的安全和保管保证。

分叉 EVM 现状

到 2023 年 5 月,以太坊虚拟机(EVM)夺得最抢手智能合约履行平台“榜一大哥”头衔。根据 DefiLlama 的数据,总锁仓价值(TVL)排名前 10 位的链中有 9 个支撑 EVM 智能合约。因而,深入了解 EVM 关于支撑整个区块链生态系统中的智能合约至关重要。

EVM 是一种虚拟机,用于在以太坊网络上去中心化履行智能合约。许多兼容 EVM 的区块链在其协议软件中直接运用不同言语的抢手 Ethereum 履行客户端的规范施行方案,如 go-ethereum(Golang)和 besu(Java)。

也就是说,分叉和修正 EVM 实践上在区块链生态系统中非常常见,甚至在首要协议中也是如此。例如,为 Coinbase 的 Base L2 区块链供给“动力”的 Optimism Bedrock Stack 运用了一个名为 op-geth 的 go-ethereum 履行客户端的分叉版别,该版别运转的 EVM 与抢手的以太坊履行客户端兼容。但是,这并不意味着以太坊上的 EVM 与 Optimism 上的 EVM 行为完全相同:op-geth EVM 在某些状况下的行为略有不同(即 DIFFICULTY 回来随机值是由序列器确认的)。

尽管这听起来很可怕,但关于 EVM 的选用来说,一般状况下是有利的。尽管规范 EVM 施行方案针对以太坊根底协议进行了高度优化,但分叉的 EVM 通常会针对自己的新协议进行扩展。因而,合约在某些 EVM 兼容链上的履行方法可能与在以太坊上的履行方法不同,EVM 智能合约行为的安全假定在不同协议之间也可能存在很大差异。

分叉 EVM 安全框架

为此,Coinbase 开发了一个Web3安全框架,用于评价一些分叉 EVM 施行方案中的安全影响。咱们称之为 Coinbase 的分叉 EVM 框架,下面将对其进行详细的解说。

有了这个分叉 EVM 安全框架,Coinbase 可以有效地:

  • 了解咱们的以太坊代币框架的安全假定的无效性,使咱们可以安全地启用新的 EVM 兼容区块链,以便在咱们的去中心化交易所支撑 ERC-20/ERC-721 代币;

  • 为智能合约审计师供给关于分叉 EVM 的智能合约缝隙状况的剖析,特别是跨网络中的细小差异;

  • 确保在 Coinbase 的 Base L2区块链上安全运用和履行 EVM 智能合约。

兼容 EVM 的区块链的安全规范

为了解以太坊虚拟机中的安全危险是怎么存在的,首先要知道规范 EVM 施行方案为咱们供给了哪些保障。咱们将规范 EVM 界说为以太坊履行规范中描述的以太坊验证器履行客户端一致运用的 EVM。到目前为止,最常用的客户端是 go ethereum(即 geth)。

咱们将安全性总结为两个安全规范,它们代表了任何分叉 EVM 施行方案有资历获得 Coinbase 支撑的最低要求。

如何评估“分叉版EVM”的安全风险?

咱们怎么审计 EVM 施行方案的安全危险?

咱们的分叉 EVM 框架在评价是否符合整体安全规范(即合约不变性和安全履行环境)时,首要关注以下审计要求。需要注意的是,以下危险成分并不是分叉 EVM 审计的悉数范围。

修正 EVM 操作码的界说和编码会导致合约履行方法的严重差异。例如,假定一些分叉的 EVM 施行(EVM')将算术 ADD 操作码界说逻辑(x 1 + x 2 )改为减去两个值(x 1 - x 2 )。

如何评估“分叉版EVM”的安全风险?

成果,违背的 EVM '在履行上与规范 EVM 不相等且不兼容。修正操作码的结果可能是有利的行为,比方防止算术操作码中的整数溢出和下溢,也可能是更危险的行为,比方导致本地财物无限铸造的自毁行为。

EVM 运用预编译合约来界说杂乱的功用(如加密函数),运用更便利和功用更强的言语,如 Golang,而不是运用不太容易拜访的 EVM 字节码。

从根本上说,这些是经过节点软件中表明的预订链地址来拜访的编程功用。以太坊黄皮书(到 2023 年 5 月)中界说了 9 个预编译器,对这 9 个预编译器所做的任何更改或引进新的预编译器都需要进行审计。

让咱们再举一个详细的比如——BNB 智能链缝隙。BNB 智能链运用 go-ethereum 的一个违背的施行方案来运转节点。为此,引进了两个新的预编译合约(tmHeaderValidate,iavlMerkleProofValidate),运用第三方软件(即 Cosmos SDK)来履行轻客户端区块验证和 Merkle 证明验证。问题是,Cosmos SDK 软件在其 IAWL 树表明法中有一个施行过错,允许加密无效的证明经过验证。换句话说,任何人都可以随便产生资金。攻击者可以运用嵌套在 iavlMerkleProofValidate 预编译器中的这个施行缝隙,从币安跨链桥中抽走数亿美元。

如何评估“分叉版EVM”的安全风险?

这个运用缝隙的比如是为了展现预编译器安全性的必要性,以及为违背的 EVM 施行引进新的预编译合约所带来的潜在危险。

引进额外的预编译器可能带来的丧命危险包含:

  • 允许一方单方面修正任何已部署合约的状态;

  • 这包含一切存储修正(刺进、更新、删除);

  • 运用不受信赖、未经验证或未经审计的第三方依靠项;

  • 供给对不确认节点内值的拜访。

尽管将编译器和 EVM 视为完全独立的实体,但值得注意的是,Solidity 编译器确实对前三个预编译合约(ecrecover、sha 256 和&ripemd)的行为做出了严厉的假定,这些合约经过 Solidity 言语中的本机言语要害字函数表明。在后台,Solidity 编译器实践大将这些要害字处理成字节码,字节码履行合约间静态调用操作。下图进一步说明了这种合约间的沟通方法。

如何评估“分叉版EVM”的安全风险?

修正规范预编译器会带来的安全危险包含:

  • 允许中心化的交易对手单方面修正任何已部署合约的状态;

  • 这包含一切存储修正(刺进、更新、删除);

  • Solidity 编译器预编译方位假定不一致;

  • 供给对不确认节点内值的拜访;

  • 运用不受信赖、未经验证或未经审计的第三方依靠项。

修正 EVM 基本组成部分所带来的要害危险包含:

  • 不束缚解说器堆栈,使其无限大;

  • 对内存模型进行巨细修正或改变,可能导致非确认性的履行;

  • 绕过拜访操控,允许任意的对手方单方面拜访一切链状态;

  • 运用不受信赖、未经验证或未经审计的第三方依靠联系。

为什么要注重 EVM 安全性?

咱们的目标是建立一个根据区块链技能的敞开金融系统,为此,咱们鼓舞开发各种 EVM 施行方案。但是,为了让兼容 EVM 的区块链得到 Coinbase 的全面支撑,它有必要满意规范 EVM 施行的基本要求。本文希望提高人们对违背 EVM 相关危险的认识,并鼓舞财物发行人在违背 EVM 时优先开发安全组件,提高整个 Web3 生态系统的安全意识。

此时快讯

【SEC就Coinbase内幕交易对Wahi兄弟提起的诉讼达成和解】金色财经报道,美国证券交易委员会 (SEC) 于5月30日宣布,前Coinbase产品经理Ishan Wahi和他的兄弟Nikhil Wahi已同意就美国SEC对他们提出的内幕交易指控达成和解。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注