您好,欢迎您来到林间号!
官网首页 小额贷款 购车贷款 购房贷款 抵押贷款 贷款平台 贷款知识 手机租机

林间号 > 区块链 > 如何评估“分叉版EVM”的安全风险?

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

区块链 岑岑 本站原创

本文来自比特币基地,原作者:Ethan Pociask & amp;孟志伟& amp纳迪尔阿赫塔尔& amp加布里埃拉梅伦德斯泉& amp汤姆·瑞恩,由《今日星球》的译者凯蒂·库编译。

为了加强对基于智能合约交易ERC-20和其他资产的客户的安全和托管保障,比特币基地区块链安全团队调查了定义这些资产行为的程序层:以太坊虚拟机(EVM)。在评估修改其自身网络的EVM的项目时,比特币基地的区块链安全团队将审查关键的EVM变更,以确定修改后的EVM是否能够提供与最初的EVM实施相同的安全性和托管保证。

分叉EVM现状截至2023年5月,以太坊虚拟机(EVM)在最受欢迎的智能合约执行平台中获得“Top One”称号。根据DefiLlama的数据,总锁定价值(TVL)排名前10的连锁店中有9家支持EVM智能合约。因此,对EVM的深入理解对于支持整个区块链生态系统中的智能合约至关重要。

EVM是一个虚拟机,用于在以太网中执行智能合同。很多EVM兼容的区块链直接在其协议软件中使用流行的不同语言的以太坊来实现客户端的标准实现,比如go-ethereum(Golang)和besu(Java)。

换句话说,分叉和修改EVM实际上在区块链生态系统中非常普遍,甚至在主要协议中也是如此。例如,为比特币基地的L2·区块链基地提供“动力”的Optimi基岩堆栈使用名为op-geth的go-ethereum执行客户端的分叉版本,它运行与流行的以太坊执行客户端兼容的EVM。但是,这并不意味着以太坊上的EVM和Optimi上的完全一样:op-geth EVM的行为在某些情况下略有不同(即难度返回的随机值由sequencer决定)。

虽然这听起来很可怕,但它通常有利于EVM的采用。尽管标准的EVM实现对以太坊的基本协议进行了高度优化,但分叉的EVM通常会扩展自己的新协议。因此,一些EVM兼容链中的契约执行方式可能与以太坊中的不同,EVM智能契约行为的安全假设也可能在不同协议间有很大差异。

分叉的EVM安全框架为此,比特币基地开发了一个Web3安全框架来评估一些分叉的EVM实现的安全影响。我们称之为比特币基地的分叉EVM框架,这将在下面详细解释。

有了这一分为二的EVM安全框架,比特币基地可以有效地:

理解我们以太坊令牌框架的安全性假设的无效性,以便我们可以安全地使新的EVM兼容的区块链在我们的去中心化交换中支持ERC-20/ERC-721令牌;

向智能合同审计员提供分叉EVM的智能合同漏洞的分析,尤其是跨网络的小差异;

确保EVM智能合同在比特币基地L2区块链基地的安全使用和执行。

区块链兼容EVM的安全标准为了了解以太坊虚拟机中的安全风险是如何存在的,我们首先要知道标准EVM实现方案为我们提供了什么保障。我们将标准EVM定义为以太坊执行规范中描述的以太坊验证器客户端一贯使用的EVM。到目前为止,最常用的客户端是go ethereum (geth)。

我们将安全性总结为两个安全标准,这两个标准代表了任何分叉EVM实现获得比特币基地支持的最低要求。

我们如何审计EVM实施方案的安全风险?我们的分叉EVM框架在评估是否满足整体安全标准(即契约不变性和安全执行环境)时,主要关注以下审计需求。应该指出的是,以下风险组成部分并不是分叉EVM审计的全部范围。

修改EVM操作代码的定义和编码将导致合同执行方法的重大差异。例如,假设一些分叉的EVM实现(EVM & # 8217;)更改算术加法操作码定义逻辑(x1+x2)以减去两个值(x1 & # 8211x2).

结果,偏离了EVM & # 8216;它在执行上不等同于标准EVM,也不兼容。修改操作码的后果可能是有益的行为,比如防止算术操作码中的整数上溢和下溢,也可能是更危险的行为,比如导致局部资产无限铸造的自毁。

EVM使用预编译契约来定义复杂的函数(比如加密函数),使用更方便、更强大的语言,比如Golang,而不是不易访问的EVM字节码。

基本上,这些是通过节点软件中表示的预定链地址访问的编程功能。以太坊黄皮书中定义了9个预编译器(截止到2023年5月),对这9个预编译器的任何更改或者新预编译器的引入都需要审计。

让我们再举一个具体的例子——BNB智能链漏洞。BNB智能链使用go-ethereum的偏离实现来运行节点。因此引入了两个新的预编译契约(tmHeaderValidate,iavlMerkleProofValidate),并使用第三方软件(coosdk)进行轻客户端块验证和Merkle proof验证。问题是coosdk软件在其IAWL树表示中存在实现错误,使得加密无效的证明无法通过验证。换句话说,任何人都可以用/kloc-0生成资金/攻击者可以利用iavlMerkleProofValidate预编译器中嵌入的这个实现漏洞,从货币安全的跨链桥梁中榨取数亿美元。

这个利用漏洞的例子是为了说明预编译器安全性的必要性,以及为偏离EVM的实现引入新的预编译契约所带来的潜在风险。

引入额外的预编译器可能带来的致命风险包括:

允许一方单方面修改任何已部署合同的状态;

这包括所有存储修改(插入、更新、删除);

使用不可信、未经验证或审计的第三方依赖项;

提供对不确定节点中的值的访问。

虽然编译器和EVM被认为是完全独立的实体,但值得注意的是,Solidity编译器确实很好地理解了前三个预编译契约(ecrecover、sha256和&: Ripemd)做出的严格假设,并且这些契约在Solidity语言中用原生语言关键字函数表示。在后台,Solidity编译器实际上将这些关键字作为字节码,在契约之间执行静态调用操作。下图进一步说明了合同之间的通信模式。

修改标准预编译器带来的安全风险包括:

允许集中交易对手单方面修改任何已部署合同的状态;

这包括所有存储修改(插入、更新、删除);

可靠性编译器预编译位置假设不一致;

提供对不确定节点中的值的访问;

使用不可信、未经验证或审计的第三方依赖项。

修改EVM基本组件带来的主要风险包括:

无约束解释器栈,使其无限;

修改或更改内存模型的大小可能会导致不确定的执行;

绕过访问控制,允许任何交易对手单方面访问所有链状态;

使用不可信、未经验证或审计的第三方依赖项。

为什么要关注EVM安全?我们的目标是建立一个基于区块链技术的开放式金融系统。为此,我们鼓励制定各种EVM执行计划。然而,为了使与EVM兼容的区块链得到比特币基地的完全支持,它必须满足标准EVM实现的基本要求。本文希望提高人们对偏离EVM相关风险的认识,鼓励资产发行人在偏离EVM时优先开发安全组件,从而提高整个Web3生态系统的安全意识。

本网站声明:网站内容来源于网络。如有侵权,请联系我们,我们会及时处理。

温馨提示:注:内容来源均采集于互联网,不要轻信任何,后果自负,本站不承担任何责任。若本站收录的信息无意侵犯了贵司版权,请给我们来信,我们会及时处理和回复。

原文地址"如何评估“分叉版EVM”的安全风险?":http://www.ljycsb.cn/qukuailian/216693.html

微信扫描二维码投放广告
▲长按图片识别二维码