木星链 木星链
Ctrl+D收藏木星链
首页 > ICP > 正文

RET:以太坊遭到攻击而导致分叉事件的技术分析

作者:

时间:1900/1/1 0:00:00

北京时间2021年8月27日20点50分左右,以太坊突然出现分叉。我们通过分析Geth的代码版本修改和这笔造成分叉的交易厘清了以太坊分叉的根本原因:Geth旧版本在处理预编译合约调用时,并未考虑特殊情况下参数值的处理,从而引发重叠拷贝,导致返回值异常。该漏洞已提交Geth官方,目前尚未披露细节,但攻击者已经利用漏洞实施了攻击。我们认为及时的分析和披露是必要的,也希望我们的分析能够为社区提供必要的理解和帮助。

攻击分析

运用我们的在线分析工具,可以看出:

以太坊混合器Tornado Cash推出重大升级:金色财经报道,作为向备受期待的v3过渡的一部分,基于以太坊的隐私混合器Tornado Cash刚刚进行了重大升级。本周三,Tornado Cash宣布推出升级Nova,将协议带到xDai侧链,允许可变存款和取款,并支持保护隐私的“屏蔽”资金转移到协议池中。该协议目前在其池中拥有超过150,000枚ETH,价值5.8亿美元。[2021/12/16 7:42:16]

图一

这笔交易执行了一个精心构造的STATICCALL,攻击者将addr设为0x04,inOffset为0,inSize为32,retOffset为7,retSize为32。

Shapeshift创始人:比特币和以太坊是未来金融体系的组成部分:金色财经报道,数字资产交易平台Shapeshift创始人兼首席执行官Erik Voorhees发推文称,在接下来的几个月里,黄金、比特币和以太坊都将上涨,因为它们是未来金融体系的组成部分和补充。三者没有一个具有其他两个的精确属性。它们都是市场的产物,都与法币相对立。[2020/7/28]

王纯:看好以太坊因开发者社群优势和可扩展性的提升:4月26日,在由金色财经联合F2Pool主办的《ETH迈向下一站 GPU矿工何去何从》线上访谈节目上,F2Pool联合创始人、stakefish创始人王纯指出长期看好的ETH的原因。

首先,以太坊具有广泛的生态系统,目前来看以太坊从开发者社群和应用生态都是占有明显的领先地位的,不但有开发者,还有许多科学家、研究者贡献不断贡献新的想法,大部的DeFi应用都基于以太坊,这带来很强的网络效应。

二是以太坊在可扩展性的提升,解决了许多比特币待解的问题,以太坊带来更多的是可扩展性的大幅提升,新进展可以让dapp运行成本更低、更加流畅,可用性增强。同时,ETH的市值、交易量仅次于BTC的世界第二大加密货币,是人们关注的焦点。[2020/4/26]

图二

声音 | Kraken业务发展总监:以太坊社区正在转向价值储存的叙事方式:据AMBCrypto报道,Kraken业务发展总监Dan Held近期在播客节目中表示,比特币只是一种新的货币,很多同类型货币只是不同基因编码的变体,它们通过货币的特征来表现自己。你可以把这当成是寒武纪大爆发,会有很多生物死亡。为了在这个新型的繁荣金钱生态系统中生存,就必须拥有优越的遗传特征。此外,Held说,多年来那些消亡的想法和项目反映了在加密空间中行不通的东西。之后,主持人提及,过去几年里,以太坊社区的叙事已经从“ETH不是金钱”转变为“ETH是金钱”。对此,Held认为以太坊的叙事正在崩溃,社区正试图转向一种真正的叙事方式——价值储存,“这就是他们这么做的原因。最初的叙事正在崩溃,因为它背后没有任何真实的东西。这不是现实。”[2019/12/6]

由于STATICCALL的目标地址是预编译合约,所以会执行图二中的RunPrecompiledContract。

图三

图四

根据图三和图四的代码,可以看到预编译合约0x04真正执行的逻辑只是简单地把in返回。

图五

图六

图五是STATICCALL的执行过程,753行是执行预编译合约的入口,751行的args指向EVM的Memory中inOffset~inOffset+inSize这篇区域的指针,也就是说args指向Mem。

根据图六以及前文对预编译合约0x04的分析,我们可以知道753行的返回值ret是与args完全相同的指针,也指向Mem。

在1.10.7版本的Geth中:762行将ret指向的值赋给EVM的Memory中retOffset~retOffset+retOffset这篇区域,也就是将Mem的值赋给Mem,而由于ret是一个指向Mem的指针,这次Memory.Set修改了Mem的值,也就修改了ret所指的值。所以在第771行返回的ret已经不是预编译合约执行结束时的ret了。在1.10.8版本的Geth中:增加了766行:ret=common.CopyBytes,将Mem中的值做了一次深拷贝赋给ret,那么在767行执行的Memory.Set只会修改Memory而不会修改ret,在771行返回的ret就是正确的ret。总结

通过对整个攻击流程的梳理和Geth源代码的分析,我们认为根本原因在于Geth旧版本在处理预编译合约的调用时并未考虑异常值的处理,导致攻击者利用该漏洞实施了重叠拷贝,影响了返回值,最终导致分叉的出现。由于Geth是BSC、HECO、Polygon等公链的基础,因此该漏洞影响范围甚广。目前各公链也先后推出了升级和补丁,我们也呼吁各相关节点尽早升级打上补丁,以确保基础设施的安全。

标签:RET以太坊ETHMEMFRET币以太坊最新价格行情走势图SaveTheWorldMEMES

ICP热门资讯
DAO:一文探究新媒体结构:所有权经济

媒体公司是人才公司。随着这一点对整个媒体行业变得越来越明显,挑战者和在位者都在加速发展,以抓住媒体最关键的自然资源:人创造者经济通过引入平台和产品使个人能够围绕自己建立业务,从而成为破坏传统结构.

1900/1/1 0:00:00
BYT:Bytom2.0主网正式上线!2.0时代有你同行丨比原链项目周报(第206期)

技术开发进展Bytom2.0Bytom2.0全节点添加注册合约功能的集成测试Bytom2.0bug修复和测试Bytom1.0至Bytom2.0资产迁移Bytom2.

1900/1/1 0:00:00
OLY:Poly Network:升级完成后将以去中心化的方式运作,希望黑客能参与到这个进程中来

巴比特讯,8月18日,PolyNetwork发布《写在PolyNetwork主网上线一周年的一封公开信》表示,白帽黑客与PolyNetwork有着一致的愿景,即在区块链世界里建立一个安全.

1900/1/1 0:00:00
区块链:区块链如何赋能企业数字化转型?

面对数字化时代的新问题和新挑战,越来越多企业正积极拥抱新型数字技术加快数字化转型。区块链作为新型数字技术的典型代表也受到了各行各业的关注和重视.

1900/1/1 0:00:00
PLA:Play-to-Earn游戏公会CGU完成500万美元种子轮融资

据彭博社9月8日消息,澳大利亚风险投资家MarkCarnegie支持的Play-to-Earn游戏公会CryptoGamingUnited完成500万美元种子轮融资,被超额认购.

1900/1/1 0:00:00
加密货币:西班牙银行巨头BBVA瑞士分行推出数字投资账户New Gen,允许存储买卖加密货币

巴比特讯,9月2日,西班牙银行巨头BBVA旗下专门从事私人银行业务的瑞士分行宣布推出新的100%数字投资账户NewGen,其中包含加密货币钱包,可存储和买卖加密货币.

1900/1/1 0:00:00