EMQX Enterprise 跨用户 Client ID 冲突导致拒绝服务 (DoS) 漏洞概述 EMQX Enterprise 6.1.0 及更早版本存在访问控制缺陷。攻击者可以使用任意有效的 MQTT 账户,通过伪造受害者的 Client ID 连接到 Broker,从而强制断开受害者的设备连接。 根本原因:EMQX 将 Client ID 视为唯一的会话标识符,而未将其与认证用户名绑定。 后果:在多租户或多用户环境中,允许一个用户干扰另一个用户的连接(跨用户会话接管)。 影响范围 受影响版本:EMQX Enterprise 6.1.0(更早版本可能也受影响)。 测试工具:MQTTX 1.13.0, Mosquitto Client 1.6.0。 具体影响: 攻击者无需知道受害者的密码,只需知道目标 Client ID。 在 IoT 或车联网场景下,可导致关键设备离线,造成服务中断。 攻击者可枚举或猜测常见的 Client ID 模式(如序列号、产品 ID)来影响大量设备。 修复方案 1. 强制执行复合唯一约束,将 Client ID 与用户名(或租户 ID)结合,确保不同用户可以使用相同的 Client ID 而不互相干扰。 2. 添加 Broker 配置选项,将 Client ID 绑定到特定用户,防止跨用户会话接管。 概念验证代码 (POC) 依赖安装 配置文件 (修改以下变量) 启动漏洞环境 (Docker) 攻击脚本 (修改以下变量) 执行攻击