加密数字货币伪造权益攻击技术详解
扫描二维码
随时随地手机看文章
前言
隶属伊利诺伊大学香槟分校的去中心化系统实验室(Decentralized Systems Lab)在最新的研究中发现,很多以权益证明(Proof-of-Stake, PoS)为基础的加密数字货币都存在一系列的漏洞,该漏洞会耗尽系统资源。
该研究团队提出的是一种拒绝服务(DoS)攻击,一次只能针对单个节点运行,使节点无法正常运行,因此该漏洞不存在任何资金安全上的风险。
实验室研究人员提出了两种类型的攻击:
1. 无权益的攻击:利用节点无法单独通过区块头确定有效权益的特性造成内存或磁盘的过度占用
2. 已花费权益的攻击:受到攻击的加密数字货币会被多次转移,但此前用于权益证明的数据仍然继续使用 (Qtum 量子链不存在这种漏洞的可能)
正如英文原文所述,只有“无权益的攻击”漏洞可能会对 Qtum 产生影响; 但是,在 Qtum Core 0.16.2版本(已于2018年11月16日发布)中,我们已经实施了一系列的缓解措施,杜绝了这种攻击向量的风险。
“无权益的攻击”由两种相似但不同的攻击向量组成。
在第一种攻击向量下,攻击者会导致受害者节点内存耗尽;在第二种攻击向量下,会导致受害者的磁盘空间耗尽,因此无论哪种攻击都不会与资金安全风险相关。
第一种攻击向量的产生是由于将区块头存储在内存空间之前未进行充分的验证引起的。因此,潜在的攻击者可以通过泛洪攻击使用大量无效的区块头耗尽受害者节点的内存资源。在 Qtum 中可能存在这种漏洞的原因是,Qtum 继承了 Bitcoin 0.10.0版本的区块头优先的特性。
在 Bitcoin 中,在将区块头存储在内存之前会对区块头的工作量证明(PoW)进行验证。但是,Qtum 的权益证明协议中并不涉及任何 PoW 的相关内容,同时由于 coinstake 交易只存在区块当中,Qtum 中的 PoS 只有在接收到完整的区块后才能完全验证。因此,潜在的攻击可以创建大量无效的区块头并将它们发送给已连接的其他节点,从而导致它们耗尽内存资源。
这种攻击向量的第二种变体与 Qtum 如何/何时进行完整区块的验证有关。 在 Qtum 中,当接收到新的区块的总链“工作量”比上一个 tip 的“工作量”更多时,将执行完整区块的验证和 coinstake 验证。 事实上,这意味着仅当新块附加到当前 TIp,或者接收到分叉链的 TIp,且该TIp具有比当前 TIp 更多的总链“工作量”时,才会对 PoS 进行完全验证,并因此触发区块重组。 但是,在先前版本的 Qtum 中,如果节点收到一个链工作量大于或等于当前 tip 的链工作量的区块时,就会将这些新的区块提交到磁盘空间。因此,攻击者可以在所连接的节点没有完全验证 PoS 的情况下让被攻击节点将区块提交到磁盘,从而导致它们耗尽磁盘空间。
Qtum 的 v0.16.2 是一个推荐的更新版本,包括改进的网络安全性和错误修复,形式如下:
1. 实施网络垃圾防护
2. 只有当区块的链工作量严格大于当前 tip 工作量时,才会向 peer 节点请求区块
3. 为 PoS 时间戳,区块索引,签名类型(LowS),同步和滚动检查点添加额外的区块头检测。
4. 添加最近的检查点
5. 更新 nMinimumChainWork,defaultAssumeValid 和chainTxData
6. 更新 BLOCK_CHAIN_SIZE
7. 修复在 OSX Mojave 上进行编译 (make) 检测时失败的 Qt 测试
8. 修复用于 PoS 区块的 getblocktemplate RPC
9. 修复 walletpassphrase 和 getnetworkhashps RPC 的帮助消息
当 Qtum 将区块提交到磁盘时,针对区块/磁盘的攻击只需要稍微进行一点修改。 现在只有当区块作为链的一部分,链的 tip 工作量大于当前 tip 的链工作量时,才会将区块提交到磁盘。
区块头/内存攻击可以通过实施潜在的区块头垃圾检测以及断开和禁止任何有问题的 peer 来进行缓解。 之前仅在收到完整区块时才进行的几项检测也被添加到了独立的区块头检测中。 例如,在将区块头提交到内存之前,要确保区块头中包含的签名格式的正确性,因为攻击者可以使用大量无效的签名来放大其表观权益。
v0.16.2 中实施的网络垃圾防护会对试图运行此类“无权益的攻击”的 peer 进行检测并禁止它们。 现在,只有当区块的链工作量严格大于当前尖端工作量时,节点才会向 peer 请求区块。 除了这些对策之外,我们还为 PoS 时间戳,区块索引,签名类型(LowS)以及同步和滚动检查点添加了额外的区块头检测。
Qtum 量子链开发团队通过去中心化系统实验室关于“伪造权益”的研究成果,使得 Qtum 量子链开发团队在攻击被公之于众之前就已修复该漏洞,及时避免了对用户造成的影响。
由于实现了额外的复杂性和安全特性,这些补丁能很大程度防御任何类似的攻击。与此同时,Qtum 量子链也正在进行一个更为全面的修复,该修复已通过了我们的初始测试,但由于它是对协议的一个相对更加重大的修改,所以我们需要在正式发布前进行更多的测试。