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某安全人员发布完整漏洞报告