CVE-2026-25627NanoMQ MQTT Broker在0.24.8版本之前的MQTT-over-WebSocket传输模块中存在安全漏洞。攻击者可以通过发送精心构造的MQTT数据包,其中包含巨大的“Remaining Length”字段但实际载荷很短,从而触发越界读取。由于程序在复制数据前未验证接收缓冲区大小,导致服务崩溃。该漏洞可被远程利用造成拒绝服务。
该漏洞的根源在于NanoMQ在处理MQTT-over-WebSocket协议时的逻辑错误。MQTT协议的固定头部包含一个“Remaining Length”字段,用于指示后续数据的字节数。在受影响的版本(< 0.24.8)中,NanoMQ的代码路径在接收到数据包后,直接依据“Remaining Length”指定的字节数从接收缓冲区中复制数据。然而,代码并未校验接收缓冲区中实际存在的数据量是否达到该长度。攻击者可以利用这一缺陷,通过WebSocket连接发送一个特制的MQTT数据包,将“Remaining Length”设置为一个极大的数值,但实际只发送极短的载荷。当NanoMQ尝试读取这些不存在的字节时,会触发越界读取,导致内存访问错误,进而引起服务崩溃,造成拒绝服务。