FORTINET
FORTIOS
SSL-VPN
CONFIG CHANGES
DetectionBlue TeamSOCOctober 12, 2026•9 min read

Detecting Fortinet FortiOS and FortiGate Exploitation

Fortinet appliances protect the perimeter and sit directly on it. When the SSL-VPN daemon is exploited, the best evidence is in what changes afterwards: accounts, policies and outbound connections.

Scroll

FortiOS SSL-VPN vulnerabilities have been exploited in the wild, with CVE-2024-21762, an out-of-bounds write in the SSL-VPN daemon reachable with crafted requests, as the leading example (T1190). Memory-corruption exploits are noisy for the daemon and quiet for everything else, so we combine crash signals, request patterns and, most importantly, configuration and account change auditing.

Signals at a Glance

SignalWhereATT&CK
sslvpnd crash, restart or watchdog eventsFortiOS event and system logsT1190
Unexpected admin or local user creation, or API admin profile changesFortiOS event logs (config)T1136.001
New firewall policy, VPN tunnel or static route outside change windowsFortiOS event logs (config)T1562.004
Admin login from outside management ranges or from the SSL-VPN interfaceFortiOS event logsT1078
Burst of malformed or oversized requests to SSL-VPN endpoints followed by a crashWeb proxy, IDS, traffic logsT1190
Appliance outbound connections to unfamiliar hostsTraffic logs, flowT1071.001

Configuration and Account Change Auditing

Attackers who gain control of a FortiGate usually make changes that persist: a new admin or VPN user, a policy that allows their traffic, or a changed tunnel. FortiOS records these as configuration events with the acting user, the interface and the object path. Forward them and alert on any change that does not match a ticket.

// Sentinel (KQL) - FortiGate config and admin events outside change windows
CommonSecurityLog
| where DeviceVendor =~ "Fortinet"
| extend logdesc = tostring(extract(@'logdesc="([^"]+)"', 1, AdditionalExtensions))
| where logdesc in~ ("Object attribute configured", "Attribute configured",
                     "Object configured", "Admin login successful", "Admin login failed")
      or Message has_any ("cfgpath", "cfgattr")
| extend cfgpath = tostring(extract(@'cfgpath="([^"]+)"', 1, AdditionalExtensions))
| where cfgpath has_any ("system.admin", "user.local", "firewall.policy", "vpn.ssl", "router.static")
        or logdesc has "Admin login"
| project TimeGenerated, DeviceName, SourceIP, SourceUserName, logdesc, cfgpath, Message
// Tune/validate: field names and extraction depend on your FortiOS version and CEF mapping.

A second query focuses on the daemon itself. Crash and restart events for the SSL-VPN process near unusual request bursts are a strong precursor signal, though absence of a crash does not prove safety:

index=network sourcetype="fortinet:fortigate:event"
  (sslvpnd OR "ssl vpn" OR "daemon") (crash OR "signal 11" OR restart OR segfault OR "watchdog")
| stats count min(_time) as first max(_time) as last by host, msg
| eval first=strftime(first,"%F %T"), last=strftime(last,"%F %T")
| sort - count
# Tune/validate: message text differs between FortiOS releases.

Triage and Response

Vetted sources

Use Fortinet PSIRT advisories and integrity-check guidance, CISA and national CERT advisories on FortiOS exploitation, SigmaHQ and Elastic rules for network device administration, and Splunk ESCU analytics where available. Baseline your own environment: legitimate admins, automation and SD-WAN tooling all generate configuration events.

Build Detections That Fire

Mjolnir Security helps blue teams turn threat intelligence into high-fidelity detections across endpoint, network, identity and cloud telemetry.

Detection EngineeringManaged Detection & ResponseThreat HuntingIncident ResponsePurple Teaming
  • Detection Engineering We build and tune detections mapped to ATT&CK from your own telemetry.
  • Threat Hunting as a Service Hypothesis-driven hunts for the behaviours on this page.
  • 24/7 Incident Response Containment when a detection fires. Call +1 833 403 5875.
Written by: Mjolnir Threat Research (MTAC)  |  Published: October 12, 2026  |  Last reviewed: October 12, 2026