一、漏洞简介

1.1 漏洞背景

RocketMQ 的设计理念强调高性能和易用性,默认配置下不启用身份认证机制。这导致在许多部署场景中,RocketMQ 的各个组件(NameServer、Broker、Controller、Dashboard)直接暴露且无需任何认证即可访问,形成严重的未授权访问风险。

1.2 漏洞概述(包含 CVE 编号、危害等级、漏洞类型、披露时间等)

项目 内容
漏洞编号 暂无统一编号
危害等级 暂未找到权威信息
漏洞类型 未授权访问漏洞
披露时间 暂未找到权威信息
影响组件 Apache RocketMQ 安全
属性 详情
CVE编号 无独立 CVE(设计缺陷/配置问题)
漏洞类型 未授权访问 / 认证绕过
危害等级 高(High)
CVSS评分 根据暴露程度评估为 7.5-9.1
影响组件 NameServer、Broker、Controller、RocketMQ Dashboard

漏洞描述:RocketMQ 默认配置下不启用访问控制(ACL),攻击者可直接访问 NameServer、Broker 等组件的管理接口,执行敏感操作包括: - 查看集群配置和拓扑信息 - 修改配置参数 - 创建/删除 Topic - 发送/消费消息 - 执行管理命令

<hr />

核验说明:该问题未见统一 CVE 编号,本文结合原文与公开资料进行整理。

二、影响范围

2.1 受影响的版本

所有版本:除非显式配置了 ACL,否则所有 RocketMQ 版本都存在此问题。

2.2 不受影响的版本

无独立版本修复,需通过配置启用 ACL。

2.3 触发条件(如特定模块、特定配置、特定运行环境等)

  1. 组件暴露:RocketMQ 组件端口可从外部访问
  2. ACL 未启用aclEnable=false(默认值)
  3. 无网络隔离:未通过防火墙、VPN 等手段限制访问

风险端口: - 9876:NameServer - 10911:Broker VIP - 10909:Broker HA - 8080:Dashboard(如部署) - 10912:Broker Fast failure

<hr />

三、漏洞详情与原理解析

3.1 漏洞触发机制

默认配置问题

# broker.conf 默认配置
aclEnable=false  # ACL 默认关闭

未授权访问的影响

组件 可执行操作
NameServer 查看 Topic 路由、Broker 注册信息、更新配置
Broker 创建/删除 Topic、发送消息、消费消息、更新配置、查看运行状态
Dashboard 可视化管理集群、执行所有管理操作

3.2 源码层面的根因分析(结合源码与补丁对比)

ACL 检查逻辑(简化示意):

public class AccessValidator {
    private boolean aclEnable = false;  // 默认关闭

    public void validate(ChannelHandlerContext ctx, RemotingCommand request) {
        if (!aclEnable) {
            return;  // ACL 未启用,直接放行
        }
        // 执行 ACL 验证逻辑
        // ...
    }
}

问题根源: - 出于性能和易用性考虑,ACL 默认关闭 - 用户未意识到安全风险,未主动配置访问控制 - 组件直接绑定到 0.0.0.0,监听所有网络接口

<hr />

四、漏洞复现(可选)

4.1 环境搭建

使用默认配置启动 RocketMQ:

# 启动 NameServer
nohup sh bin/mqnamesrv &

# 启动 Broker
nohup sh bin/mqbroker -n localhost:9876 &

4.2 PoC 演示与测试过程

1. 使用 RocketMQ 命令行工具测试未授权访问

# 查看 Topic 列表(无需认证)
sh bin/mqadmin topicList -n <target_ip>:9876

# 创建 Topic(无需认证)
sh bin/mqadmin updateTopic -n <target_ip>:9876 -b <target_ip>:10911 -t evil_topic

# 发送消息(无需认证)
sh bin/mqadmin sendMessage -n <target_ip>:9876 -t evil_topic -p "malicious payload"

# 查看集群信息
sh bin/mqadmin clusterList -n <target_ip>:9876

2. 使用 Nmap 探测

nmap -sV -p 9876,10911 <target_ip>

3. 直接 TCP 连接测试

import socket

def test_unauthorized_access(host, port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((host, port))

    # 发送 RocketMQ 协议握手
    # 如果收到正常响应,说明存在未授权访问
    # ...
<hr />

五、修复建议与缓解措施

5.1 官方版本升级建议

  • 暂未找到权威信息,建议以厂商安全公告、修复提交记录或发布说明为准。

5.2 临时缓解方案(如修改配置文件、关闭相关模块、增加 WAF 规则等)

1. 网络隔离(最优先)

# 仅允许内网访问
iptables -A INPUT -p tcp --dport 9876 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 9876 -j DROP

iptables -A INPUT -p tcp --dport 10911 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 10911 -j DROP

2. 绑定内网地址

修改配置文件,仅绑定内网 IP:

# broker.conf
brokerIP1=<内网IP>

# namesrv.conf
bindAddress=<内网IP>

3. 部署在私有网络

  • 使用 VPC 隔离
  • 通过 VPN 访问管理接口
  • 使用跳板机/堡垒机进行运维

4. 监控与告警

配置日志监控,检测异常访问:

# 监控配置更新操作
tail -f ~/logs/rocketmqlogs/broker.log | grep -E "updateBrokerConfig|updateNamesrvConfig"
<hr />

六、参考信息 / 参考链接

6.1 官方安全通告

  • RocketMQ ACL 配置文档:https://rocketmq.apache.org/docs/acl/
  • RocketMQ 安全最佳实践:https://rocketmq.apache.org/docs/bestPractice/

6.2 其他技术参考资料

  • RocketMQ 官方文档
  • Apache RocketMQ GitHub Wiki
<hr />

附录:漏洞影响总结

漏洞 CVE编号 影响组件 CVSS 修复版本
RCE 漏洞 #1 CVE-2023-33246 NameServer/Broker/Controller ~9.8 5.1.1+ / 4.9.6+
RCE 漏洞 #2 CVE-2023-37582 NameServer ~9.8 5.1.2+ / 4.9.7+
未授权访问 N/A 所有组件 ~7.5-9.1 配置 ACL
<hr />

安全加固检查清单

  • [ ] 升级到最新安全版本(5.1.2+ 或 4.9.7+)
  • [ ] 启用 ACL 访问控制
  • [ ] 配置强密码和密钥
  • [ ] 网络隔离,禁止公网直接访问
  • [ ] 定期审计访问日志
  • [ ] 配置监控告警机制
  • [ ] 制定应急响应预案
<hr />

报告生成时间:2026-03-21 文档版本:v1.0