【技术贡献】对Filecoin-0.2.2开发网络的攻击手法的分析

Filecoin用于测试使用的开发网络突然变得极不正常,出现恶意矿工利用网络漏洞挖矿的情况,使得整个网络基本上陷入不可用状态。

【技术贡献】对Filecoin-0.2.2开发网络的攻击手法的分析 Filecoin 第1张
近日,Filecoin用于测试使用的开发网络突然变得极不正常,出现恶意矿工利用网络漏洞挖矿的情况,使得整个网络基本上陷入不可用状态。其实,由于Filecoin网络的共识机制还没有完全实现,这个问题一直都在,对代码有研究的开发人员也心知肚明。这次攻击也是对网络的一个测试,那么攻击到底是如何发生的呢?笔者与Protolabs的开发人员进行了几轮讨论,这里做一个梳理。
Filecoin网络故障现象和初步沟通
5月23日,笔者注意到开发测试网出现异常。主要的问题是:自18日之后,就出现恶意挖矿的状况,到22日开始,情况变得非常糟糕,有矿工几乎霸占网络出块。具体现象可见下图。 【技术贡献】对Filecoin-0.2.2开发网络的攻击手法的分析 Filecoin 第2张 经过分析后,笔者即时跟核心开发人员 WhyZenGround0 进行了沟通。ZenGround0 确认:
这个问题在0.2.x发布时已经被注意到了,go-filecoin当前还是一个原型,还没有完成整个共识协议的实现,而且当前区块时间在验证中也没有被强制验证。为了阻止类似攻击,可以做两件事:1)时间戳规则;2)VDF在挖矿和验证中的实现。
【技术贡献】对Filecoin-0.2.2开发网络的攻击手法的分析 Filecoin 第3张 Why 根据此马上提了一个Issue,并进行了回复: 【技术贡献】对Filecoin-0.2.2开发网络的攻击手法的分析 Filecoin 第4张 有意思的是,在这个公开讨论过后几个小时,有人用几乎一样的内容去提了一个issue,并大张旗鼓地进行市场宣传。
攻击是如何实现的?
那么这个(些)恶意节点是如何实现攻击的呢?笔者与 Why 和 ZenGround 进行了线下邮件探讨。在目前的代码实现的基础之上其实非常简单,主要借助前面提到的没有实现VDF和时间戳验证,直接展开攻击。攻击方法大致如下:
  1. 不遵循现在版本中30秒一个区块的规则,大大降低自己产生区块的时间,以实现比他人更快地出块;(这是利用当前版本没有严格进行时间戳检查的漏洞)
  2. 过滤掉与自己无关的消息,只接受与自己有关的消息。(这个相当恶劣,使得其他人没有增加算力的机会。)
  3. 不断地利用空块来变化 ticket 值,以保证下一个有效区块的 ticket 能够保证自己能够再次出块;(仍然是利用没有验证delay 和 VDF没有实现的漏洞)
按照这种方式,人人可以展开攻击,10几行代码就可以搞定。
这个问题重要吗?
这个问题开发者早已经注意到,但到现在还没有动手,一个重要原因是在他们心中的优先级没有高到马上要进行的地步,确实,还有很多其他工作没有完成。那么这个问题重要吗?ZenGround问出了这个问题。 笔者给出了自己的看法,认为,这个问题看起来对当前的开发网而言可能不太急,但是,如果考虑到生态建设,因为有人利用此来进行市场宣传,误导投资者,贻害生态,从这点而言,应该尽快解决。Why 对此看法点赞,ZenGround表示认可。 【技术贡献】对Filecoin-0.2.2开发网络的攻击手法的分析 Filecoin 第5张
如何解决
长期的解决方案,当然是完整实现 VDF,并加强矿工验证模块。但这需要时间。 笔者在与WhyZenground 的沟通中,提出了短期解决方案,Why 很快更新了Filecoin Spec,并给出了回复。这个方案就是从时间戳入手,希望能够尽快出一个版本。 【技术贡献】对Filecoin-0.2.2开发网络的攻击手法的分析 Filecoin 第6张 注:Jeromy Johnson 是 Why 的原名。
一点启示
当前的开发网络还不成熟,这是大家都明白的事情。其中的参与者,尤其是开发者,应该从如何提升产品质量出发,考虑如何作出贡献,包括代码、测试、提issue和解决方案等。但笔者十分遗憾地看到,有些参与者不是从提升产品质量出发,而是以自我宣传作为第一目标。虽然说攻击网络也是一种测试,但测试的目标是提升产品质量,做试验可以,但不要破坏生态。

【技术贡献】对Filecoin-0.2.2开发网络的攻击手法的分析 Filecoin 第7张

原创文章,作者:IPFSforce,如若转载,请注明出处:https://ipfser.org/2019/05/27/duifilecoin-0-2-2kaifawangluodegongjishoufadefenxi/

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

邮件:ipfsforce@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code