主页 > imtoken安卓app > 以太坊重现安全漏洞,或损坏全网智能合约

以太坊重现安全漏洞,或损坏全网智能合约

imtoken安卓app 2023-03-24 07:46:48

以太坊智能合约脚本语言Solidity还有一个漏洞以太坊solidity智能合约开发,不仅会影响DAO,还会波及整个以太坊生态。

以太坊中的合约通常会相互调用。 社区鼓励这种行为,希望最终实现智能合约之间的“互补”。

当以太坊合约相互调用时,它们自己的程序控制和状态功能就会丢失。 该漏洞由 Augur 核心开发人员 Joey Krug 和 Gnosis 联合创始人 Martin Köppelmann 发现,随后由康奈尔大学博士生 Philip Daian 和研究员 Emin Gun Sirer 发布。

以太坊智能合约原理_以太坊智能合约语言_以太坊solidity智能合约开发

该漏洞类似于DAO攻击者利用的可重入(注:可重入的概念类似于递归,关于DAO攻击漏洞,官方说法是重入调用漏洞,这里的可重入是作者个人观点)漏洞是不同的。 我们称它为太阳风暴(因为它可以切断以太坊智能合约之间的通信,就像太阳风暴可以切断地球上的通信设备一样)。 Daian 发布时没有命名漏洞,但他喜欢“Sunstorm”。

以太坊智能合约语言_以太坊solidity智能合约开发_以太坊智能合约原理

太阳风暴 VS 重入

重入漏洞的先决条件:

1.合约A,函数A调用调用合约B

2.合约B调用调用合约A以太坊solidity智能合约开发,函数A

戴安认为,即使是合约之间的简单调用也会暴露漏洞。

以太坊智能合约原理_以太坊solidity智能合约开发_以太坊智能合约语言

太阳风暴漏洞发生的前提条件:

1. Contract 一个调用调用任何外部合约

2. 合约A的状态被外部函数修改(这种情况经常发生)

因此,太阳风暴漏洞的例子是:

1.合约A,函数A调用调用合约B

以太坊solidity智能合约开发_以太坊智能合约原理_以太坊智能合约语言

2. 合约A的另一个函数C与函数A共享状态

3.合约B调用调用合约A,函数C

为避免暴露此漏洞,我们有两种选择:

(a) 禁止合约进行外部调用

(b) 禁止使用外部调用函数与发起外部调用的函数共享状态

以太坊solidity智能合约开发_以太坊智能合约语言_以太坊智能合约原理

在实际用例中完全禁止 b 是不可能的,因此我们必须不再对合约进行外部调用。 如需对外调用,可在编程完成后进行。 外部调用一旦执行,合约状态不应改变。

太阳风暴漏洞比重入漏洞更广泛。

这是什么意思?

总结

solar-storm漏洞不仅会影响DAO合约,还会影响所有以太坊合约。 这是以太坊编程语言 Solidity 中的一个漏洞。

以太坊智能合约语言_以太坊solidity智能合约开发_以太坊智能合约原理

已发布的以太坊合约也可能存在漏洞。 开发者需要测试他们合约的性能并采取适当的行动(转移资金、发布新合约等)。

开发人员应该非常小心外部调用他们即将到来的合同。 在完全修复此漏洞之前,请尽量避免外部调用。

接下来做什么?

重新检查所有已发布的智能合约。 使用 Solidity 编译器检测漏洞。 该漏洞目前并未广泛宣传,因此应编写 Solidity 文档以通知其他人。

发稿时比特币标准价 买入价:¥4744.57 卖出价:¥4739.46 (来源:HaoBTC,简单优雅的比特币交易所)

原文:#.2sgz2059g