全球几百万开发者信赖的消息队列中间件RabbitMQ,最近被安全团队Miggo挖出两个访问控制缺陷,一个能让攻击者通过单次请求窃取OAuth客户端密钥,直接拿下整个消息代理的管理员权限;另一个则允许任意已登录用户悄悄翻阅同虚拟主机内其他租户的队列元数据。用Miggo的话说,第一个漏洞就像在管理端口上开了一扇不锁的门,第二个则是把多租户隔离的墙糊成了纸。

这两个漏洞编号CVE-2026-57219和CVE-2026-57221,分别评到8.7分和5.3分的CVSS严重度。它们从2024年初就藏在代码里,影响RabbitMQ自3.13.0及之后的所有版本,直到今年4月发布的4.3.0、4.2.6、4.1.11、4.0.20和3.13.15才完成修补。官方说没有发现在公开披露前被利用的迹象,但如果你家的RabbitMQ管理界面裸奔在公网上,最好现在就去翻一下访问日志。

打开网易新闻 查看精彩图片

怎么理解这两个洞的实际杀伤力?咱们一条条拆开看。

第一,CVE-2026-57219:一个早该废弃的接口,直接交出OAuth客户端密钥这个8.7分的漏洞,出在一个名为“GET /api/auth”的旧版HTTP接口上。只要在RabbitMQ的OAuth 2配置里用过management.oauth_client_secret这个配置键,攻击者直接发一个请求就能拿到客户端密钥。拿到密钥后,把它兑换成管理员令牌,整个RabbitMQ上的消息、队列、用户、Broker设置就全归他了。Miggo在分析中指出,这个端点的权限检查被“硬编码”成了始终放行,跟其他所有敏感的管理端口完全不一样。换句话说,不是开发者忘了加权限,而是明晃晃写了个允许所有人通过的逻辑。

第二,CVE-2026-57221:任意登录用户都能翻看其他租户的队列名、消息数和消费者数量。这个5.3分的漏洞更偏向数据泄露。任何能连进某个虚拟主机的认证用户,哪怕他的实际权限只允许操作自己的队列,也能枚举出该虚拟主机内的全部队列和交换机名称,还能读到队列的消息计数和消费者计数。Miggo解释,这是授权检查缺失,网关直接把不该给的数据全吐了出来。

这两个漏洞的风险,在管理端口暴露给不可信网络时会瞬间放大——典型场景就是云环境、多租户部署,或者有人手滑把管理界面映射到了公网。Miggo的措辞很直接:“风险最高的时候,就是你让不可信网络能摸到管理端口的那一刻。”

如果你在用受影响的版本,除了立刻打补丁,还得做四件事:一是轮换OAuth客户端密钥,尤其是管理接口之前能从互联网直接访问的;二是限制对端口15672的访问,别让管理界面暴露在网络上;三是按虚拟主机做租户隔离;四是如果暂时没法打补丁,就在防火墙上直接封堵那个有问题的“/api/auth”端点。

这次公布漏洞的同一天,RabbitMQ的维护者还修复了两个严重级缺陷,一个TLS客户端认证绕过漏洞评了9.1分,另一个能让中间人攻击者伪造JWKS响应、让Broker接受任意JWT的漏洞高达9.2分。不到两个月连爆四个可供接管或绕过的漏洞,消息中间件的安全水位确实让人绷紧神经。