漏洞预警 | CVE-2018-17144:Bitcoin Core通胀漏洞修复

 

Bitcoin Core CVE-2018-17144漏洞披露

Bitcoin Core在9月18日发布的最新的版本0.16.3和0.17.0rc4中修复了一个较为严重的安全漏洞CVE-2018-17144,其可导致拒绝服务与严重的通胀。该漏洞最初是9月17日作为拒绝服务漏洞被发现的,接着立即汇报给了Bitcoin Core的几个核心开发者以及ABC、Unlimited等相关支持加密货币项目。但很快安全人员发现该漏洞实际上是一个通胀漏洞,并将其修复。

为了用户的安全,我们决定迅速推出更新补丁,并把这个漏洞当做拒绝服务漏洞来披露。同时我们将完整的信息通知到了矿工、合作伙伴以及其他受影响的系统管理员以快速更新整个系统。但是在9月20日,有人在公共论坛发了这个漏洞相关的完整报告,虽然很快就撤下了,但是已经造成了不可挽回的影响。

目前,我们认为已经有超过一半的Bitcoin哈希更新到了补丁后的节点,暂时也没有监测到有人试图利用这个漏洞。

但是用户仍然应该尽快更新到最新版本以确保大规模重组、无效挖掘、无效交易等情况不会出现。

 

漏洞相关细节

Bitcoin Core 0.14增加了一个优化功能(Bitcoin Core PR#9049):在初始预继块验证的过程中,避免高花费的验证。因此在Bitcoin Core 0.14.X中,任何在单个交易中试图花费双倍输出时将会导致断言失败并崩溃。

在Bitcoin Core 0.15中,这个问题被修复了,未花费交易输出跟踪与校正得到了简化,在这个版本中,如果交易输出还未被花费,它只会断言其是否存在。

而在Bitcoin Core后续版本中(0.15.X、0.16.0、0.16.1、0.16.2),在同一个块中,单个交易的交易输出被花费后试图对输出进行翻倍,都将导致断言失败。但是如果在之前的块中尝试双倍花费,那么数据仍会保留在CCoin映射中,并被打上DIRTY标记以及已花费,但不会导致断言发生,这可使得旷工可以声称价值被花费两次从而发生通胀。

 

时间线

2018年9月17日

  • 14:57匿名黑客汇报DoS漏洞
  • 15:15开发人员内部发布通告
  • 17:47安全人员发现通胀漏洞
  • 19:15安全人员决定尽快应用补丁
  • 19:29给出PoC(a47344b7dceddff6c6cc1c7e97f1588d99e6dba706011b6ccc2e615b88fe4350)
  • 20:15通知相关开发人员协助开发补丁
  • 20:30披露DoS漏洞
  • 20:48 Slushpool系统升级
  • 21:08向Bitcoin ABC发预警,补丁将在22:00之前公开
  • 21:30向漏洞发现者回复
  • 21:57Bitcoin Core PR 14247发布补丁并测试
  • 22:07发送通告邮件
  • 23:21Bitcoin Core 0.17.0rc4 tag

2018年9月18日

  • 00:24Bitcoin Core 0.16.3 tag
  • 20:44Bitcoin Core release放出,同时发布通告
  • 21:47Bitcointalk和reddit发布通告

2018年9月19日

  • 14:06发送邮件组督促升级

2018年9月20日

  • 19:50某安全人员发布完整漏洞报告
(完)