查看原文
其他

对Filecoin-0.2.2开发网络的攻击手法的分析?

Steven 胡飞瞳 2023-04-21

近日,Filecoin用于测试使用的开发网络突然变得极不正常,出现恶意矿工利用网络漏洞挖矿的情况,使得整个网络基本上陷入不可用状态。其实,由于Filecoin网络的共识机制还没有完全实现,这个问题一直都在,对代码有研究的开发人员也心知肚明。这次攻击也是对网络的一个测试,那么攻击到底是如何发生的呢?笔者与Protolabs的开发人员进行了几轮讨论,这里做一个梳理。


Filecoin网络故障现象和初步沟通

5月23日,笔者注意到开发测试网出现异常。主要的问题是:自18日之后,就出现恶意挖矿的状况,到22日开始,情况变得非常糟糕,有矿工几乎霸占网络出块。具体现象可见下图。


经过分析后,笔者即时跟核心开发人员 WhyZenGround0 进行了沟通。ZenGround0 确认:

这个问题在0.2.x发布时已经被注意到了,go-filecoin当前还是一个原型,还没有完成整个共识协议的实现,而且当前区块时间在验证中也没有被强制验证。为了阻止类似攻击,可以做两件事:1)时间戳规则;2)VDF在挖矿和验证中的实现。



Why 根据此马上提了一个Issue,并进行了回复:


有意思的是,在这个公开讨论过后几个小时,有人用几乎一样的内容去提了一个issue,并大张旗鼓地进行市场宣传。



攻击是如何实现的?

那么这个(些)恶意节点是如何实现攻击的呢?笔者与 Why 和 ZenGround 进行了线下邮件探讨。在目前的代码实现的基础之上其实非常简单,主要借助前面提到的没有实现VDF和时间戳验证,直接展开攻击。攻击方法大致如下:

  1. 不遵循现在版本中30秒一个区块的规则,大大降低自己产生区块的时间,以实现比他人更快地出块;(这是利用当前版本没有严格进行时间戳检查的漏洞)

  2. 过滤掉与自己无关的消息,只接受与自己有关的消息。(这个相当恶劣,使得其他人没有增加算力的机会。)

  3. 不断地利用空块来变化 ticket 值,以保证下一个有效区块的 ticket 能够保证自己能够再次出块;(仍然是利用没有验证delay 和 VDF没有实现的漏洞)


按照这种方式,人人可以展开攻击,10几行代码就可以搞定。


这个问题重要吗?

这个问题开发者早已经注意到,但到现在还没有动手,一个重要原因是在他们心中的优先级没有高到马上要进行的地步,确实,还有很多其他工作没有完成。那么这个问题重要吗?ZenGround问出了这个问题。


笔者给出了自己的看法,认为,这个问题看起来对当前的开发网而言可能不太急,但是,如果考虑到生态建设,因为有人利用此来进行市场宣传,误导投资者,贻害生态,从这点而言,应该尽快解决。Why 对此看法点赞,ZenGround表示认可。


如何解决

长期的解决方案,当然是完整实现 VDF,并加强矿工验证模块。但这需要时间。


笔者在与WhyZenground 的沟通中,提出了短期解决方案,Why 很快更新了Filecoin Spec,并给出了回复。这个方案就是从时间戳入手,希望能够尽快出一个版本。

注:Jeromy Johnson 是 Why 的原名。


一点启示

当前的开发网络还不成熟,这是大家都明白的事情。其中的参与者,尤其是开发者,应该从如何提升产品质量出发,考虑如何作出贡献,包括代码、测试、提issue和解决方案等。但笔者十分遗憾地看到,有些参与者不是从提升产品质量出发,而是以自我宣传作为第一目标。虽然说攻击网络也是一种测试,但测试的目标是提升产品质量,做试验可以,但不要破坏生态。




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存