北京时间2021年8月27日20点50分左右,以太坊突然出现分叉。我们通过分析Geth的代码版本修改和这笔造成分叉的交易厘清了以太坊分叉的根本原因:Geth旧版本在处理预编译合约调用时,并未考虑特殊情况下参数值的处理,从而引发重叠拷贝,导致返回值异常。该漏洞已提交Geth官方,目前尚未披露细节,但攻击者已经利用漏洞实施了攻击。我们认为及时的分析和披露是必要的,也希望我们的分析能够为社区提供必要的理解和帮助。
攻击分析
运用我们的在线分析工具,可以看出:
以太坊未确认交易为173,272笔:金色财经消息,据OKLink数据显示,以太坊未确认交易173,272笔,当前全网算力为541.67TH/s,全网难度为7.40P,当前持币地址为62,316,325个,同比增加53,788个,24h链上交易量为2,604,564.2ETH,当前平均出块时间为13s。[2021/8/5 1:37:13]
图一
这笔交易执行了一个精心构造的STATICCALL,攻击者将addr设为0x04,inOffset为0,inSize为32,retOffset为7,retSize为32。
以太坊上借贷协议24小时清算量达535万美元:据欧科云链OKLink数据显示,受行情波动影响,近24小时以太坊上借贷协议清算量有所上升,清算总额达535万美元。其中Dydx、Compound以及Aave V2平台上分别有254万美元,173万美元以及104万美元的头寸被清算。[2021/3/23 19:09:15]
图二
现场 | V神:以太坊已成为一个真正的自我维系的生态系统:金色财经现场报道,10月27日,第六届区块链全球峰会于上海开幕,峰会上以太坊创始人Vitalik Buterin演讲表示,我认为以太坊生态发展情况和趋势,有一些趋势在过去3年就展现出来了,但在过去一年有一个高速发展。其中重要的表示是在扩容上,其中包含zk rollup的扩展方式可以支持主网了,gitcoin grants也正在投票启用zksync。Optimistics rollup已经上线了测试网。Plasma也可以使用了。以太坊已经成为一个真正的生态系统,一个自我维系的生态系统,出现问题,我们可以解决这些问题。可以自我协作。[2020/10/27]
由于STATICCALL的目标地址是预编译合约,所以会执行图二中的RunPrecompiledContract。
动态 | 以太坊未确认交易63967笔:据etherscan.io数据显示,当前以太坊未确认交易数量为63967笔,近期以太坊未确认笔数始终居高不下,网络拥堵较为严重,并无改善。[2018/10/1]
图三
图四
根据图三和图四的代码,可以看到预编译合约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等公链的基础,因此该漏洞影响范围甚广。目前各公链也先后推出了升级和补丁,我们也呼吁各相关节点尽早升级打上补丁,以确保基础设施的安全。
据Coindesk9月1日消息,以太坊扩容网络Arbitrum开发团队OffchainLabs的联合创始人StevenGoldfelder表示,Arbitrum在短期之内不会发行代币.
1900/1/1 0:00:00撰文:SimondelaRouviere,UntitledFrontier首席执行官编译:PerryWang一个好的故事会让你有所感触。如果对故事拥有所有权,会让这些情绪更加强烈.
1900/1/1 0:00:00巴比特讯,8月13日23时29分,PolyNetwork发布遭受黑客攻击后的处理方案:修补漏洞、主网升级和项目启动。1.修补漏洞.
1900/1/1 0:00:00来源:证券时报网证券时报记者王君晖继国有大行之后,城商行与农村金融机构也将加入数字人民币试点进程.
1900/1/1 0:00:00原文来自:@DecentBass@a16z?嘉宾:JeffTunnell?&JoshWilliams以下是对本集播客的总结。和大多数行业一样,游戏行业向互联网转型的速度很慢.
1900/1/1 0:00:00据LiveBitcoinNews报道,加密货币负责人马修·罗扎克(MatthewRoszak?)在最近的一次采访中表示,基础设施法案是“糟糕”政府监管的一个典型例子,需要更多公众人物表示反对.
1900/1/1 0:00:00