Authentication Bypass in Fortinet FortiClient EMS
CVE-2026-35616 is a critical improper access control vulnerability in Fortinet FortiClient Endpoint Management Server (EMS) affecting versions 7.4.5 and 7.4.6. The flaw allows a remote, unauthenticated attacker to bypass the EMS API's certificate-based authentication and send privileged administrative requests via crafted HTTP requests. Supporting reporting indicates the issue stems from EMS trusting attacker-controlled HTTP headers used to convey client-certificate state, including X-SSL-CLIENT-VERIFY and X-SSL-CLIENT-CERT, across a trust boundary. The application accepted spoofed values as if they had been set by the front-end web server after a legitimate TLS client-certificate handshake, enabling unauthorized access to administrative EMS functionality. Researchers also reported weak certificate validation behavior based on Distinguished Name string matching rather than full cryptographic verification. In observed intrusions, attackers used the resulting administrative access to modify EMS configuration, Remote Access Profiles, and endpoint policies, and to push malicious scripts and payloads to managed endpoints.
Are you exposed to this one?
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
Impact, mitigation & remediation
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
Impact
What an attacker gets, and what they’ve been doing with it.
Mitigation
If you can’t patch tonight, do this now.
Remediation
Patch, then assume compromise.
Exploits
2 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (8 hidden).
This repository is a small standalone Python exploit for CVE-2026-35616 targeting a Fortinet API certificate-chain verification bypass. The repo contains three files: a README with usage guidance, one executable exploit script (exploit.py), and a requirements file. The exploit is not framework-based. Core capability: the script attempts to bypass client-certificate based access controls on Fortinet API endpoints by discovering acceptable CA/Common Names, generating a forged self-signed X.509 certificate with a candidate CN, and sending requests that spoof upstream TLS-authentication headers. It uses the headers X-SSL-CLIENT-VERIFY: SUCCESS and X-SSL-CLIENT-CERT containing a URL-encoded PEM certificate. If the target trusts these headers improperly, the script can access protected API routes. Operational flow: it builds a target base URL from command-line arguments (default 172.16.50.51:443), optionally enumerates acceptable client certificate CA names via openssl s_client, tests candidate CNs against /api/v1/system/capabilities, selects a working CN when HTTP/retval indicate success, then probes several additional API endpoints. It stores results in a JSON file under results/ and prints equivalent curl commands for manual verification. Notable targeted endpoints include /api/v1/system/capabilities, /api/v1/system/version, /api/v1/settings/server/public_address, /api/v1/fabric_device_auth/fortigate/init, and /api/v1/fortigate/info. The exploit is operational rather than a simple detector because it actively forges a certificate, performs authenticated bypass attempts, and retrieves protected API data. The payload is basic and hardcoded around header/certificate spoofing rather than a customizable post-exploitation framework.
This repository is a small standalone Python PoC for CVE-2026-35616 affecting Fortinet FortiClient EMS. It contains only two files: a README with usage/affected-version notes and one executable script, cve_2026_35616.py, which is the clear entry point. The script is not part of a larger exploit framework. The exploit targets a pre-authentication bypass in certificate-based authentication logic. Its core technique is to generate a self-signed X.509 certificate on the fly, URL-encode it, and send it in the X-SSL-CLIENT-CERT header while forcing X-SSL-CLIENT-VERIFY: SUCCESS. The script assumes the server-side component trusts these headers directly instead of validating the certificate cryptographically. Operational flow: (1) build the HTTPS base URL from target and port; (2) discover likely acceptable certificate common names (CNs) by invoking openssl s_client to inspect acceptable client CA names, by downloading certificates from /api/v1/ztna_certificates/download and parsing their CNs, and by reading a Serial Number response header from the target root page; (3) if discovery fails, fall back to hardcoded CN guesses (support, fortinet-ca2); (4) iterate through candidate CNs and attempt the bypass against /api/v1/system/capabilities; (5) once a working CN is found, probe several protected API endpoints with GET/POST/PATCH requests; and (6) print equivalent curl commands for manual reuse. Main exploit capabilities include unauthorized retrieval of system capabilities, version information, and public address settings, plus interaction with FortiGate-related API endpoints. The script is more than a detector because it actively performs the bypass and accesses protected resources, but it does not deploy a post-exploitation shell or arbitrary command payload. As written, it is an operational PoC for unauthorized API access against vulnerable FortiClient EMS instances.
Affected products & vendors
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
Recent activity
303 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
Referenced only as a related Fortinet vulnerability in FortiClient EMS; the article itself is about the FortiBleed credential-theft campaign and does not analyze this CVE.
An authentication bypass vulnerability in FortiClient EMS that allows unauthenticated attackers to bypass API authentication in versions 7.4.5 and 7.4.6. The content says it was under active exploitation during the same period as FortiBleed.
A newly disclosed vulnerability affecting Fortinet devices that the JDY botnet rapidly began scanning for after public disclosure, indicating its value for reconnaissance and potential follow-on targeting.
A critical FortiClient EMS vulnerability that was already being exploited before Fortinet released out-of-band patches.
The version that knows your environment.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.