发布Attacknet:利用混沌测试发现区块链节点漏洞的新工具
今天,Trail of Bits发布了Attacknet——一款与以太坊基金会合作开发的新工具,旨在解决传统运行时验证工具的局限性。Attacknet通过让执行和共识客户端承受最具挑战性的网络条件,来增强EF当前的测试方法。
区块链节点必须达到最高级别的安全保障。历史上实现这一目标的主要工具包括详尽的规范说明、测试、客户端多样性、手动审计和测试网。虽然这些工具传统上表现良好,但它们共同存在严重局限性,可能导致生产环境中出现关键漏洞,例如2023年5月以太坊主网发生的最终性事件。Attacknet通过让开发网承受比传统测试网更广泛的网络条件和错误配置来解决这些局限性。
Attacknet工作原理
Attacknet使用混沌工程(一种主动向生产环境注入故障以验证系统容错能力的测试方法)。这些故障复现了现实世界中的问题场景和错误配置,可用于创建极端场景来测试区块链的边界条件。
Attacknet使用Chaos Mesh向Kurtosis生成的开发网环境注入故障。通过在Kurtosis和Chaos Mesh之上构建,Attacknet可以创建具有多种故障组合的各种网络拓扑,将区块链网络推向最极端的边缘情况。
支持的故障类型包括:
- 时钟偏移:将节点的时钟向前或向后偏移特定时长
- 网络延迟:延迟节点与网络(或其对应EL/CL客户端)的连接
- 网络分区:将网络分割成两个或多个无法通信的段
- 网络数据包丢弃/损坏:丢弃通信数据包或损坏其内容
- 强制节点崩溃/离线:非正常关闭特定客户端或客户端类型
- I/O磁盘故障/延迟:对节点的所有I/O操作施加延迟或错误率
故障结束后,Attacknet对网络中每个节点执行健康检查,验证其从故障中恢复的能力。如果所有节点恢复,则继续下一个配置的故障;如果有节点失败,将生成日志和测试信息工件以供调试。
未来工作
在当前首发版本中,Attacknet支持两种运行模式:手动配置网络拓扑和故障参数的模式,以及针对特定客户端运行一系列故障的"规划模式"。未来计划添加"探索模式",动态定义故障参数并重复注入和监控网络健康状态,类似于模糊测试。
Attacknet目前正用于测试Dencun硬分叉,并持续更新以改进覆盖率、性能和调试体验。该工具并非以太坊专用,采用模块化设计可轻松扩展支持其他类型的链。未来计划扩展支持其他区块链系统,包括L2等其他类型的链。
如果您有兴趣将Attacknet集成到您的链/L2测试流程中,请联系我们。