Fortinet patches FortiClient, FortiClientEMS flaws
Fortinet fixed a privilege escalation flaw in FortiClientEMS and an origin validation bug in FortiClient allowing remote code execution via malicious links or files.
Sourceadvisories.ncsc.nl — open the original
What to check
- Applies to
- The 2 CVEs named below. Whether you run an affected version is not assessed: check the versions the source lists.
- Exploitation
- No exploitation in the wild and no public exploit is recorded for the CVEs named.
NCSC-NL published an advisory detailing two vulnerabilities patched by Fortinet in its FortiClient endpoint software and FortiClientEMS management system. The first, CVE-2026-121527, affects FortiClientEMS and allows authenticated local users with administrative rights to escalate privileges to a root shell by executing CLI commands with excessive privileges, potentially compromising the integrity of managed endpoints. The second, CVE-2026-121529, is a more severe origin validation error in FortiClient for Mac and Windows (CVSS 9.6) that allows an unauthenticated remote attacker to execute arbitrary code or commands on an affected system, provided the victim interacts with a malicious link or specially crafted file.
Both issues stem from improper privilege assignment and insufficient origin validation respectively, allowing security controls to be bypassed. Fortinet has released updates addressing both vulnerabilities. No evidence of active exploitation is mentioned in the advisory. Defenders should prioritize patching FortiClient and FortiClientEMS deployments, particularly given the high severity and remote code execution potential of CVE-2026-121529, and review administrative access controls on FortiClientEMS management systems to mitigate the privilege escalation risk.
Mentioned in this report
Detection guidance
FortiClient Process Spawning Script Interpreter or LOLBin
A behavioural hunt for the technique in general, not a signature for the CVEs this report names.
FortiClient user-mode processes spawning PowerShell, script hosts or download/proxy-execution LOLBins, a possible post-exploitation sign of FortiClient origin-validation code execution. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.
title: FortiClient Process Spawning Script Interpreter or LOLBin
description: Detects FortiClient user-mode processes starting PowerShell, script hosts
or common proxy-execution binaries. The advisory describes remote code or command
execution via a malicious link or crafted file handled by FortiClient, and this
child-process pattern would follow successful exploitation. This is not tied to
a specific exploit artefact. Tune against local FortiClient deployment scripts.
tags:
- attack.execution
- attack.t1203
logsource:
category: process_creation
product: windows
detection:
selection:
ParentImage|endswith:
- \FortiClient.exe
- \FortiTray.exe
- \FortiESNAC.exe
- \FortiSSLVPNdaemon.exe
Image|endswith:
- \powershell.exe
- \pwsh.exe
- \mshta.exe
- \wscript.exe
- \cscript.exe
- \regsvr32.exe
- \certutil.exe
- \bitsadmin.exe
condition: selection
falsepositives:
- FortiClient EMS-deployed remediation or compliance scripts that launch PowerShell
- Vendor installer or upgrade routines invoking PowerShell from the FortiClient process
level: medium
id: 25981090-d17b-5e0c-a251-c62601c56583
status: experimental
author: Vorant
references:
- https://advisories.ncsc.nl/2026/ncsc-2026-0486.html
Behavioural rules are generated from public reporting — validate in your environment before deploying.
Source reporting: https://advisories.ncsc.nl/2026/ncsc-2026-0486.html
Free public brief. The detections with Splunk SPL already written (plus Elastic and KQL where they apply) are in the app with a free account, no card. Slack alerts on the vendors you run come with the paid plans, and a new account gets three days of them.
What this brief leaves out
This page is the free tier: the write-up, the severity, the names. In the app the same report carries its detections (Splunk SPL already written, plus Elastic and Microsoft KQL where they apply) and live profiles of the CVEs it names. The paid plans add the security research and news reporting the free tier leaves out.
It sits in a corpus of 16,572 reports from 147 sources, 724 of them written in the last seven days, and it grows through the day.
A new account starts with three days of all of it, no card, then keeps the government and CERT reporting free. Slack alerts are a paid-plan feature: name the vendors you run and Slack hears about the reports that touch them, not the rest of the week's. Nothing is charged unless you subscribe.
Create a free account What it costs