详解以太坊软分叉DoS攻击向量,三类人群或发动这类攻击

2016-06-30 10:43 来源:巴比特 阅读:6563
距离6月17日发生的the DAO黑客攻击事件,已过去了近10天的时间,价值近5300万美元的以太币被转移到绰号为“Dark DAO”的合约对象当中。这起攻击事件的机制,已引起了广泛讨论。此后, 白帽黑客利用同样的漏洞,将the DAO剩余的资金转移到“白帽DAO”,这部分以太币的价值大约达到了1亿美元左右。

距离6月17日发生的the DAO黑客攻击事件,已过去 了近10天的时间,价值近5300万美元的以太币被转移到绰号为“Dark DAO”的合约对象当中。这起攻击事件的机制,已引起了广泛讨论。此后, 白帽黑客利用同样的漏洞,将the DAO剩余的资金转移到“白帽DAO”,这部分以太币的价值大约达到了1亿美元左右。

在17天之内,黑客无法动用Dark DAO合约中的资金,所以目前,这些资金不会流向任何地方。在此期间,以太坊社区发表声明称,会支持用软分叉的方式冻结Dark DAO中的资金。如果一切顺利,软分叉将在2016年6月30日激活,并为社区争取更多的时间。然而,今天我们要讨论的东西正是这次软分叉之后引起的一个 攻击漏洞。

dos

在这篇文章当中,我们认为,这次软分叉本身会对以太坊的拒绝服务攻击(DoS)引入一种新的攻击向量。我们会描述这些DoS 攻击的原理,它们会对以太坊网络造成什么样的影响,以及我们可能有哪些替代的选择。有趣的是,如果社区能够理解这样的攻击,那么任何DoS攻击实际上所产 生的效果,可能会大大降低。

考虑到这一点,让我们先看看这个DOS场景。

 

DOS攻击软分叉

 

目前被纳入到最新版本以太坊挖矿软件的软分叉实施方案,被称为“DAO Wars”,它会认为来自Dark DAO合约的交易就是无效的,并拒绝包含此类交易的任何区块。

预期的效果就是冻结攻击者的资金:如果大多数矿工接纳这个软分叉,那么他们会忽略任何包含帮助攻击者移动 Dark DAO资金交易的任何区块。那么,这些Dark DAO的资金将永远被禁用,这些以太币将被隔离掉,而白帽 DAO的资金将返回给The DAO投资者,他们将获得的金额将是原投资额的70% 。

然而,这个软分叉会创建一种拒绝服务攻击向量,如果被黑客利用,他只需花费少量的资金就可以阻止网络处理有效交易。具体来说,攻击者可以用大量执行困难计算的交易,填充整个网络,并在the DAO合约上执行一个结束操作。

运行软分叉的矿工最终不得不执行这些交易,然后丢弃它们,并且这种合约不收取任何的费用。

 

举一个这种类型的恶意交易,如下所示:

for(uint32 i=0; i < 1000000; i++) {
sha3('some data'); // costly computation
}
DarkDAO.splitDAO(...); // render the transaction invalid

根本原因

 

目前,以太坊矿工能够抵挡dos攻击,是因为有gas的限制:他们进行的计算越多,所收集的 gas也就越多,那么攻击者需要花费的资金也就更多。但当软分叉实行时,矿工就会处在一个新的位置,他们最终不得不执行大量的工作,而不会收集到任何补 偿,并且对攻击者也没有惩罚。这次软分叉会创建一种新的,不同种类的交易,它与当前协议的交易是不同的。目前,交易的执行要么是成功的,并导致状态转换, 或碰到异常,在此情况下状态会被恢复。但在软分叉实行之后,与DAO交互的交易将不再适合这两类:它们将无法执行,但也不会收取gas费用。任何试图冻结 盗取资金的软分叉,都会引起这样的情况,这是不可避免的。尝试包含一笔交易,而不包含它应有的状态交易,会导致区块是无效的,其他节点不会传播这些区块。 这就为攻击者提供了方便。

更糟的情况下:矿工会优先处理gas价格高的交易。因为恶意交易实际上并没有支付gas,攻击者可以设置一个非常高的gas价格,以诱骗矿工浪费他们的算力。这可能会导致区块不处理任何有效的交易。

 

攻击结果

这种DoS攻击并不是世界末日:它不会造成进一步的盗窃,也不会给the DAO黑客带来实质性的好处。主要结 果是,以太坊区块链将包含大量的空块,作为支持软分叉的矿工们(占绝大多数),将浪费自己的时间处理软分叉规则而产生的无效交易。而不支持软分叉的矿工将 挖取到更多有效区块,但这些区块会被多数支持软分叉的矿工给丢弃。因此,只要攻击正在发生,以太坊合约将无法执行,或更缓慢地进行。

DoS攻击防御是无效的

有人可能会尝试通过检查Dark DAO地址合约代码,来阻止软分叉的DoS攻击。这被称为静态分析,但其实这是一种幼稚的尝试。

IP黑名单的方式是更糟糕的

有人也提出来一种可能的方法,要求网络中执行收到的交易的节点,来决定这些交易是否是软分叉标准的(即:不调用Dark DAO),只有当它们是安全的情况下,才将这些交易运送到矿工那。

这是一个可怕的想法,原因有三:http://hackingdistributed.com/2016/06/28/ethereum-soft-fork-dos-vector/

 

创造性的解决方案,同时也是有害的

 

几乎任何协议都可用软分叉的方式进行部署,特别是例如以太坊这样的通用平台。在这种特定的情况下,我们可以修改所有支持软分叉的软件,包括所有的节点,钱包和交易所,使用不同的传输格式,但继续接受旧交易。以创建一种向后兼容的区块链,从而保持前进,同时消除DoS向量。

但是,对于一个干净、优雅和设计新鲜的系统而言,这会引来不必要的难题。这对于以太坊来说会是一个大错误,它会重复比特币的隔离验证软分叉错误。这种聪明的技巧并不是一个技术性的债务,而是社区性的。

幸运的是,代码的部署需要时间,目前还没有开发,测试和实施这种方案,这很好。

 

部分措施

 

gas 限制:一种可行的,能够减少攻击者攻击效果的方法,就是简单地降低交易 gas限制。这将冻结复杂的合约,但它同时也限制了攻击者。这仅仅是一部分修复工作,可能会让攻击者的攻击效力减损,但它并不能从根本上解决这种攻击。

禁止垃圾交易地址:另一种可行的解决办法是禁止任何调用Dark DAO交易的地址。这意味着,攻击者无法重复使用相同的地址,来对网络进行垃圾攻击,这反过来会迫使他要花取更多的时间去创造更多的钱包地址。这可以有效 地减少攻击的效果,但并不能完全消除攻击,并且这种方案需要仔细地实施,以避免造成更多的麻烦。

 

谁会进行这种DoS攻击?

 

网络协议存在着攻击机会,这是很常见的,现实世界中并没有人会去做,因为他们没有动力去利用这些攻击漏洞。可悲的是,我们担心会有人针对以太坊发动这样的攻击。

有三类人可能会进行这种软分叉DoS攻击,其中有两类的可能性不大,而第三种则是相当危险的。

  1. 不支持软分叉的矿工,他们可能会采取这种方法来攻击支持软分叉的矿工。虽然我们在比特币世界当中已看到过这种恶意行为,但这种情况,仍然是罕见的。

  2. The DAO的黑客可能会利用这种方法,以攻击支付软分叉的矿工,使他们放弃对软分叉的支持。我们可能会看到黑客持续进行这种攻击,等到他能够从 Dark DAO合约转移走他的资金,也就是到7月份的某一天。然而,Alex van de Sande也表示,黑客不是Dark DAO的管理者,因此,即使黑客能够破坏矿工实施软分叉,他也无法取走这些资金。

  3. 最危险的群体是“griefers”,他们可能为了做空以太币,从而发动一次DoS攻击,为的就是让以太币的价格在短期内能够下跌。同样的,极端 分子认为加密货币是一种零和游戏,他们也可能会参与破坏。当然,那些想要攻击以太坊矿工的人也可能会参与进来。因为在目前,这种攻击还没有什么成本,这些 群体很可能会发动攻击。

 

备选方案

 

无分叉:一种选择就是避免进行分叉,这可能会导致The DAO投资者损失30%-100%的投资。

坚定不移地进行软分叉:我们可以继续按照计划进行软分叉,并充分认识到可能会存在DoS攻击。

硬分叉: 从技术角度来看,硬分叉是最干净、简单、安全的选择,但这种方案所带来的争论,不仅仅是技术上的,我们会避免这种方案,尽管这是一个有趣,并且有价值的话题。

 

结论

 

目前部署在以太坊的软分叉会造成DoS攻击向量,如果软分叉如期激活,以太坊社区应为可能存在的DoS攻击做好准备,这可能会导致以太坊网络性能下降。我们会敦促以太坊社区尽快达成共识,并解决The DAO事件。


声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文