以太坊基金会今日发文披露了一个2019年首次发现的安全漏洞,在上个月的柏林升级之前,该漏洞的严重程度为发生攻击时可能使主网瘫痪。该漏洞的本质是触发随机Trie查询,以太坊开发人员曾试图用EIP-1884、EIP-2583、EIP-2929、以及快照功能来抵御该漏洞,最终在柏林升级之后该漏洞危险性降低。 通过此博客文章,目的是正式披露以太坊平台所面临的一个严重威胁。在以太坊柏林硬分叉之前,这个威胁是切实存在的。 状态(State) 让我们从以太坊和状态的背景知识开始。 以太坊状态由一种patricia-merkle trie(一种前缀树)组成。这篇文章将不做过多的详细介绍,随着状态的增长,这个树上的树枝变得越来越密。添加的每个帐户都是一片叶子。在树的根和叶本身之间,有许多“中间”节点。 为了在这棵巨大的树中查找给定的帐户或“叶子”,需要从根到中间节点来解析大约6-9个哈希的某个位置,以最终解析最后一个哈希hash,该哈希会指向我们正在寻找的数据。 简而言之:每执行一次Trie查找来查找帐户,就会执行8-9个解析操作。每个解析操作都是一次数据库查找,并且每词数据库查找可以是任意数量的真实磁盘操作。磁盘操作的次数很难估计,但是由于trie密钥是加密哈希(抗冲突),因此密钥是“随机的”,这对任何数据库来说都是最糟糕的情况。 随着以太坊的增长,有必要提高访问trie的操作的gas价格。这是在2016年10月区块高度2,463,000的Tangerine Whistle中执行的,其中包括EIP150。EIP150在所谓的“上海攻击”之后大幅提高了某些操作的gas成本,并进行了一系列更改以防止DoS攻击。 另一项gas提升同样在伊斯坦布尔升级中被执行,即2019年12月区块高度9,069,000。在这次升级中,EIP 1884被激活。 EIP 1884引入了以下操作成本更改:SLOAD从200提升到800gas,BALANCE从400提升到700gas(SELFBALANCE有所降低),EXTCODEHASH从400提升到700gas。问题 2019年3月,Martin Swende对EVM操作码性能进行了一些测量。 这次调查之后促成创建了EIP-1884。 在EIP-1884上线之前的几个月,《Broken Meter》论文正式发表(2019年9月)。 两位以太坊安全研究人员(Hubert Ritzdorf和Matthias Egli )与该论文的一位作者Daniel Perez合作“武器化”了一个漏洞,他们将漏洞提交给了以太坊赏金计划。这是在2019年10月4日。 我们建议您完整阅读那次提交的内容,这是一份精心撰写的报告。 在专门用于讨论跨客户端安全性的频道上,当天,来自Geth,Parity和Aleth的开发人员被告知了有关提交的信息。 该漏洞的本质是触发随机trie查询。 一个非常简单的变体是: (责任编辑:admin) |