《我学区块链》—— 二十四、以太坊安全之 Geth 客户端 DoS 漏洞

二十四、以太坊安全之 Geth客户端DoS漏洞

  在 Geth 客户端导致节点崩溃的高危漏洞后,以太坊又因为 EXTCODESIZE 操作码问题,而受到 DDoS 攻击。

geth-ddos

  这次攻击的现象是,矿工和节点需要花费很长的时间(20~60秒)来处理一些区块。造成攻击的原因是一个 EXTCODESIZE 操作码,它具有相当低的 gas 价格,需要节点从磁盘中读取状态信息。攻击交易调用此操作码的频率大约是 50000 次每区块。这样的后果是,网络已经大大放缓了,但却没有共识故障或内存超载发生。目前,已经确定了几个可持续的中期修复路线,并已有开发者正在实施。

  故障发生后,以太官方建议大家切换至 Parity 客户端进行挖矿,并使用以下配置:

cache-size-db 1024 –gas-floor-target 1000000 –gasprice 50000000000

  如果要继续使用 geth 客户端,可以使用以下设置:

cache 1024 –targetgaslimit 1000000 –gasprice 50000000000



cache 1024 –targetgaslimit 1500000 –gasprice 20000000000

  关于 geth 的配置,前者是 Jeffrey Wilcke 给出的,后者是以太坊创始人 Vitalik Buterin 给出的。

  与此同时,当 bug 发现后,Geth 的开发者发布了新的软件版本,但其升级率却很低,这会使那些运行兼容拜占庭功能的节点在之后更加容易遭受 DoS 攻击。

  究其原因,这个漏洞源于新的拜占庭功能中的一个疏忽,致使这个 bug 可能会被那些想要使以太坊节点离线的攻击者所利用。

  下面再补充一些相关信息:

  2015年,以太坊创始人 Vitalik Buterin 及其团队推出以太坊完整发展路线分为四个阶段,即 ”前沿”(Frontier)、”家园”(Homestead)、”大都会”(Metropolis)和 ”宁静”(Serenity)。据悉,由于开发精力受限,升级 “大都会” 需要经过两次硬分叉,即 “拜占庭” 硬分叉与 “君士坦丁堡” 硬分叉。“君士坦丁堡” 硬分叉时间未定,预计在 2018年。

  以太坊已多次通过硬分叉来升级。区块链以节点连接,硬分叉后用户将使用新的共识链条。以太坊的硬分叉是改变以太坊底层协议,创建新的规则,提高整个系统。协议在某个特定区块上被激活。所有的以太坊客户端都需要升级,否则将停留在遵循旧规则的老链上。

  硬分叉存在风险,目前以太坊平台已执行了四次硬分叉,其中一次导致替代链以太坊经典(ETC)的诞生。硬分叉并不一定会导致链条断裂,产生新的币种。但是2016年以太坊硬分叉提出的修改方案在社区存在很大争议,最终导致链条分裂为以太坊和以太坊经典,以太坊经典成为与以太坊竞争的加密数字货币。

  “拜占庭”升级得到社区一致同意,“拜占庭”硬分叉将只是软件的更新,基本不会导致以太坊发生分裂产生新的以太币。升级后,早期软件版本将不再与新网络兼容。据以太坊分叉追踪器(Ethereum fork tracker)数据,“拜占庭”之前的区块链已经停止挖矿,这也有效的降低了分叉出新货币的可能。

  “拜占庭”升级的关键在于网络节点的更新,以太坊社区要确保节点客户端能够准备好这次升级。以太坊客户端主要有Go ethereum(Geth)和Parity,还有以太坊创始人Vitalik Buterin所创建的基于python的客户端。在“拜占庭”硬分叉前夕,Geth软件客户端的开发者发现了一个DoS攻击漏洞。据CoinDesk所述,故障软件可能会导致共识问题,导致网络分区或将平台暴露来阻断服务攻击。Geth随即发布了一个新的软件版本。开发者表示“拜占庭”硬分叉正在平缓进行。

  此次“拜占庭”升级将为以太坊平台引进9大关键改进协议(EIP)。“拜占庭”硬分叉是以太坊升级大都会的第一阶段,本次硬分叉将为智能合约的开发者提供灵活的参数,对于开发者更为友好。

  硬分叉后以太坊的具体变化包括:

  1、增加‘REVERT’操作符,允许处理错误不需要花费掉所有的gas(EIP 140)

  2、现在交易接收方可以包括一个状态字段,用以指出交易成功还是失败(EIP 658)

  3、在alt_bn128 (EIP 196)和配对检查上(EIP197)增加椭圆曲线和标量乘法,允许ZK-Snarks和其它加密数

  4、支持大数模幂(EIP 198),实现RSA签名验证和其它加密应用。

  5、支持可变长度返回值(EIP 211)

  6、增加‘STATICCALL’操作符,允许对其它合约进行非状态改变调用(EIP 214)

  7、修改难度调整公式,将叔块计算在内(EIP100)

  8、冰河期/难度炸弹延期一年,区块奖励从5个以太坊降到3个以太坊(EIP 649)

另,Parity挖矿指南:

https://docs.google.com/document/d/1j3v8bKjXQcMNNdx5Juwo3PRRCcHy8XcA6R9-0W7NCso/edit

https://github.com/ethcore/parity/wiki/Mining
  

猜你喜欢

转载自blog.csdn.net/xuguangyuansh/article/details/81481248