51 large

以太坊 DAO Wars 软分叉可能会成为潜在的 Dos 攻击载体

rubyu2 · 于 发布 · 最后由 mendez回复 · 1779 次阅读

http://hackingdistributed.com/2016/06/28/ethereum-soft-fork-dos-vector/

主要的原因:矿工在运行软分叉时,如果遇到还有Dark DAO地址的操作,就会停止继续运行,然后抛弃这段运算,这样的合约时不会收取任何费用的。所以可以在合约里运行一些大量计算的代码,然后再包含Dark DAO的操作,以此攻击矿工。

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

根本原因

之前以太坊矿工可以通过gas费用的问题来防止DoS攻击:计算越多,得到的gas越多,攻击者费用越高。但是现在在软分叉上,矿工处于一个特殊的情况,他们已经处理完大量计算后可能会没有收到任何补偿,而攻击者缺没有任何处罚。软分叉创造了一种从根本上不同类型的交易存在于当前的协议中。之前,交易要么成功要么造成状态变化,或者运行抛出异常,这时导致状态回滚但是最大可能的gas被支付。但是在软分叉中,和DAO交互的交易却不在这两张情况中:他们会失败,但是不会有gas支付。攻击者可以采用非常高的gas来导致矿工消耗完所有的计算。这会导致空块的情况。

攻击的结果

导致矿工会在无用的交易上浪费大量的计算,而正常的交易无法进行。以太坊的安全性保留下来了,但是却无法使用。

DoS防护无用

没有办法分析出哪些合约可能是恶意利用Dark DAO的。

待续。