以太坊区块链最受欢迎的软件客户端 Geth 也被称为“Go Ethereum”,昨天在旧版本上面临重大漏洞。 该错误影响了旧版本的 Geth 客户端,特别是 v1.10.7 及更早版本。
据报道,该漏洞影响了超过 50% 尚未更新到 Go Ethereum 开发人员于 8 月 24 日发布的最新修补程序的旧以太坊客户端。 由于漏洞利用,以太坊区块链发生意外硬分叉,将区块链一分为二. 74% 的客户使用 Geth,其中 73% 使用旧版本,这意味着高达 54% 的以太坊节点正在运行该错误。
Go Ethereum 团队在 8 月 18 日自己发现了该漏洞,但没有透露其性质以避免其他人利用该问题。 以太坊团队负责人 Péter Szilágyi 曾表示,他们将在即将到来的日期公布攻击向量,
“确切的攻击向量将在稍后提供,以便节点运营商和相关下游项目有时间更新他们的节点和软件,”
PSA:8 月 24 日星期二,Geth 将发布针对高严重性安全问题的修补程序。 请做好任何必要的准备以升级到即将发布的版本 (v.1.10.8)。 #ethereum #geth
— 去以太坊 (@go_ethereum) 2021 年 8 月 18 日
虽然 Go Ethereum 团队没有透露漏洞的性质,但攻击者似乎设法弄清楚并开始攻击尚未更新修补程序的旧客户端。 虽然网络要求每个人都升级到最新版本,但数据表明只有 30% 的验证者这样做了,这使得一旦发现漏洞就更容易进行攻击。
攻击的性质是什么以及它如何影响以太坊区块链?
让人们提前意识到错误的想法失败了,因为有人设法确定问题只是时间问题。 以太坊开发人员认为该计划惨遭失败,但更多的是因为节点验证器未能及时更新到修补版本。 攻击者通过将更改添加到与函数相同的内存位置,设法提交了对预编译合约的更改。
一位名叫“Good Guy Biker – Vancouver BC Canada”的 Twitter 用户完整地分析了漏洞利用,并解释了攻击的性质。 由于该漏洞,以太坊网络同时运行两条链,如果不及时丢弃坏链,可能会导致双花或 51% 攻击,因为大多数验证者没有更新他们的客户端。
正如这里所承诺的,这是对当前对 getETH 网络的持续利用的细分。 攻击合约在这里 https://t.co/aDazyM2WaK
使用 STATICCALL 重新编译的合约来执行 RunPrecompiledContract 函数。 合约返回…的 0x4 智能合约参考 pic.twitter.com/lQtST36NqQ
— Good Guy Biker – 加拿大不列颠哥伦比亚省温哥华 (@SpilyGuy) 2021 年 8 月 28 日
由于旧客户端版本的 Geth 存在漏洞,这并不是以太坊网络第一次面临链分裂。 11 月,由于验证器无法升级,类似的问题导致另一条链分裂。 谈到预先公告,一位以太坊开发人员说,
“上次我们做了一个修补程序,人们对我们没有宣布它很生气。 这次我们决定尝试不同的方式。 让我们看看哪个效果更好,”
以太坊最新的 Geth 漏洞有多糟糕? 首次出现在 Coingape 上。