漏洞概述 标题: [SECURITY] SBN subscription/unsubscription parser reads past real network payload due to missing MsgSz boundary check #1074 描述: 漏洞类型: 边界检查缺失导致的越界读取 影响: 解析器在解析SBN(Space Bus Network)订阅/取消订阅消息时,未验证声明的订阅计数是否与实际接收的网络载荷长度匹配。这可能导致解析器读取超出实际网络载荷范围的内存,从而可能泄露或篡改敏感数据。 影响范围 受影响组件: 函数 具体场景: 在解析SBN订阅/取消订阅消息时,如果声明的订阅计数大于实际接收的网络载荷长度,解析器会继续读取超出实际载荷范围的内存。 潜在风险: - 数据泄露:可能读取到未初始化的内存或敏感信息。 - 状态篡改:可能篡改对等节点的订阅状态,导致网络行为异常。 修复方案 1. 增加边界检查: - 在解析订阅/取消订阅消息时,增加对声明的订阅计数与实际接收的网络载荷长度的边界检查。 - 如果声明的订阅计数大于实际接收的网络载荷长度,应拒绝该消息并记录错误。 2. 代码示例: 3. 建议的修复步骤: - 在 函数中,增加对 的边界检查。 - 如果 大于实际接收的网络载荷长度,返回错误并记录日志。 - 确保所有解析操作都在实际网络载荷范围内进行。 相关代码 总结 该漏洞是由于在解析SBN订阅/取消订阅消息时,未对声明的订阅计数与实际接收的网络载荷长度进行边界检查,导致解析器可能读取超出实际载荷范围的内存。修复方案包括增加边界检查和确保所有解析操作在实际网络载荷范围内进行。