Panic Error: 节点宕机,代码没有正确的处理消息攻击包
【问题分类】
- bug 消息处理代码缺乏有效的安全防护机制
【问题描述】
TBFT共识模式下,一个攻击节点发送拜占庭攻击消息包时,其它所有的正常节点收到消息后立马panic崩溃。
- 启动TBFT共识长安链,10个节点,其中一个为拜占庭攻击节点,会随机变异发送出去的消息包,进行模糊测试fuzzing
- 一段时间后所有的正常节点全部宕机,具体报错日志如下图所示:
【相关日志文件】
【问题定位分析】
consensus-utils/consistent_service/consistent_service.go 代码中在处理接收的消息前,需要对消息的语法格式、合法性等作出判断,否则后面decode过程调用mustUnmarshal会直接panic,如下图所示:
【系统信息】
-
**chainmaker-go version * : [v2.3.5]
-
**OS & version * :Linux version 5.15.0-105-generic, 20.04.1-Ubuntu
-
**docker镜像 version:
Client: Docker Engine - Community Version: 27.0.3 API version: 1.46 Go version: go1.21.11
Server: Docker Engine - Community Engine: Version: 27.0.3 API version: 1.46 (minimum version 1.24) Go version: go1.21.11
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information