北京时间2021年8月27日20点50分左右,以太坊突然出现分叉。我们通过分析Geth的代码版本修改和这笔造成分叉的交易厘清了以太坊分叉的根本原因:Geth旧版本在处理预编译合约调用时,并未考虑特殊情况下参数值的处理,从而引发重叠拷贝,导致返回值异常。该漏洞已提交Geth官方,目前尚未披露细节,但攻击者已经利用漏洞实施了攻击。我们认为及时的分析和披露是必要的,也希望我们的分析能够为社区提供必要的理解和帮助。
攻击分析
运用我们的在线分析工具,可以看出:
Nansen:以太坊2.0质押量超1240万枚,创历史新高:5月6日消息,据多链数据分析平台Nansen数据显示,以太坊2.0质押量已超1240万枚,占流通总量的10.3%,创历史新高。Lido平台以太坊质押量超393万枚,占以太坊2.0质押总量的31.74%,同样创历史新高。[2022/5/6 2:55:09]
图一
这笔交易执行了一个精心构造的STATICCALL,攻击者将addr设为0x04,inOffset为0,inSize为32,retOffset为7,retSize为32。
以太坊开发者:正在以太坊上测试PoS,并将进行首次主网影子分叉:金色财经消息,以太坊开发者Marius van der Wijden在Twitter上表示,目前正在以太坊上测试PoS,并将进行首次主网影子分叉。
注:影子分叉是指在网络中添加与合并相关的字段进行分叉以实现模拟在现有的网络环境下进行压力测试。[2022/4/11 14:18:01]
图二
由于STATICCALL的目标地址是预编译合约,所以会执行图二中的RunPrecompiledContract。
数据:以太坊市值占比为17.9%:金色财经报道,据CoinGecko数据显示,当前加密货币市值为2.17万亿,比特币市值占比为39.6%,以太坊市值占比为17.9%。[2021/9/11 23:17:55]
图三
图四
根据图三和图四的代码,可以看到预编译合约0x04真正执行的逻辑只是简单地把in返回。
动态 | 腾讯和华为推出BCOS与以太坊竞争:由中国著名科技巨头腾讯支持的FISCO和华为将在下个月的新加坡金融科技节上首次亮相其新的开源“区块链生态系统”FISCO BCOS。BCOS旨在提供企业级分布式分类帐(DLT)解决方案。就像基于以太坊的Hyperledger Fabric一样,但不同的是它不会涉及到币。在技术方面,BCOS和其他一些主要区块链生态系统之间有一些令人难以置信的相似性,特别是“拜占庭容错”和“零知识证明。[2018/10/20]
图五
图六
图五是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等公链的基础,因此该漏洞影响范围甚广。目前各公链也先后推出了升级和补丁,我们也呼吁各相关节点尽早升级打上补丁,以确保基础设施的安全。
巴比特讯,8月23日,据CryptoPunksBot数据显示,Punk6965最新出价达2000ETH,当前价值约670万美元.
1900/1/1 0:00:002021年上半年NFT的销售额超过了25亿美元;可口可乐将与Tafi合作推出其首款NFT收藏品.
1900/1/1 0:00:00原标题:《区块链驱动社区公共服务供给治理创新:系统重构、实践图景及风险纾解》作者:何继新暴禹文章来源:《学习与实践》.
1900/1/1 0:00:00来源:财联社|区块链日报作者:李红晖澳大利亚储备银行今日发布公告,称国际清算银行(BIS)创新中心正在与澳大利亚、马来西亚、新加坡和南非的中央银行合作.
1900/1/1 0:00:00巴比特讯,DuneAnalytics数据显示,全球最大的NFT交易平台OpenSea在8月28日单日成交额达2.35亿美元,再创历史新高.
1900/1/1 0:00:00MichaelSaylor看好比特币并不是什么新闻。事实上,MichaelSaylor经常谈到数字资产转移支付的潜力,并称之为“财产的未来”.
1900/1/1 0:00:00