作者 | Coinbase
摘要
Coinbase 没有成为任何攻击交易的目标,也没有任何资金的损失。
在 PST 7/31/2020 晚上 10:57,Ethereum Classic(ETC) 受到 51% 攻击,导致约 80 万 ETC(约 580 万美元) 的双花交易。
PST 8/5/2020 晚上 8:15,Ethereum Classic 再次受到 51% 攻击,导致约 46 万 ETC (约 320 万美元)的双花交易。
在第一次攻击中,运行在精简模式下的 Parity(OpenEthereum) 节点忽略了攻击区块,而其余网络则接受了攻击区块为,导致修精简 Parity 节点与其余网络出现了分区网络
如果攻击者控制了大部分挖矿权,他们就能够 51% 攻击区块链网络。攻击者会重组("reorg")区块链的历史,通过双花交易窃取资金。
Coinbase 的观点
在 PST 7/31/2020 晚上 11:10,Coinbase 区块链安全部接到警报,Coinbase 的 ETC 节点在预期的时间区间内没有看到新的区块。经调查发现,我们的节点在区块链状态上已经分叉。Coinbase 内部精简的 Parity 节点与我们非精简的 Parity 节点和 Geth 节点看到的区块不同,这是第一个说明有问题的指标。我们得出的结论是,在 PST 7/31 晚上 10:57 的大规模重组导致了网络分叉,是由于不同的节点造成的(关于分叉的更多信息,请参阅下面的网络分区部分)。
大型的重组是潜在双重花费的显著指标。此时,Coinbase 选择大幅提高我们的确认次数要求。这确保了 Coinbase 平台上没有双花交易入账。
两个公开的问题随之而来:首先,重组的交易中是否包含双花?第二,考虑到网络分区,Coinbase 如何确保我们在正确的链上呢?
为了回答第一个问题,我们比较了孤链和导致重组的新链。我们发现,在 53 个孤块交易中,有约 580 万美元 的 ETC 被 双花。然而 Coinbase 没有成为这些攻击的目标。
我们接下来的重点是了解 ETC 网络分区。我们发现精简的 Parity 节点会忽略超过一定高度的区块。因为大规模的重组试图对超过这个阈值的区块进行孤块化处理,所以被精简的 Parity 节点认为重组是无效的。需要注意的是,网络中的其他节点选择跟随重组,这一现象导致了网络的分区。在观察了网络分区的每一方后,Coinbase 开始跟随规范的主链(即包括双花攻击的非精简的 Parity 链)。
8 月 5 日晚,区块链安全部又收到警报,发生了大规模的重组。由于精简后的奇偶性节点不再被操作,没有出现类似第一次重组的网络分区。因此,唯一的问题是 Coinbase 是否是这次攻击的受害者。做了和上面类似的分析,我们确认 ETC 再次被攻击,这次的攻击金额约为 320 万美元,涉及 9 笔孤块交易。我们再次发现,Coinbase 不是任何一笔孤块交易的 受害者。
作为额外的预防措施,我们进一步提高了确认次数以确保客户资金的安全。需要注意的是,这并不是 ETC 第一次被双花。
虽然 ETC 近几日看起来已经稳定下来,但我们会继续监测 ETC 是否有进一步的动荡。
技术分析
基于 Nonce 的双花攻击
在这次 ETC 攻击中,我们发现了一个有趣的模式,用来执行双花。我们在下面讨论攻击者双花策略的一个例子。
攻击者使用一个攻击交易来双重花费多个孤块交易的例子:
攻击者利用一个攻击交易将多个单个交易进行双重消费的例子。
攻击模式
__
1. 攻击者通过多次交易向被攻击交易所发送大量 ETC。
2. 攻击者利用被攻击交易所服务,将 ETC 兑换成其他货币,然后将资金移出平台。
3. 攻击者重新记录区块链," 删除 " 步骤 1 的交易。
结束状态:攻击者现在控制了他们从被攻击交易所那里转出的一定数量的非 ETC 资产,同时还保持对原始 ETC 的控制。
有趣的是,通过使用这种基于非 ce 的增量技术,每笔孤块交易的移动量不到 3 万 ETC (约 20 万美元)。我们相信,攻击者使用这些增量的孤块交易是由于 被攻击交易所 的一些基于价值的速率限制。例如,被攻击交易所交易所可能有一个功能,防止用户在一次存款中收到大于 X 金额的 ETC。
攻击者利用一笔攻击交易对多笔无主交易进行双花的例子。
在这里,我们发现孤块链上发生了三笔交易。发送方(即攻击者)和接收方(即受害者)的地址在三笔交易中都是一致的。如上所述,每笔交易的转账金额都在约 20 万美元左右。此外,后两笔交易与前一笔交易相比,nonces 增加了。根据账户 nonces 的工作方式,这是可以被预估的。
关键点是在主链上,只要攻击者账户没有持有足够的资金来支付转账,后两笔交易都是无效的。在主链上,我们发现一个来自攻击者地址的大额双花交易,而不是三个独立的双花交易,并且各有一个孤块交易。
主链(即攻击者)上的攻击交易,将资金合并并转移到攻击者控制的地址上。
值得注意,这个大交易的转移值等于三个孤块交易的值之和。这确保了所有三个孤块交易在主链上都是无效的。
精简 奇偶节点网络分区
除了正常的 51% 攻击双花攻击模式外,由于这次事件,还出现了第二个有趣的情况。当配置在精简模式下时, Parity OpenEthereum 客户端会选择忽略任何超过一定高度的区块,并认为这些区块无效。
一个 " 古老 " 的错误,导致精简后的奇偶性节点拒绝 reorg。
因此,精简后的 Parity OpenEthereum 客户端忽略重组以及继续挖掘自己的独立链。如上所述,我们称之为孤链。重组链的无效性导致网络按节点和节点配置进行了分区。
ETC 网络如何分区
在这个分区发生后,矿工继续在精简后的 Parity 链以及网络其他部分所遵循的主链上采矿。
为了清晰起见,请注意,被精简的 Parity 节点的当前状态等同于未被精简的 Parity、Geth 节点在被重组之前的状态。在重组内请求一定高度的区块,会从被精简的 Parity 节点返回孤儿区块,而未精简的 Parity 节点则返回攻击者区块。从 unpruned 节点接收到的孤块曾是 unpruned Parity 节点的状态的一部分,然而孤块被重组出 unpruned 节点的视图。
继续运行被精简的奇偶性节点的节点操作者维护并扩展了孤链。在这些运营商重新同步他们的精简奇偶节点或切换到不同的节点类型之前,网络化仍然是分区的。Coinbase 强烈建议切换到支持的节点(例如 Geth)。
Reorgs
根据 Coinbase 非精简节点的日志,曾经有一次极其庞大的重组,从区块高度 10904147 开始直到区块高度 10907434。在攻击时,主链(即攻击)的高度为 10907434,而孤链的高度为 10907836。孤链和主链之间的共同原型区块高度为 10904146。这意味着重组了孤链 3692 个,新增了 3287 个区块。需要注意的是,虽然攻击链的高度较低,但因为难度较高,它取代并超越了孤儿链成为 ETC 的正统链。假设区块时间为 15 秒,攻击者必须用多数 hashpower 挖矿约 13.7 小时才能执行这次攻击。
重组 8/1 的示意图
被精简的节点忽略了这个重组,而未被精简的节点则接受这个重组为有效。更多信息请参见上文的网络分区部分。
我们的分析显示,在链式重组中,有 15 个双花交易对和 38 个基于孤块的交易。这些双花都没有影响到 Coinbase。
2020 年 5 月 8 日,ETC 在主链上发生了第二次大规模的重组。
在重组时,孤链区块为 0x9555,高度为 10939866。重组后,主链(即攻击)链头块为 0x7521,高度为 10939975。孤链和主链之间的共同原型区块在高度 10935622。重组孤链 4244 块,而攻击链包含 4353 块。假设区块时间为 15 秒,攻击者必须用多数算力挖矿约 18.1 小时才能执行这次攻击。
reorg 8/5 的示意图
区块链安全公司对这次重组进行了与上述相同的分析,发现了 7 个双花交易对和另外 2 个发送到受害者地址的孤儿交易。同样这些双花都没有影响到 Coinbase。
双花
在第一轮双花交易中,我们发现约有 580 万美元被双花。有 5 个独立的地址向 5 个独立的受害者地址发送了大量的双花交易。攻击者和受害者地址一对一地进行了映射。
在检查了来往地址后,区块链安全公司得出结论,这些双消费都没有影响到 Coinbase:
在第二轮双花中,我们发现约有 320 万元被双花。这一次,只有一个目标受害者地址为 0x38cd54fc7b1fe7994355fce1d75c9c4bd7335a46。此外,每笔交易的双花金额有更高的差异,在约 9.7 万美元到高达约 108 万美元之间。我们发现,在第二次攻击中,攻击者倾向于不拆分孤块交易,这意味着孤块交易和攻击交易一般是一对一映射的。一个例外是特定的攻击者地址 0xa56cfaef495a45f17f44fd0b2d85e0fe63b9ba7d,它发送了三个孤块交易。
需要注意的是,在第一次重组中,我们的分析还发现了一些其他的小额双花,数量在 10 美元左右。我们认为这些都是非恶意用户在重组期间与区块链互动导致的非恶意双花消费。
Coinbase 作者
olivia 翻译
李翰博 编辑
内容仅供参考 不作为投资建议 风险自担
版权所有 未经允许 严禁转载
☟☟☟
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:分享区块链领域专业、前沿、有趣的内容
评论0条