Fortinet FortiSandbox Triple-Flaw — Active Exploitation

CVE-2026-39813 (auth-bypass path traversal) · CVE-2026-39808 & CVE-2026-25089 (OS command injection) — unauthenticated RCE on the FortiSandbox appliance management plane
Threat
FortiSandbox JRPC/Web-UI chain
Severity
EXPLOITED ITW
Type
Edge-device / appliance RCE
CVSS
9.1 (all three)
Access
Unauthenticated, network-adjacent
Version
v0.1 · 2026-06-18
Author
HuntPack
Confidence
Medium-High (appliance telemetry limited)
01

Executive Summary

Three critical (CVSS 9.1) vulnerabilities in Fortinet FortiSandbox are under active exploitation. Threat-intel firm Defused observed in-the-wild exploitation across all three within a 24-hour window (reported 2026-06-16). The attacker objective is unauthenticated remote code execution on the FortiSandbox appliance itself — a deep-trust security device that, once compromised, gives an adversary a foothold inside the inspection path, access to submitted samples and verdicts, and a pivot point into the management network.

  • CVE-2026-39813 — path traversal in the FortiSandbox JRPC API; lets an unauthenticated attacker bypass authentication. (Patched 2026-04-14.)
  • CVE-2026-39808 — OS command injection; unauthenticated attackers execute unauthorized code/commands. (Patched 2026-04-14.)
  • CVE-2026-25089 — OS command injection affecting FortiSandbox, FortiSandbox Cloud, and FortiSandbox PaaS Web UI via crafted HTTP requests. (Patched in the June 2026 Patch Tuesday.)

Typical chain: unauthenticated crafted HTTP requests to the appliance Web UI / JRPC API → auth bypass via path traversal (CVE-2026-39813) → OS command injection (CVE-2026-39808 / CVE-2026-25089) → command execution on the appliance.

The CVE-2026-25089 exploit observed in the wild shows signs of being AI-generated ("vibecoded") and is currently faulty — no reliable public working exploit exists yet for that specific CVE. The auth-bypass + command-injection pair patched in April (-39813 / -39808) is the higher-confidence active threat.

Telemetry reality: FortiSandbox is a network appliance with little-to-no host EDR coverage. Falcon will not see process/file activity on the appliance. Detection leans on network/proxy/firewall logs for crafted HTTP requests to the management interface, path-traversal URI patterns, and anomalous outbound connections FROM the appliance management IP. Adjacent-host Falcon telemetry only helps post-pivot.

Defender priority: Confirm FortiSandbox is patched to a fixed build, pull the management interface off any internet-facing path, and hunt now for inbound path-traversal / command-injection HTTP requests to the appliance AND for any new outbound connection originating from the FortiSandbox management IP — that egress is the single highest-fidelity signal of successful exploitation.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Fwd
1BleepingComputerAll three flaws CVSS 9.1; Defused observed ITW exploitation in 24h; CVE-2026-25089 exploit "vibecoded / likely faulty," no working public variant; April vs June patch split; notes related path-traversal CVE-2025-61624 also exploited (needs high privs — chaining candidate).yes
1Help Net SecurityConfirms the three-CVE set, unauthenticated crafted-HTTP-request vector against Web UI / JRPC API, low attack complexity, no user interaction.yes
1The Hacker News"Attackers exploit three Fortinet flaws"; reinforces auth-bypass → command-injection chain and unauthenticated access.yes
1SecurityWeekThree recently-patched FortiSandbox vulns in attacker crosshairs; patch-timeline corroboration.partial
1SC World (SC Media)Three critical FortiSandbox bugs rated 9.x, actively exploited; corroborates severity and ITW status.partial

Web-hunter note: No vendor-published atomic IOCs (hashes, C2 domains, source IPs) were available at the time of writing. Public reporting describes the vector and chain but not endpoint URIs or payloads. IOC blocks below therefore use REPLACE_WITH_… placeholders for atomic indicators and lean on behavioral / URI-pattern detection. Re-hunt this pack when Fortinet PSIRT or Defused publishes concrete IOCs.

03

Hunt Brief & Attack Chain

Hunt hypotheses (fidelity-ordered)

#HypothesisMITRETelemetryConf
H1The FortiSandbox management IP makes a new outbound connection (reverse shell / tool pull / C2) to an external or unusual internal host — strongest sign of successful RCE.T1190, T1059Firewall/proxy egress, NetFlow, Falcon NetworkConnectIP4 on adjacent hostsHIGH
H2Inbound HTTP requests to the appliance Web UI / JRPC API carry path-traversal sequences (../, encoded variants) targeting auth bypass (CVE-2026-39813).T1190WAF/reverse-proxy/firewall HTTP logs, NGSIEM HTTP repoHIGH
H3Inbound HTTP requests contain OS-command metacharacters (;, |, &&, $(, backticks) in parameters to the Web UI / JRPC API (CVE-2026-39808 / -25089).T1190, T1059WAF/proxy HTTP logs (body + query)MED
H4The appliance management IP scans / connects laterally to internal hosts on admin ports (SSH/RDP/SMB/WinRM) post-compromise.T1133, T1021Firewall east-west logs, Falcon UserLogon / NetworkConnectIP4 on targetsMED
H5An adjacent/managed host receives an inbound connection FROM the appliance IP and then spawns suspicious processes (downloaded tooling executing).T1059, T1105Falcon ProcessRollup2 + NetworkConnectIP4 on adjacent hostsMED
H6Repeated/burst HTTP requests to the appliance from a single external source (exploit attempts / brute of the faulty -25089 PoC).T1190Firewall/proxy HTTP logsMED

Attack chain

StepActionTelemetryHunt angle
1 · ReconIdentify internet-/network-reachable FortiSandbox management interfaceInbound HTTP to appliance mgmt IPBurst/scan from single source (H6)
2 · Auth bypassPath-traversal in JRPC API (CVE-2026-39813)HTTP URI with ../ / encoded traversalURI traversal pattern (H2)
3 · Command injectionOS command injection via crafted HTTP (CVE-2026-39808 / -25089)HTTP param with shell metacharactersMetacharacter payload (H3)
4 · Execution / callbackCommand runs on appliance; reverse shell or tool pullOutbound from appliance mgmt IPNew egress from appliance (H1) — highest fidelity
5 · PivotLateral movement into mgmt networkEast-west from appliance IP; logons on targetsLateral connections / logons (H4, H5)
04

Consolidated IOC Table

No vendor-published atomic IOCs at time of writing. The indicators below are behavioral / contextual; atomic values are placeholders to be filled when Fortinet PSIRT / Defused publish them.

TypeValueConfActionContextExpiry
uri-patternPath-traversal sequences (../, %2e%2e%2f, ..%5c) to FortiSandbox Web UI / JRPC APIhighhuntCVE-2026-39813 auth bypass2026-09-18
uri-patternShell metacharacters (; | && $( `) in HTTP params to appliance mgmt interfacemediumhuntCVE-2026-39808 / -25089 cmd injection2026-09-18
behaviorAny new outbound connection originating from FortiSandbox management IPhighhuntPost-exploitation callback / tool pull2026-09-18
endpointJRPC API path on FortiSandbox management interface (the targeted service)highenrichAttack surface — monitor source diversity2026-07-18
ipv4REPLACE_WITH_SOURCE_IPmediumdetectExploitation source (populate when published)2026-12-18
domainREPLACE_WITH_C2mediumdetectCallback / tool-pull infra (populate when published)2026-12-18
sha256REPLACE_WITH_SHA256mediumdetectDropped tooling on pivoted host (populate when published)2026-12-18
05

Affected Surface & Telemetry Matrix

SurfaceRequired telemetryPriorityGap risk
FortiSandbox appliance (Web UI / JRPC API)Inbound HTTP logs via WAF / reverse proxy / NGFW; FortiSandbox admin/event logs forwarded to SIEMCRITICALHIGH — no Falcon host agent on appliance
Appliance management IP (egress)Firewall / proxy egress logs, NetFlow, DNS for the mgmt IPCRITICALMED — depends on perimeter log forwarding
FortiSandbox Cloud / PaaS Web UIProvider/tenant access logs (CVE-2026-25089 also affects cloud/PaaS)HIGHHIGH — limited customer visibility into PaaS
Management network (lateral targets)Falcon NetworkConnectIP4 / ProcessRollup2 / UserLogon on adjacent managed hostsHIGHLOW — Falcon covers managed hosts
Identity (post-pivot)Falcon UserLogon / UserLogonFailed; AD/Entra sign-in logsMEDLOW

Bottom line: The appliance itself is a telemetry blind spot for Falcon. Highest-value coverage comes from network logs surrounding the appliance (inbound HTTP, outbound egress) and from Falcon coverage of the managed hosts the appliance can reach.

06

ATT&CK Mapping

TacticTechniqueNameObserved behaviorQuery / Control
Initial AccessT1190Exploit Public-Facing ApplicationCrafted HTTP to FortiSandbox Web UI / JRPC APIQ1, Q2, Q3 / H-Imm-1
Initial AccessT1133External Remote ServicesNetwork-adjacent unauthenticated access to mgmt interfaceQ6 / H-Imm-2
ExecutionT1059Command and Scripting InterpreterOS command injection on the applianceQ1, Q4 / H-Near-1
PersistenceT1505Server Software ComponentImplant / web component on the compromised applianceQ4, Q5 / H-Near-2
Command & ControlT1071 / T1105App-Layer Protocol / Ingress Tool TransferOutbound callback / tooling pull from appliance IPQ4, Q5 / H-Imm-3
Lateral MovementT1021Remote ServicesAppliance IP connecting to internal admin portsQ6, Q7
07

Native Audit-Log Hunts (non-CQL)

FortiSandbox appliance

  • Confirm running firmware build against Fortinet PSIRT FG-IR advisories; anything below the 2026-04-14 fix for -39813/-39808 or the June 2026 fix for -25089 is exposed.
  • Review FortiSandbox admin/event logs for unexpected administrative actions, new admin sessions, or JRPC API calls from unrecognized sources. Forward these logs to the SIEM if not already.
  • Check for unexpected scheduled jobs, modified inspection profiles, or new files/components on the appliance (via vendor-supported console only — do not run offensive tooling).

Perimeter / network devices

  • NGFW / reverse proxy / WAF: search inbound HTTP to the appliance management IP for path-traversal and command-metacharacter patterns (see CQL Q2/Q3 logic — same patterns apply to FortiGate/WAF log search).
  • Firewall egress: alert on any outbound session sourced from the FortiSandbox management IP to a destination outside its known update/feed endpoints.
  • DNS: review resolver logs for lookups originating from the appliance IP to newly-seen or low-reputation domains.

FortiSandbox Cloud / PaaS

  • Pull tenant access/audit logs for the FortiSandbox Cloud / PaaS Web UI; look for unauthenticated or anomalous request patterns (CVE-2026-25089).
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.

FortiSandbox has no Falcon host agent, so Q1–Q3 target NGSIEM / third-party HTTP log repos (NGFW, WAF, reverse proxy) ingested into Falcon NGSIEM — field names there are vendor-dependent; adjust to your parser. Q4–Q7 use the native Falcon EDR data model on adjacent managed hosts. Set FORTISANDBOX_MGMT_IP to your appliance management address before running.

Q1 · Inbound exploit pattern to FortiSandbox mgmt interface (NGSIEM HTTP)
CONF HIGHFP LOWCOST MED

Looks for: HTTP requests to the FortiSandbox management IP whose URI or body carries path-traversal sequences or shell metacharacters — the combined CVE-2026-39813 / -39808 / -25089 signature. FP: low when scoped to the appliance IP; legitimate admin traffic does not contain ../ + shell metacharacters. ⚠ Field unverified NGSIEM HTTP field names are parser-dependent — validate url / http.request.body against your repo schema.

// HUNT: Inbound exploit pattern to FortiSandbox mgmt interface
// MITRE: T1190, T1059
// CONF: high | FP: low | COST: medium | REQUIRES: NGFW/WAF/proxy HTTP logs in NGSIEM
// FALSE POSITIVES: security scanners / authorized pentest sources hitting the appliance
// TUNING: exclude approved scanner source IPs; restrict to dest = appliance mgmt IP
dest_ip="FORTISANDBOX_MGMT_IP"
| url := lower(url)
| regex("(\\.\\./|%2e%2e%2f|%2e%2e/|\\.\\.%5c|%c0%ae|;|\\|\\||&&|\\$\\(|`)", field=url, strict=false)
| groupBy([src_ip, url, http_method], function=count(as=hits))
| sort(hits, order=desc)
| table([src_ip, http_method, url, hits], limit=200)
Q2 · Path-traversal auth-bypass attempts (CVE-2026-39813)
CONF HIGHFP LOWCOST LOW

Looks for: directory-traversal sequences (raw and URL-encoded) in requests to the appliance JRPC API / Web UI — the auth-bypass primitive. FP: low; ../ in a JRPC API path is not normal admin behavior.

// HUNT: Path-traversal auth bypass against FortiSandbox JRPC API
// MITRE: T1190
// CONF: high | FP: low | COST: low | REQUIRES: NGFW/WAF/proxy HTTP logs in NGSIEM
// FALSE POSITIVES: vulnerability scanners; broken client building malformed paths
dest_ip="FORTISANDBOX_MGMT_IP"
| regex("(\\.\\./|\\.\\.\\\\|%2e%2e(%2f|%5c|/|\\\\)|%252e%252e)", field=url, strict=false)
| groupBy([src_ip, url], function=count(as=attempts))
| attempts >= 1
| sort(attempts, order=desc)
| table([src_ip, url, attempts], limit=200)
Q3 · OS command-injection metacharacters in HTTP params (CVE-2026-39808 / -25089)
CONF HIGHFP MEDCOST MED

Looks for: shell metacharacters in request parameters/body to the appliance Web UI / JRPC API. FP: medium — encoded ampersands and semicolons appear in benign query strings; scope to the appliance IP and require a shell-command token to cut noise.

// HUNT: OS command-injection metacharacters to FortiSandbox
// MITRE: T1190, T1059
// CONF: high | FP: medium | COST: medium | REQUIRES: NGFW/WAF/proxy HTTP logs (incl. body) in NGSIEM
// FALSE POSITIVES: benign query strings containing & or ; ; legit API JSON
// TUNING: require a shell command token (curl|wget|bash|sh|nc|id|whoami) near the metacharacter
dest_ip="FORTISANDBOX_MGMT_IP"
| payload := lower(url + " " + http_request_body)
| regex("(;|\\|\\||&&|\\$\\(|`|%3b|%7c)\\s*(curl|wget|bash|/bin/sh|\\bsh\\b|nc |ncat|python|id;|whoami|cat /etc)", field=payload, strict=false)
| groupBy([src_ip, http_method, url], function=count(as=hits))
| sort(hits, order=desc)
| table([src_ip, http_method, url, hits], limit=200)
Q4 · Anomalous outbound connection FROM the appliance mgmt IP (highest fidelity)
CONF HIGHFP LOWCOST MED

Looks for: outbound sessions sourced from the FortiSandbox management IP to destinations outside its known update/feed endpoints — the strongest indicator of successful RCE. Runs against NGSIEM firewall/proxy egress; an adjacent-host Falcon variant is Q5. FP: low once the Fortinet update/feed allow-list is in place.

// HUNT: New outbound from FortiSandbox mgmt IP (post-exploit callback)
// MITRE: T1071, T1105
// CONF: high | FP: low | COST: medium | REQUIRES: firewall/proxy egress logs in NGSIEM
// FALSE POSITIVES: Fortinet update / FortiGuard feed endpoints
// TUNING: allow-list Fortinet update FQDNs/IPs; alert on everything else
src_ip="FORTISANDBOX_MGMT_IP"
| direction="outbound"
| !cidr(dest_ip, subnet=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"])
| dest_domain != *.fortinet.com and dest_domain != *.fortiguard.com
| groupBy([dest_ip, dest_domain, dest_port], function=count(as=sessions))
| sort(sessions, order=desc)
| table([dest_ip, dest_domain, dest_port, sessions], limit=200)
Q5 · Adjacent Falcon host receiving a connection FROM the appliance IP (network pivot)
CONF MEDFP LOWCOST LOW

Looks for: Falcon-managed hosts recording an inbound network connection whose remote address is the FortiSandbox management IP — visible from the EDR side of the pivot. FP: low; legit appliance-to-host traffic is narrow (log forwarding, scan submission) and can be allow-listed by port.

// HUNT: Falcon host sees inbound connection from FortiSandbox mgmt IP
// MITRE: T1021, T1105
// CONF: medium | FP: low | COST: low | REQUIRES: Falcon NetworkConnectIP4
// FALSE POSITIVES: known appliance-to-host service ports (log forwarding, sample submit)
// TUNING: exclude RemotePort values for sanctioned appliance services
#event_simpleName=/^NetworkConnectIP4$/
| RemoteAddressIP4="FORTISANDBOX_MGMT_IP"
| RemotePort != 514 AND RemotePort != 443
| groupBy([ComputerName, aid, RemotePort, LocalPort], function=count(as=conns))
| sort(conns, order=desc)
| table([ComputerName, aid, RemoteAddressIP4, RemotePort, LocalPort, conns], limit=200)
Q6 · Logon to managed hosts where source maps to the appliance IP (lateral)
CONF MEDFP MEDCOST LOW

Looks for: network (Type 3) / interactive logons on managed hosts that could correlate to lateral movement from the appliance. FP: medium — Falcon UserLogon does not always carry the source IP, so correlate with Q5 by host/timeframe rather than relying on this alone.

// HUNT: Logon activity on managed hosts (pivot correlation)
// MITRE: T1021, T1133
// CONF: medium | FP: medium | COST: low | REQUIRES: Falcon UserLogon
// FALSE POSITIVES: routine service/admin logons
// TUNING: join to Q5 hits by ComputerName + time window; alert only on overlap
#event_simpleName=/^UserLogon$/
| in(LogonType, values=[3, 10])
| groupBy([ComputerName, UserName, LogonType], function=count(as=logons))
| sort(logons, order=desc)
| table([ComputerName, UserName, LogonType, logons], limit=200)
Q7 · Suspicious process spawn on a host that talked to the appliance IP
CONF MEDFP MEDCOST MED

Looks for: download/exec tooling (curl/wget/certutil/powershell -enc) on managed hosts — the post-pivot execution stage (T1105 / T1059). FP: medium — these binaries are dual-use; correlate with Q5 hosts and recent appliance connections before escalating.

// HUNT: Ingress tool transfer / scripted exec on adjacent hosts
// MITRE: T1105, T1059
// CONF: medium | FP: medium | COST: medium | REQUIRES: Falcon ProcessRollup2
// FALSE POSITIVES: admin scripting, software deployment, patching jobs
// TUNING: scope to ComputerName set returned by Q5; exclude known deployment service accounts
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/(curl|wget|certutil\s+-urlcache|bitsadmin|powershell.*-enc|Invoke-WebRequest)/i
| groupBy([ComputerName, FileName, CommandLine], function=count(as=execs))
| sort(execs, order=desc)
| table([ComputerName, FileName, CommandLine, execs], limit=200)
09

CrowdStrike Custom IOA Recommendations

Custom IOAs run on Falcon-managed hosts. The appliance has no agent, so IOA value is limited to the pivot stage. Network-side detection (Q1–Q4) should be promoted to NGSIEM scheduled searches / Custom IOC entries instead.

IOA namePatternExclusionsPromotion path
Ingress Tool Transfer post-appliance-contactProcessRollup2 + CommandLine matches download utility (curl/wget/certutil/bitsadmin/IWR) on a host that recently received a connection from the appliance IPKnown patch/deployment service accounts; SCCM/Intune host setQ7 → Custom IOA (Detect), severity High; correlate with Q5
Reverse-shell child from network listenercmd.exe / bash / sh / python spawned with a network-bearing parent on adjacent hostsLegit admin shells; CI runnersInvestigate-only first; promote after baseline

Network detections Q1–Q4 → promote as NGSIEM Scheduled Searches with email alerts (see alert package). Atomic IOCs (source IPs, C2 domains, payload hashes) → Falcon IOC Management once published.

10

Machine-Readable IOC Appendix

One-click copy blocks for import / deployment. Atomic indicators use REPLACE_WITH_… placeholders — no vendor IOCs are public yet; the high-value content here is behavioral.

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
ipv4,REPLACE_WITH_SOURCE_IP,detect,critical,2026-12-18,FortiSandbox exploit source,campaign:FortiSandbox-Triple-Flaw
domain,REPLACE_WITH_C2,detect,high,2026-12-18,FortiSandbox post-exploit C2,campaign:FortiSandbox-Triple-Flaw
sha256,REPLACE_WITH_SHA256,prevent,critical,2026-12-18,Tooling dropped on pivoted host,campaign:FortiSandbox-Triple-Flaw
Behavioral Signatureshunt logic
[INBOUND] HTTP to FortiSandbox mgmt IP with path traversal:
  ../  ..\  %2e%2e%2f  %2e%2e%5c  %252e%252e   (CVE-2026-39813)
[INBOUND] HTTP param/body to mgmt IP with shell metachar + cmd token:
  (;|||&&|$(|`) near (curl|wget|bash|sh|nc|id|whoami)  (CVE-2026-39808 / -25089)
[OUTBOUND] new session sourced from FortiSandbox mgmt IP to any host
  outside Fortinet update/feed allow-list  == successful RCE (highest fidelity)
[PIVOT] Falcon host inbound conn from mgmt IP on non-service port
Affected Products / CVEsscope check
CVE-2026-39813  CVSS 9.1  Path traversal in JRPC API -> auth bypass   (patched 2026-04-14)
CVE-2026-39808  CVSS 9.1  OS command injection, unauthenticated         (patched 2026-04-14)
CVE-2026-25089  CVSS 9.1  OS command injection (FortiSandbox + Cloud +
                          PaaS Web UI) via crafted HTTP                  (patched June 2026 PT)
Note: CVE-2026-25089 public exploit is AI-generated / faulty; no reliable working PoC yet.
Related: CVE-2025-61624 (path traversal, requires high privs) flagged exploited - chaining candidate.
Patch / Exposure Auditremediation gate
# FortiSandbox exposure checklist
1. Confirm firmware >= fixed build per Fortinet PSIRT FG-IR advisory for each CVE.
2. Verify mgmt interface is NOT internet-reachable (run external port scan from outside).
3. Restrict mgmt/JRPC API to a dedicated admin VLAN / allow-listed source set.
4. Confirm appliance HTTP + egress logs are forwarded to SIEM / NGSIEM.
5. Set FORTISANDBOX_MGMT_IP in all Q* queries; build the Fortinet update allow-list for Q4.
11

Detection Validation Gates

GateCheckPass criteria
Telemetry readyNGFW/WAF/proxy HTTP logs and appliance egress logs reach NGSIEM; Falcon covers adjacent hostsSample HTTP + egress events for the appliance IP visible in the last 24h
Benign baselineRun Q4 with the Fortinet update allow-list in place over 7 daysZero unexplained outbound destinations from the appliance IP
Positive testFrom an authorized test source, send a benign request containing ../ to a non-prod appliance / labQ1 and Q2 fire on the synthetic request
FP tuningReview Q3 hits for one weekFP rate acceptable after the shell-token TUNING filter; document exclusions
PromotionQ1/Q2/Q4 stable and low-FPPromote to scheduled searches with email alerting; keep Q3/Q6/Q7 investigate-only until correlated
12

Hardening — Tiered

Immediate — this week, no compatibility risk
  • Patch to fixed build (MITRE M1051 Update Software). Apply the Fortinet PSIRT fixes: -39813 / -39808 (2026-04-14) and -25089 (June 2026 Patch Tuesday). This is the only control that closes the vulns. Verify: appliance firmware version vs FG-IR advisory.
  • Remove the management interface from any internet-facing path (M1035 Limit Access to Resource Over Network). External port scan must show no exposed FortiSandbox mgmt / JRPC API. ⚠ best-practice — vendor hardening guide
  • Alert on any new egress from the appliance IP (detective hardening). Deploy Q4 as a scheduled alert immediately even before patch windows close.
Near term — 1–4 weeks, pilot first
  • Network segmentation (M1030 Network Segmentation): place FortiSandbox mgmt + JRPC API on a dedicated admin VLAN, reachable only from an allow-listed jump-host/PAM source set. Verify: firewall rule readout; confirm no other source can reach the mgmt port.
  • Egress allow-listing (M1037 Filter Network Traffic): restrict appliance outbound to Fortinet update/feed endpoints only; default-deny everything else. Verify: egress policy + Q4 baseline shows zero unexpected destinations.
  • WAF / reverse-proxy in front of the Web UI with rules blocking path traversal and command metacharacters as defense-in-depth.
Strategic — 1–3 months, architectural
  • Centralized appliance log forwarding + monitoring (M1047 Audit): ensure all Fortinet appliances forward admin/event + HTTP logs to NGSIEM with retention; build a standing dashboard for the appliance estate.
  • Appliance lifecycle / EoL program: track firmware against PSIRT advisories continuously; auto-ticket on new FortiSandbox FG-IR entries (M1051).
  • PAM-gated administration: all appliance admin via privileged-access workstations with session recording.
13

Deployable Playbooks

A · FortiGate / perimeter — block & restrict the appliance mgmt interface (FortiOS CLI)

# 1. Restrict the FortiSandbox mgmt interface to an admin allow-list (run on the gateway protecting it)
config firewall address
    edit "FSA-MGMT"
        set subnet REPLACE_WITH_FSA_MGMT_IP 255.255.255.255
    next
    edit "ADMIN-ALLOWLIST"
        set type ipmask
        set subnet REPLACE_WITH_ADMIN_CIDR 255.255.255.0
    next
end
# 2. Permit admin sources to the appliance, deny all other inbound to it
config firewall policy
    edit 0
        set name "permit-fsa-admin-only"
        set srcintf "any"
        set dstintf "any"
        set srcaddr "ADMIN-ALLOWLIST"
        set dstaddr "FSA-MGMT"
        set action accept
        set service "HTTPS" "SSH"
        set logtraffic all
    next
    edit 0
        set name "deny-fsa-mgmt-other"
        set srcaddr "all"
        set dstaddr "FSA-MGMT"
        set action deny
        set logtraffic all
    next
end
# 3. Default-deny egress from the appliance except Fortinet update/feed endpoints
#    (build the FORTIGUARD-FEEDS address group from current Fortinet update FQDNs/IPs)

B · NGSIEM scheduled-alert wiring (pseudocode)

# Promote Q1, Q2, Q4 to scheduled searches with email alerting:
search:    <paste Q1 / Q2 / Q4 CQL>
schedule:  every 15 minutes, lookback 20 minutes
threshold: results >= 1
action:    email SOC distro; create case; tag campaign:FortiSandbox-Triple-Flaw
# Keep Q3, Q6, Q7 as investigate-only until correlated with Q5 / Q4 hits.

C · Appliance verification readout

# On the FortiSandbox console (vendor-supported commands only):
#  - confirm running firmware build and compare to the FG-IR fixed version
#  - review admin session history and JRPC API access for unknown sources
#  - confirm syslog/log-forwarding to SIEM is enabled and reaching the collector
# Do NOT run untrusted / offensive tooling against production appliances.
14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateRestrict appliance mgmt interface to admin allow-list (Playbook A); block all egress from the appliance IP except Fortinet feeds; if compromise confirmed, fully network-isolate the appliance.Network / FirewallFirewall rule change ticket; egress drop logs
EradicatePatch to fixed firmware; rebuild/re-image the appliance from a known-good image if RCE confirmed (do not trust in-place cleanup of a compromised appliance); rotate all credentials/API tokens/certs the appliance held.Security Eng / Fortinet supportFirmware version proof; credential-rotation log
RecoverRestore service behind segmentation + WAF; re-enable monitoring (Q4 standing alert); validate verdict/inspection integrity.Security OpsQ4 baseline clean; segmentation verified
Investigate pivotRun Q5/Q6/Q7 against managed hosts the appliance could reach; contain any host showing inbound-from-appliance + suspicious exec.SOC / IRFalcon detections; host containment records
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1190Path-traversal auth bypass (CVE-2026-39813)Q1, Q2GOOD (if HTTP logs ingested)
T1190 / T1059Command injection (CVE-2026-39808 / -25089)Q1, Q3PARTIAL — needs request body logging
T1071 / T1105Post-exploit callback from applianceQ4GOOD — highest fidelity
T1021 / T1133Lateral movement into mgmt networkQ5, Q6Reverse-shell IOAPARTIAL — correlation-dependent
T1105 / T1059Tool transfer / exec on pivoted hostQ7Ingress-tool IOAPARTIAL — dual-use binaries
T1505Implant / persistence ON the applianceGAP — no host agent on appliance; rely on vendor console + rebuild
T1190 (Cloud/PaaS)CVE-2026-25089 against FortiSandbox Cloud / PaaS Web UIGAP — limited customer telemetry; rely on provider audit logs

Validation: Coverage is contingent on the appliance's surrounding HTTP and egress logs reaching NGSIEM. The two GAP rows (on-appliance persistence and Cloud/PaaS) are inherent telemetry blind spots, not tuning issues — cover them via vendor console review, appliance rebuild on confirmed compromise, and provider audit logs. Re-run all validation gates (§11) after setting FORTISANDBOX_MGMT_IP and building the Fortinet update allow-list.

16

Hunt Summary Ticket

TITLE:      FortiSandbox Triple-Flaw — CVE-2026-39813 / -39808 / -25089 (active exploitation)
SEVERITY:   CRITICAL — CVSS 9.1 x3, unauthenticated RCE, exploited in the wild
SCOPE:      All FortiSandbox appliances (on-prem, Cloud, PaaS Web UI) + adjacent managed hosts
HYPOTHESIS: Unauth crafted HTTP -> path-traversal auth bypass -> OS command injection ->
            command execution on appliance -> outbound callback / lateral pivot
QUERIES:    Q1 exploit-pattern inbound | Q2 path-traversal | Q3 cmd-injection metachars |
            Q4 appliance egress (highest fidelity) | Q5 Falcon pivot | Q6 lateral logon | Q7 tool transfer
DO FIRST:   1) Confirm patch level vs FG-IR  2) Pull mgmt iface off internet
            3) Run Q4 (any new egress from appliance IP = treat as compromise)
FINDINGS:   <populate from hunt>
GAPS:       No host EDR on appliance (T1505 persistence); Cloud/PaaS telemetry limited;
            no public atomic IOCs yet; CVE-2026-25089 PoC faulty/AI-generated
ACTIONS:    Patch -> segment -> egress allow-list -> rebuild on confirmed RCE -> rotate creds
OWNER:      HuntPack
VERSION:    v0.1 · 2026-06-18
17

Changelog

v0.32026-07-24CQL correctness pass. All table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.
v0.22026-06-29CQL syntax review (crowdstrike-logscale-v3): fixed quoted wildcards→unquoted and NOT cidr→!cidr (Q4), regex-on-numeric LogonType→in() (Q6).
v0.12026-06-18Initial draft. Six-stage v2 pipeline. 7 CQL queries (3 NGSIEM HTTP, 1 appliance egress, 3 Falcon adjacent-host). Behavioral IOC grid (atomic IOCs pending vendor publication). Tiered hardening + FortiOS containment playbook. Two known coverage gaps (on-appliance persistence, Cloud/PaaS).
18

References

TierSourceUsed forAccess date
1BleepingComputer — Critical FortiSandbox flaws now exploitedITW status, CVE detail, patch timeline, -25089 faulty-PoC note, CVE-2025-61624 chaining2026-06-18
1Help Net Security — FortiSandbox vulnerabilitiesVector (crafted HTTP to Web UI / JRPC API), unauth/low-complexity confirmation2026-06-18
1The Hacker News — Attackers exploit three Fortinet flawsAuth-bypass → command-injection chain2026-06-18
1SecurityWeek — 3 recently-patched FortiSandbox vulns in crosshairsSeverity + patch corroboration2026-06-18
1SC World — Three critical FortiSandbox bugs actively exploitedSeverity + ITW corroboration2026-06-18
refMITRE ATT&CKT1190 / T1059 / T1133 / T1505 / T1021 / T1105 mapping + M-number mitigations2026-06-18
HuntPack · Generated 2026-06-18 · v0.1 · Defensive content only (hunt / detect / harden). FortiSandbox is a network appliance with limited host EDR telemetry — coverage leans on surrounding network logs; see §5 and §15. Atomic IOCs pending vendor publication.