北京时间2021年8月27日20点50分左右,以太坊突然出现分叉。我们通过分析Geth的代码版本修改和这笔造成分叉的交易厘清了以太坊分叉的根本原因:Geth旧版本在处理预编译合约调用时,并未考虑特殊情况下参数值的处理,从而引发重叠拷贝,导致返回值异常。该漏洞已提交Geth官方,目前尚未披露细节,但攻击者已经利用漏洞实施了攻击。我们认为及时的分析和披露是必要的,也希望我们的分析能够为社区提供必要的理解和帮助。
攻击分析
运用我们的在线分析工具,可以看出:
Aave社区发起“将MakerDAO的DSR集成到Aave V3以太坊池中”的温度检查:6月2日消息,Aave社区成员MarcZeller发起“将 MakerDAO 的 DSR 集成到 Aave V3 以太坊池中”的温度检查提案。此温度检查提议将 MakerDAO 的 Dai 储蓄率 (DSR) 集成到 Aave V3 ETH 池中。这将通过将 sDAI(一种包含 DSR 收益的 ERC-4626 Vault 代币)集成到 Aave 协议中来实现。通过 sDAI 将 DSR 集成到 Aave 中,就可以让 Aave 流动性提供者从 DSR 利率中受益,而无需向 Aave DAI 借款人支付额外费用。在协议层面,当用户存入 DAI 时,协议会将他们的 DAI 以 sDAI 的形式包装起来,交付给用户 aDAI。当用户借入 DAI 时,协议将解包存储的 sDAI,交付 DAI,并在 DAI 中累积债务金额。[2023/6/2 11:55:03]
图一
以太坊2.0存款合约地址存入105000ETH超过25%被3名大鲸持有:11月20日,目前以太坊2.0存款合约地址的105,000ETH 中,超过25%的存款来自于3名大鲸持有者。根据Bison Trails 协议专家Viktor Bunin的分析,其中,一名ETH大鲸于11月14日存入17,088 ETH,这些ETH为2017年牛市期间以300美元的价格购入,并在不同的地址持有了三年以上。另一名ETH大鲸则存入5,504 ETH,这是四年前开始囤积的 ETH。还有一个 ETH大鲸存入5,024 ETH,这些是持有三年的 ETH,该名大鲸还持有另外1.5 万ETH。[2020/11/20 21:26:38]
这笔交易执行了一个精心构造的STATICCALL,攻击者将addr设为0x04,inOffset为0,inSize为32,retOffset为7,retSize为32。
火币上线BSV以太坊代币HBSV,现已开放充提:火币官网消息显示,火币全球站已于10月24日推出BSV的以太坊代币——HBSV,并开启HBSV充提业务。
BSV 是比特币现金(BCH)的分叉币,目标是践行中本聪白皮书最初愿景及发展路线。CoinMarketCap数据显示,截止2020年10月24日,BSV市值已高达31亿美元。
HBSV项目通过向以太坊DeFi注入高流动性、受用户喜爱的BSV,连接中心化市场和DeFi市场,降低用户进入DeFi的成本,提供更有效率的数字资产服务。
据了解,火币全球站推出的HBSV严格遵守1 : 1的担保资产,即每发行1个HBSV,其资产所在地址都会有1BSV的资产保障,确保用户可以随时使用HBSV与BSV进行1 : 1的兑换。所有的HBSV兑换详情都会在火币H系列资产官网公开,任何人都可以发起对HBSV资产的审计。[2020/10/24]
图二
由于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等公链的基础,因此该漏洞影响范围甚广。目前各公链也先后推出了升级和补丁,我们也呼吁各相关节点尽早升级打上补丁,以确保基础设施的安全。
ArbitrumOne已经在主网开放,我们计划推出一系列的文章,讲解Arbitrum的内部构件。本文摘自InsideArbitrum,该原文深入讲解了Arbitrum的工作原理.
城市正积极拥抱区块链、物联网、人工智能等数字技术,加快城市经济增长,提高城市生活质量和环境的可持续发展能力。城市的数字化转型也为区块链技术的价值挖掘和应用落地提供了良好的试验田.
最近一段时间,波卡/KSM平行链插槽拍卖的热度越来越高,有人说,平行链插槽拍卖蕴含着巨大的财富机会,也有人的说这不过是当年EOS超级节点竞选的“翻版”,雷声大雨点小.
据Cointelegrpah消息,8月25日,三箭资本首席执行官在SuZhu"TheGameTheoryofCryptoPodcast"节目中表示,他看好DOGE.
巴比特讯,数据平台Dappradar收录了约19条公链的NFT交易平台数据,其根据交易用户数对此进行了排名.
前面写了一篇关于《区块链和互操作性:大规模采用的关键》的文章,当时那篇文章的结论是“区块链似乎处于被广泛接受和采用的门槛”.