漏洞概述 该漏洞是 NanoMQ 项目中的 HTTP 认证模块崩溃问题。当使用 / 占位符(用户名/密码)进行 HTTP 认证时,如果连接为匿名连接(无用户名/密码),会导致程序崩溃。 影响范围 组件: 触发条件: - MQTT 认证请求使用 HTTP 认证方式 - 配置中使用 (用户名)或 (密码)占位符 - 客户端以匿名方式连接( 为 NULL 或空字符串) 风险: 远程可触发的 SIGSEGV 信号和 Broker DoS(拒绝服务) 修复方案 核心修复代码 修复措施(三点) 1. 增加 NULL 和空字符串检查: 在 中对 进行校验 2. 避免空字符串调用 : 对于 GET 请求,当未构建有效参数时(如用户名/密码缺失),防止对空字符串调用 3. 防止远程触发的崩溃: 杜绝由 HTTP 认证引起的 SIGSEGV 信号和 Broker DoS 额外改进 MQTT 认证请求不再发送空的 POST/PUT 请求体 不再向其他 HTTP 请求追加空查询参数 请求和 URL 构造更加健壮,确保可预测的请求行为 代码审查建议 Copilot 建议补充测试用例:模拟匿名连接场景(NULL 用户名/密码),以防止回归。