CVE-2026-25089 is an unauthenticated OS command injection (CWE-78) in Fortinet FortiSandbox. Fortinet published the fix on June 9, 2026; CISA added it to the Known Exploited Vulnerabilities catalog on July 16, 2026 after active exploitation was observed, with a compressed three-day federal remediation deadline of July 19. FortiSandbox detonates suspected malware in an isolated environment and feeds verdicts to FortiGate, FortiMail, and FortiClient, so it sits inside the security control plane rather than at the edge of it. A pre-authentication foothold on that appliance is the operational reason this one moved from a routine June patch to a KEV entry a month later.
Am I vulnerable?
Affected versions
| Product |
Vulnerable range |
Fixed in |
| FortiSandbox 5.0 |
5.0.0 through 5.0.5 |
5.0.6 or above |
| FortiSandbox 4.4 |
4.4.0 through 4.4.8 |
4.4.9 or above |
| FortiSandbox 4.2 |
All 4.2 versions |
Migrate to a fixed branch |
| FortiSandbox Cloud |
5.0.4 through 5.0.5 |
5.0.6 or above |
| FortiSandbox PaaS |
5.0.4 through 5.0.5 |
5.0.6 or above |
The 5.2 branch is not affected.
Diagnostic commands
- FortiSandbox CLI:
get system status. Read the firmware/version field. A build in 5.0.0-5.0.5, 4.4.0-4.4.8, or any 4.2.x is vulnerable; 5.0.6+, 4.4.9+, or 5.2 is patched.
- FortiSandbox web UI: log in and read the firmware/version panel on System > Dashboard. Confirm the build against the table above.
- External exposure check: enumerate any FortiSandbox management interface reachable from untrusted networks (TLS certificate subject CN containing
FortiSandbox, Fortinet branding on 443/80). FortiSandbox does not disclose its firmware version in HTTP headers, so unauthenticated version fingerprinting is unreliable; treat any externally reachable management interface as at risk and confirm the build from the console.
The attack requires no credentials, so "vulnerable" here means any appliance running an affected build whose web management interface is reachable by an attacker, regardless of authentication posture.
Vulnerability
The flaw is an OS command injection: FortiSandbox fails to neutralize special elements in input that reaches an operating-system command, so an attacker who controls that input can append or inject their own commands. NVD classifies it as CWE-78 with a CVSS 3.1 base score of 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H). Fortinet's PSIRT reports 9.1 for the same vulnerability because it layers temporal metrics (E:F/RL:O/RC:C) onto that base; the difference reflects a functional exploit and confirmed remediation, not a disagreement about the flaw.
Arctic Wolf Labs traces the injection to improper input sanitization in the web UI's "start VNC" feature, where attacker-controlled parameters reach a system command. The attack vector is a crafted HTTP request to the web management interface, and no authentication is required to trigger it, which places the entire management surface within reach of any network-adjacent attacker. Because the injected commands run in the appliance's own execution context, a successful request yields command execution on the appliance itself rather than within a sandboxed detonation environment. The Hacker News, reporting Defused Cyber telemetry, described a crafted-JSON second-order path in which input is stored and then executed in a later context.
Threat model
Who would exploit this: The unauthenticated network vector and confirmed exploitation lower the bar to opportunistic mass-scanning operators, including ransomware affiliates and initial-access brokers who scan for exposed Fortinet management interfaces. Because FortiSandbox holds trust relationships with other Fortinet appliances, it is also an attractive target for state-aligned actors seeking quiet, persistent access. Fortinet appliances have a documented history of exploitation by both criminal and state-aligned operators, though no actor is confirmed for this specific CVE.
What they're after:
- Foothold: unauthenticated code execution on a trusted in-network appliance as the initial entry point.
- Lateral movement: pivoting from the appliance's trusted zone into integrated FortiGate, FortiMail, and FortiClient infrastructure.
- Detection evasion: manipulating sandbox verdicts so malicious samples are marked benign, undermining downstream blocking.
- Data exfiltration: harvesting submitted file samples, analysis reports, and stored credentials or API tokens.
- Persistence: holding access on an appliance that is infrequently rebuilt and broadly trusted.
Attack chain: An attacker scans for reachable FortiSandbox web interfaces and sends a crafted HTTP request that injects OS commands, executing without authentication. With command execution, the attacker can extract stored credentials and API tokens for integrated Fortinet products and use the appliance's trusted position to reach other systems.
Blast radius: A compromised FortiSandbox combines credential access, a trusted network position, and control over a detection control plane in a single foothold. It stores admin credentials and API tokens for integrated products, receives potentially sensitive file samples, and produces verdicts that influence whether other appliances block threats.
Mitigation
Patch
Upgrade to a fixed firmware build. The advisory is upgrade-only; Fortinet publishes no interim configuration workaround.
| Product |
Upgrade to |
| FortiSandbox 5.0.x |
5.0.6 or above |
| FortiSandbox 4.4.x |
4.4.9 or above |
| FortiSandbox 4.2.x |
A fixed branch (4.4.9+, 5.0.6+, or 5.2) |
| FortiSandbox Cloud |
5.0.6 or above |
| FortiSandbox PaaS |
5.0.6 or above |
CISA's KEV entry directs federal agencies to apply the fix per vendor instructions under BOD 26-04 and to meet CISA Forensics Triage Requirements, or discontinue use if mitigations are unavailable.
Compensating controls
Until every appliance is on a fixed build, reduce the reachable attack surface:
- Restrict the FortiSandbox web and administrative interface to an internal admin network or VPN only. It should never be reachable from the internet or from user VLANs; inbound HTTP(S) to it from those zones is itself an indicator.
- Place a WAF in front of the management interface to block HTTP requests to the VNC-start endpoint that carry shell metacharacters (per Arctic Wolf's guidance).
- Enable verbose logging on the appliance to surface unexpected command execution, and preserve those logs for the forensic triage CISA requires.
- Treat any appliance that was internet-reachable on an affected build as potentially compromised: patching closes the hole but does not evict an attacker who already ran commands.
Detection (starter rules — validate before deploying)
These rules are AI-generated starter content. Test against your own telemetry and tune falsepositives before deploying to production.
Network and log signals
- Outbound connections originating from the FortiSandbox management interface to non-Fortinet IP space. Reverse-shell or tool egress is the highest-fidelity signal: the appliance sourcing
curl, wget, nc, or openssl s_client connections it never normally makes.
- HTTP POST requests to FortiSandbox web management or API endpoints (paths under
/cgi-bin/, /api/v2/, /fsa/, and the login handler) whose URI or body contain shell metacharacters (; | && $( backticks, %0a) or command tokens (wget, curl, /bin/sh, nc -e, python -c).
- Requests to management endpoints from unauthenticated sources that succeed with no preceding successful login for that source.
- Anomalous child processes under the appliance's web server or CGI parent (the web daemon spawning
sh, bash, id, whoami, curl, wget, python), which should never occur on a sealed appliance.
- New listeners, cron entries,
authorized_keys additions, or modified startup scripts appearing shortly after an inbound management POST.
- Management-plane traffic from unexpected source zones: the admin interface should only be reachable from a restricted network.
YARA
rule CVE_2026_25089_FortiSandbox_CmdInjection_starter
{
meta:
author = "CVE Brief (AI-generated starter rule)"
description = "Heuristic: HTTP POST to FortiSandbox web management endpoints carrying OS command-injection metacharacters or post-exploitation tokens."
reference = "CVE-2026-25089"
cwe = "CWE-78"
confidence = "medium"
disclaimer = "AI-generated starter rule - validate in your environment before deploying."
strings:
$http_post = "POST " ascii
$host_hdr = "Host:" ascii nocase
// FortiSandbox management / API path fragments
$p_cgi = "/cgi-bin/" ascii nocase
$p_api = "/api/v2/" ascii nocase
$p_fsa = "/fsa/" ascii nocase
$p_login = "/login" ascii nocase
// Command-injection metacharacters / payload shapes
$ci_semi = ";" ascii
$ci_pipe = "|" ascii
$ci_subsh = "$(" ascii
$ci_btick = "`" ascii
$ci_and = "&&" ascii
// Post-exploitation command tokens
$c_wget = "wget " ascii nocase
$c_curl = "curl " ascii nocase
$c_sh = "/bin/sh" ascii nocase
$c_nc = "nc -e" ascii nocase
condition:
$http_post at 0 and $host_hdr and
1 of ($p_*) and
(
(2 of ($ci_*)) or
(1 of ($ci_*) and 1 of ($c_*))
)
}
Sigma
title: FortiSandbox Management Interface POST With Shell Metacharacters (CVE-2026-25089)
id: 7b3e1c2a-9d84-4f16-b0a2-3c5e8f9a1d67
status: experimental
description: |
Detects unauthenticated OS command-injection attempts against the FortiSandbox web management interface.
Flags HTTP POST requests to management/API endpoints whose URI or body contain shell metacharacters or
post-exploitation command tokens. AI-generated starter rule - validate in your environment before deploying.
references:
- https://www.cvebrief.com/cve/CVE-2026-25089/
author: CVE Brief (AI-generated starter rule)
date: 2026/07/22
logsource:
category: webserver
product: fortisandbox
detection:
selection_method:
cs-method: 'POST'
selection_path:
cs-uri-stem|contains:
- '/cgi-bin/'
- '/api/v2/'
- '/fsa/'
- '/login'
selection_injection:
cs-uri-query|contains:
- ';'
- '|'
- '$('
- '`'
- '&&'
- 'wget '
- 'curl '
- '/bin/sh'
- 'nc -e'
condition: selection_method and selection_path and selection_injection
falsepositives:
- Legitimate administrative automation or API clients that send URL-encoded special characters
- Authorized vulnerability scanners and internal penetration-testing tools
- Field values or passwords that legitimately contain metacharacters
level: high
tags:
- attack.initial-access
- attack.t1190
- attack.execution
- attack.t1059
Rule notes
Both rules are behavioral: they pair a FortiSandbox management-path indicator with shell metacharacters or command tokens rather than any unverified file hash, since no confirmed exploit sample is published. The main limitations are that URL-encoded or gzip-encoded payloads evade plaintext string matching, and the exact management URIs are approximate. Validate the path values against your appliance's real access logs, and pair the rules with the network and log signals above, especially anomalous outbound egress from the appliance.
References