IPBUF安全漏洞报告
English
CVE-2026-39304 CVSS 7.5 高危

CVE-2026-39304 Apache ActiveMQ内存耗尽漏洞

披露日期: 2026-04-10

漏洞信息

漏洞编号
CVE-2026-39304
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Apache ActiveMQ

相关标签

拒绝服务内存耗尽Apache ActiveMQTLSv1.3KeyUpdateCVE-2026-39304

漏洞概述

该漏洞存在于Apache ActiveMQ的NIO SSL传输组件中。由于未能正确处理TLSv1.3握手期间的KeyUpdate请求,恶意客户端可利用此缺陷快速触发大量密钥更新操作。这将导致Broker端SSL引擎内存迅速耗尽,从而引发拒绝服务攻击,严重影响系统可用性。

技术细节

Apache ActiveMQ在使用NIO SSL传输协议时,未能正确实现TLSv1.3规范中的KeyUpdate处理逻辑。根据TLSv1.3协议,客户端和服务器可以在不重新握手的情况下更新发送密钥。然而,ActiveMQ的SSL引擎在处理NIO连接时,没有对客户端发送的KeyUpdate请求频率进行有效限制,且对每个请求的内存管理存在缺陷。攻击者无需经过身份验证,即可远程连接到Broker的NIO SSL端口。通过脚本恶意构造并发送高频率的KeyUpdate握手消息,攻击者可以迫使Broker不断为SSL上下文分配内存。由于内存释放机制滞后,这种持续的分配会迅速耗尽JVM堆内存,导致服务进程因Out of Memory异常而崩溃或停止响应。尽管TLSv1.2及更早版本也存在类似握手问题,但仅导致连接挂起而非OOM,本次修复也涵盖了对旧版本的改进。

攻击链分析

STEP 1
侦察
攻击者扫描目标网络,发现开启的Apache ActiveMQ NIO SSL端口(通常为61617)。
STEP 2
建立连接
攻击者使用TLSv1.3协议与目标Broker建立SSL连接,无需身份验证。
STEP 3
触发漏洞
攻击者通过客户端向Broker发送高频的TLS KeyUpdate握手请求。
STEP 4
耗尽资源
Broker的SSL引擎因无法正确处理大量KeyUpdate请求,导致堆内存迅速耗尽。
STEP 5
拒绝服务
Broker进程因内存溢出崩溃或停止响应,导致服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import ssl # This is a conceptual PoC. It simulates the connection logic. # Actual exploitation requires crafting raw TLS KeyUpdate records (ContentType 24). def exploit_oom(host, port): try: # Establish TCP connection sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) print(f"[+] Connecting to {host}:{port}...") sock.connect((host, port)) # Wrap socket with SSL context (TLS 1.3) context = ssl.SSLContext(ssl.PROTOCOL_TLS) context.check_hostname = False context.verify_mode = ssl.CERT_NONE # Perform TLS Handshake ssl_sock = context.wrap_socket(sock, server_hostname=host) print(f"[+] TLS Handshake established.") # In a real exploit scenario, the attacker would send a flood of # KeyUpdate requests here. Standard Python 'ssl' library does not # support sending raw KeyUpdate records directly. # The vulnerability is triggered by rapid KeyUpdate packets. print("[!] Sending malicious KeyUpdate packets (Simulated)...") # Malicious loop would go here: send(construct_keyupdate_record()) ssl_sock.close() print("[+] Connection closed.") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": target_host = "192.168.1.100" target_port = 61617 # Default ActiveMQ NIO SSL port exploit_oom(target_host, target_port)

影响范围

Apache ActiveMQ Client < 5.19.4
Apache ActiveMQ Client >= 6.0.0, < 6.2.4
Apache ActiveMQ Broker < 5.19.4
Apache ActiveMQ Broker >= 6.0.0, < 6.2.4
Apache ActiveMQ < 5.19.4
Apache ActiveMQ >= 6.0.0, < 6.2.4

防御指南

临时缓解措施
若无法立即升级,建议暂时禁用NIO SSL传输连接器(transportConnector),改用普通TCP连接或其他加密方案,并在网络边界通过防火墙限制对ActiveMQ端口的访问来源。

参考链接

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