发布Attacknet:利用混沌测试发现区块链节点漏洞的新工具

Trail of Bits发布Attacknet工具,通过与以太坊基金会合作开发,利用混沌工程注入网络故障,测试区块链节点在极端条件下的表现,提升网络安全性和可靠性。

发布Attacknet:利用混沌测试发现区块链节点漏洞的新工具

今天,Trail of Bits发布了Attacknet,这是一款新工具,旨在解决传统运行时验证工具的局限性,该工具是与以太坊基金会合作构建的。Attacknet旨在通过让执行和共识客户端面临一些最具挑战性的网络条件,来增强EF当前的测试方法。

区块链节点必须达到最高级别的安全保证。历史上,实现这一目标的主要工具是详尽的规范、测试、客户端多样性、手动审计和测试网络。虽然这些工具传统上表现良好,但它们共同存在严重的局限性,可能导致在生产环境中出现关键错误,例如2023年5月在以太坊主网上发生的最终性事件。Attacknet通过让开发网络面临比传统测试网络更广泛的网络条件和错误配置来解决这些局限性。

Attacknet的工作原理

Attacknet使用混沌工程,这是一种主动将故障注入生产环境以验证系统对某些故障的容忍度的测试方法。这些故障再现了真实世界的问题场景和错误配置,并可用于创建夸张的场景来测试区块链的边界条件。

Attacknet使用Chaos Mesh将故障注入由Kurtosis生成的开发网络环境。通过在Kurtosis和Chaos Mesh之上构建,Attacknet可以创建各种网络拓扑,并组合不同类型的故障,将区块链网络推向其最极端的边缘情况。

一些故障包括:

  • 时钟偏差:节点的时钟在特定持续时间内向前或向后偏移。Trail of Bits能够使用时钟偏差故障重现以太坊最终性事件,如我们去年在TrustX演讲中详细说明的那样。
  • 网络延迟:节点与网络(或其相应的EL/CL客户端)的连接延迟一定时间。此故障有助于重现全局延迟条件,或帮助检测区块链共识中无意的同步假设。
  • 网络分区:网络被分成两个或多个无法相互通信的段。此故障可以测试网络的分叉选择规则、重组能力和其他边缘情况。
  • 网络数据包丢弃/损坏: gossip数据包被丢弃或其内容被一定量损坏。此故障可以测试节点的gossip验证,并测试网络在敌对网络条件下的鲁棒性。
  • 强制节点崩溃/离线:某些客户端或类型的客户端被非正常关闭。此故障可以测试网络对验证器不活动的恢复能力,并测试客户端重新同步到网络的能力。
  • I/O磁盘故障/延迟:对节点进行的所有I/O操作应用一定量的延迟或错误率。此故障有助于分析节点以了解其资源需求,因为I/O通常是节点性能的最大限制因素。

故障结束后,Attacknet对网络中的每个节点执行一系列健康检查,以验证它们是否能够从故障中恢复。如果所有节点都从故障中恢复,Attacknet将继续进行下一个配置的故障。如果一个或多个节点健康检查失败,Attacknet将生成日志和测试信息的工件以允许调试。

未来工作

在此首次发布中,Attacknet支持两种运行模式:一种具有手动配置的网络拓扑和故障参数,另一种是“规划器模式”,其中针对特定客户端运行一系列故障,并具有松散定义的拓扑参数。未来,我们计划添加一种“探索模式”,该模式将动态定义故障参数、注入它们并重复监控网络健康,类似于模糊测试器。

Attacknet目前正在用于测试Dencun硬分叉,并定期更新以提高覆盖率、性能和调试用户体验。然而,Attacknet不是以太坊特定的工具,其设计是模块化的,易于扩展以支持其他具有截然不同设计和拓扑类型的链。未来,我们计划扩展Attacknet以针对其他链,包括其他类型的区块链系统,如L2。

如果您有兴趣将Attacknet与您的链/L2的测试过程集成,请联系我们。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计