CVE-2025-68686: FortiOS SSL-VPN Symlink Patch Bypass — How to Find Affected Instances
This is not an initial-access vulnerability, and its CVSS base score of 5.9 will not put it near the top of anyone's queue. It is on the CISA KEV catalog anyway, with a federal remediation deadline of August 10, 2026 — today. The reason is what it protects: a 2025 attacker technique that left read-only access to the FortiGate filesystem in place after the original vulnerability was patched. Fortinet shipped a fix for that technique. CVE-2025-68686 is a bypass of that fix. Here's how to find affected instances and what to ask for when you do.
What Was Actually Patched in 2025
In April 2025, Fortinet documented a persistence technique it had observed in the field. After compromising a FortiGate through a known vulnerability, threat actors created a symbolic link "in a folder used to serve language files for the SSL-VPN," connecting the user filesystem to the root filesystem. The significant detail is where that change lived. In Fortinet's words: "this modification took place in the user filesystem and avoided detection. Therefore, even if the customer device was updated with FortiOS versions that addressed the original vulnerabilities, this symbolic link may have been left behind."
The result was read-only access to files on the device's filesystem, "which may include configurations." Read-only is a genuine limit and worth stating plainly — this was never code execution. But a FortiGate configuration is not a low-value file. It carries interface and routing detail, VPN settings, policy, and credential material. An attacker holding a persistent read channel to it retains a foothold that patching the entry vector does nothing to close.
Fortinet's remediation had two halves. Upgrading to 7.6.2, 7.4.7, 7.2.11, 7.0.17, or 6.4.16 would "remove the malicious symbolic link", and the SSL-VPN UI was modified "to prevent the serving of such malicious symbolic links." The first half cleans up what is already there. The second half is the control that stops it working again.
The Bypass
CVE-2025-68686 (CWE-200) defeats that second half. Fortinet describes it as a flaw in FortiOS SSL-VPN that "may allow a remote unauthenticated attacker to bypass the patch developed for the symbolic link persistency mechanism observed in some post-exploit cases, via crafted HTTP requests." The hardening that was supposed to stop the SSL-VPN from serving a malicious symlink can be worked around with the right request.
- CVSS: 5.9 base (v3.1) — AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N. Fortinet's advisory displays 5.3 because its published vector appends temporal metrics (E:P/RL:O/RC:C); the base score is the same 5.9 either way
- CWE: CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor)
- IMPACT: Confidentiality only — C:H/I:N/A:N. Read access to filesystem contents. Not code execution
- PREREQUISITE: Fortinet states this "can only be abused as a consequence of a threat actor exploiting a known vulnerability to implement read-only access to vulnerable FortiGate devices, at file system level"
- AFFECTED: FortiOS 7.6.0–7.6.1 · 7.4.0–7.4.6 · 7.2 all versions · 7.0 all versions · 6.4 all versions
- FIXED: 7.6.2 or above · 7.4.7 or above. For 7.2, 7.0 and 6.4 Fortinet gives no in-branch fix — the instruction is to migrate to a fixed release
- NOT IMPACTED: Fortinet states "Products that never had SSL-VPN enabled, are not impacted by this issue."
- EXPLOITED: CISA KEV added July 27, 2026, remediation due August 10, 2026. Known ransomware use: Unknown
- ADVISORY: FG-IR-25-934 — credited to Peter Gabaldon (ITRESIT)
Three Branches With No In-Branch Fix
The remediation table deserves attention. FortiOS 7.6 and 7.4 have fixed builds — 7.6.2 and 7.4.7. For 7.2, 7.0 and 6.4, all versions are listed as affected and the guidance is to migrate to a fixed release. Those three branches received the original symlink remediation in 2025 (7.2.11, 7.0.17, 6.4.16) but get no build that closes the bypass. An operator on 7.0 who patched diligently last year, confirmed the symlink was removed, and considers the matter closed is on a branch where this issue has no fix at all short of a major upgrade.
Two Sources That Disagree
Fortinet's advisory page currently reports Known Exploited: No. CISA added the CVE to its Known Exploited Vulnerabilities catalog on July 27, 2026. Both statements are worth reading with their dates attached: FG-IR-25-934 was published February 10, 2026 and last revised March 12, 2026, so its exploitation field predates the KEV listing by more than four months rather than contradicting it. Cite the KEV catalog for exploitation status and the vendor advisory for version scope, and do not let a stale "No" on the vendor page settle the question.
Fortinet Coverage
Two KEV-listed Fortinet flaws at opposite ends of the intrusion lifecycle — one is a way in, one is what survives afterwards:
- • CVE-2025-68686 — you are here
- • CVE-2026-25089 — FortiSandbox unauthenticated OS command injection, CVSS 9.8, KEV-listed
Investigation Workflow
One caveat governs everything below. Remote scanning can establish that a FortiGate exists, that it presents an SSL-VPN portal, and sometimes which firmware branch it runs. It cannot establish the prerequisite — that a device was previously compromised at filesystem level. Discovery here produces a list of candidates for compromise review, not a list of victims, and it is worth saying so in the report before somebody reads a port scan as an incident.
1. Port Scan: Find FortiGate SSL-VPN Portals
SSL-VPN is the affected surface, so enumerate where it is listening:
- • 443 — SSL-VPN web portal on the default configuration
- • 10443 — very common alternate SSL-VPN port when 443 is used by something else
- • 8443, 4443 — other frequently chosen alternates
- • 541, 8013 — FortiManager and FortiGate management channels, useful for identifying the estate
Because the port is operator-chosen, an SSL-VPN portal on a non-standard port is normal rather than suspicious. Scan a range and fingerprint what answers, rather than checking 443 and concluding the portal is absent.
2. TLS Inspect: Identify Fortinet Certificates
Read the certificate on each candidate port. FortiGate devices commonly present a self-signed certificate with FortiGate or Fortinet in the subject or issuer, and default deployments often retain a factory certificate naming the model or serial. Where operators have installed a public certificate, the SAN list usually still carries a vpn.* or remote.* hostname that identifies the function.
3. HTTP: Fingerprint the SSL-VPN Portal
The FortiGate SSL-VPN login portal is distinctive. Look for /remote/login, redirects to /remote/login?lang=, and static assets served from /sslvpn/ paths. The lang parameter is a direct pointer at this issue: the language-file directory is exactly where the 2025 symlink was planted, which is why the SSL-VPN UI hardening — and this bypass of it — lives on that code path.
Restrict this to unauthenticated fingerprinting of systems you are authorised to test. Establishing that a portal exists and which branch serves it is discovery; attempting to retrieve files through the symlink path is exploitation, and on a device that may already be compromised it also risks contaminating evidence.
4. DNS: Map the Remote-Access Estate
Query for the names organisations give remote access: vpn.*, sslvpn.*, remote.*, fw.*, fortigate.*, fg-*. Branch offices and acquired subsidiaries are where forgotten FortiGates live, and an old 6.4 or 7.0 device at a remote site is precisely the profile with no in-branch fix.
5. CVE Lookup: Confirm Status and Scope
Pull CVE-2025-68686 and note both scores — 5.9 base at NVD, 5.3 as displayed by Fortinet with temporal metrics applied. Neither number reflects the KEV listing, which is the reason this is on today's deadline rather than next quarter's backlog.
Cross-Reference with External Data
- SHODAN: Search http.title:"FortiGate" or http.html:"/remote/login" to find internet-exposed SSL-VPN portals (passive)
- CVE LOOKUP: CVE-2025-68686 — 5.9 base (NVD), 5.3 displayed by Fortinet with temporal metrics
- CISA KEV: Added July 27, 2026; remediation due August 10, 2026 under BOD 26-04. The deadline binds federal civilian agencies; the exploitation evidence applies to everyone
- FORTINET ADVISORY: FG-IR-25-934 — note its "Known Exploited" field predates the KEV listing
- VIRTUAL PATCH: Fortinet lists FG-VD-60389.0day in FMWP database update 26.033 for operators who cannot upgrade immediately
Remediation
- Upgrade to 7.6.2 or 7.4.7 and above. If you run 7.2, 7.0, or 6.4, there is no fixed build in your branch — plan a migration to a fixed release rather than waiting for a patch that is not coming.
- Establish whether SSL-VPN was ever enabled. Fortinet states that products which never had SSL-VPN enabled are not impacted. The operative word is never. A device with SSL-VPN disabled today, but enabled at some point during the exposure window, does not meet that bar — check configuration history, not just the running config.
- Apply the virtual patch if you cannot upgrade now. FG-VD-60389.0day in FMWP database update 26.033 is Fortinet's stopgap; it requires a licensed and enabled engine to do anything.
- Treat this as an incident-response question, not just a patching one. The prerequisite is a prior compromise. If a device was running an affected build with SSL-VPN enabled, the question is not only "is it patched now" but "was a symlink ever planted, and what was read through it." Review for unexpected symbolic links in the SSL-VPN language-file directory.
- Assume configuration disclosure and rotate accordingly. If review indicates the device was compromised, the configuration should be treated as read by a third party: rotate local accounts, VPN pre-shared keys, certificates, RADIUS and LDAP bind credentials, and any shared secrets the config carries. Upgrading removes the symlink; it does not un-disclose what was already read.
- Scope the log review to the whole exposure window. The 2025 technique was designed to survive upgrades and evade detection, so the relevant period runs from when the device was first exposed on an affected build — not from the KEV date, and not from the date you upgraded.
Triage Notes
- REMOTE DISCOVERY PROVES: that a FortiGate SSL-VPN portal is reachable at a given address, and sometimes which firmware branch serves it.
- IT DOES NOT PROVE: that the device was previously compromised at filesystem level — the stated prerequisite. Discovery yields candidates for compromise review, not confirmed victims. It also cannot establish whether SSL-VPN was enabled historically.
- EVIDENCE TO REQUEST: exact FortiOS build and full upgrade history covering April 2025 onward; whether SSL-VPN has ever been enabled, with configuration history rather than current state; whether the 2025 remediation build (7.6.2 / 7.4.7 / 7.2.11 / 7.0.17 / 6.4.16) was applied and when; FMWP licence status for the virtual patch; a filesystem review for unexpected symlinks in the SSL-VPN language-file directory.
- ESCALATE TO INCIDENT RESPONSE IF: the device ran an affected build with SSL-VPN enabled during a period when it was exposed and any prior FortiOS compromise is suspected or unexplained; or if review finds symlinks in the language-file directory. Escalation here is about historical exposure, not current patch level.
- FINDING STATEMENT: "A FortiGate running [build] with SSL-VPN enabled is affected by CVE-2025-68686, a bypass of the patch Fortinet developed for the symbolic link persistence technique documented in April 2025. The issue is rated CVSS 5.9 base (confidentiality only, no code execution) and was added to the CISA KEV catalog on 2026-07-27 with remediation due 2026-08-10. Exploitation requires a prior filesystem-level compromise; where that cannot be excluded, the device configuration should be treated as potentially disclosed and its secrets rotated. Branches 7.2, 7.0 and 6.4 have no in-branch fix and require migration to a fixed release."
Every tool used in this investigation — port scan, TLS inspect, HTTP headers, DNS, CVE lookup — runs from your phone in RECON. Get it on the App Store.
Follow @hellorecon for new CVE investigations.
Sources
- → Fortinet PSIRT: FG-IR-25-934 (CVE-2025-68686)
- → Fortinet PSIRT Blog: Analysis of Threat Actor Activity (April 2025 symlink technique)
- → NVD: CVE-2025-68686
- → CISA Known Exploited Vulnerabilities Catalog (CVE-2025-68686 added July 27, 2026)
Get the next investigation
New CVE teardowns — root cause from the source, a working proof-of-concept, and how to check your own estate — in your inbox when they publish. No spam, unsubscribe anytime.