panic: proto: illegal wireType
【问题分类】
- bug
- P2P网络相关(包含libp2p,liquid)
- 链账户身份与权限相关(证书问题、public、多签投票问题)
- 核心交易引擎相关(交易池、DAG)
- 共识相关
- 智能合约相关
- 存储相关
- SDK相关
- 长安链CMC工具
- 长安链管理台
- 长安链浏览器
- 长安链合约IDE
- 长安链web签名插件
- 跨链相关
- 轻节点相关
- 隐私计算相关
- 密码学相关
- 环境依赖
- 其他补充:
【问题描述】
类似于Issue 1135,代码没有正确的处理消息攻击包,攻击路径不同
具体的现象,操作步骤
TBFT共识模式下,一个攻击节点发送wireType类型与内容不对应的拜占庭攻击消息包时,其它所有的正常节点收到消息后立马panic崩溃。
【相关日志文件】(如果有报错日志请贴图,或者上传附件)
【问题定位分析】
在consensus_tbft_impl.go,通过msgbus
的OnMessage入口传入恶意消息包,随后调用的createConsensusMsgFromTBFTMsgBz
函数中没有对消息包做防护性处理,直接调用的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