
Since December 2025, two critical vulnerabilities in Fortinet's infrastructure have created a perfect storm for enterprise compromise: CVE-2026-21643 (CVSS 9.8), an unauthenticated SQL injection in FortiClientEMS 7.4.4, and CVE-2026-24858 (CVSS 9.4), a cross-tenant authentication bypass in FortiCloud SSO affecting FortiOS, FortiManager, FortiAnalyzer, and FortiProxy. The latter is confirmed as actively exploited in the wild since early December 2025, with attackers creating rogue admin accounts and exfiltrating configurations from 100,000+ vulnerable devices globally.
Fortinet temporarily disabled FortiCloud SSO service on January 26, 2026, then re-enabled it after blocking logins from vulnerable versions. These vulnerabilities represent a continuation of Fortinet's troubling pattern of identity and management-plane exploitation, following similar critical flaws in CVE-2025-59718, CVE-2025-59719, and the still-exploited CVE-2020-12812 SSL VPN bypass.
Together, these issues demonstrate that Fortinet management and identity features have become weaponized attack surfaces, requiring organizations to treat these systems as Tier-0 assets with the same security rigor applied to domain controllers and identity providers.
CVE-2026-21643 is a critical-severity SQL injection vulnerability (CVSS 9.1-9.8) in the FortiClientEMS web GUI that allows unauthenticated remote attackers to execute arbitrary SQL commands and potentially achieve remote code execution via crafted HTTP requests.
Technical Details:
Reconnaissance: Attacker identifies internet-exposed or internally reachable FortiClientEMS 7.4.4 server via port scanning or Shodan queries.
Payload Crafting: Attacker constructs malicious HTTP request with SQL injection payload targeting vulnerable parameters in the EMS web interface.
Database Manipulation: Injected SQL commands execute against the underlying database, allowing the attacker to:
Code Execution: Attacker escalates from SQL injection to remote code execution using:
xp_cmdshell equivalents)Persistence: Attacker establishes persistent access by creating backdoor accounts, scheduled tasks, or modifying EMS policies to deploy malware to managed endpoints.
Example Attack Pattern:
POST /api/vulnerable-endpoint HTTP/1.1
Host: ems.target.com
Content-Type: application/x-www-form-urlencoded
param=1' UNION SELECT null,null,@@version,null--

The patch—FortiClientEMS 7.4.5, released in January 2026—addressed this by implementing proper input validation and parameterized queries. However, organizational patching delays and internet-exposed EMS instances have created a significant attack surface that remains exploitable.
CVE-2026-24858 is a critical-severity authentication bypass vulnerability (CVSS 9.4) in FortiCloud SSO that allows attackers with a FortiCloud account and registered device to log into other tenants' devices, create local admin accounts, and exfiltrate configurations.
Technical Details:
Initial Setup: Attacker creates legitimate FortiCloud account and registers at least one device to their account.
Cross-Tenant Exploitation: Attacker leverages improper access control in FortiCloud SSO logic to authenticate to devices registered to different organizations/accounts.
Admin Account Creation: Upon successful bypass, attacker creates local administrative accounts with names designed to blend in:
audit, backup, itadmin, secadmin, supportbackupadmin, deploy, remoteadmin, securitysvcadmin, systemConfiguration Exfiltration: Attacker downloads complete device configurations containing:
VPN Access Enablement: Attacker modifies VPN settings to grant remote access to rogue accounts for long-term persistence and lateral movement.
Example Malicious SSO Accounts:
[email protected]
[email protected]
[email protected]
The patch—available across multiple FortiOS branches (7.0.19+, 7.2.13+, 7.4.11+, 7.6.6+) and equivalent versions for FortiManager/FortiAnalyzer/FortiProxy—addressed this by fixing the SSO authentication logic and implementing proper tenant isolation. Fortinet also implemented cloud-side mitigations by blocking logins from vulnerable versions.
| Date | CVE | Event | Status |
|---|---|---|---|
| Early Dec 2025 | CVE-2026-24858 | Initial exploitation begins in the wild | ⚠️ Initial compromise |
| Jan 2026 | CVE-2026-21643 | FortiClientEMS SQL injection discovered | 🔍 Investigation |
| Jan 2026 | CVE-2026-24858 | Fortinet confirms active exploitation | 🔴 Active exploitation |
| Jan 26, 2026 | CVE-2026-24858 | Fortinet temporarily disables FortiCloud SSO globally | ⚠️ Emergency mitigation |
| Jan 2026 | CVE-2026-21643 | FortiClientEMS 7.4.5 patch released | ✅ Patch available |
| Jan 2026 | CVE-2026-24858 | Fixed versions released across all product lines | ✅ Patch available |
| Late Jan 2026 | CVE-2026-24858 | FortiCloud SSO re-enabled with version blocking | 🔍 Continuing threat |
| Feb 2026 | Both CVEs | Widespread patching efforts continue | 🔴 Mass exploitation risk |
Fortinet and cybersecurity vendors including Arctic Wolf have confirmed the following exploitation patterns for CVE-2026-24858:
Automated SSO Abuse: Attackers use automated tools to attempt FortiCloud SSO logins against large lists of potential target organizations.
Rogue Admin Account Creation: Upon successful bypass, attackers immediately create local administrative accounts with innocuous names:
| Account Name | Purpose | Persistence Level |
|---|---|---|
audit | Appears legitimate for compliance | High |
backup | Blends with backup operations | High |
itadmin | Generic IT administration | Medium |
secadmin | Security administration disguise | High |
support | Vendor support impersonation | Medium |
backupadmin | Backup-specific admin | High |
deploy | Deployment automation | Medium |
remoteadmin | Remote management | High |
security | Security operations | High |
svcadmin | Service account disguise | Medium |
system | System-level account | High |
Configuration Exfiltration: Attackers download complete device configurations immediately after gaining access, containing:
VPN Access Enablement: Attackers modify VPN settings to grant remote access capabilities to newly created accounts, enabling:
Malicious FortiCloud SSO Accounts:
[email protected]
[email protected]
[email protected]
[email protected]
Exploitation Timeline:

These two CVEs are not isolated incidents. Recent Fortinet history reveals a troubling pattern of identity, SSO, and management-plane vulnerabilities that have become high-value targets for threat actors:
Attackers increasingly bypass traditional credential-based defenses by exploiting:
SSO Flow Vulnerabilities
GUI Authentication Logic
Legacy and Alternate Authentication Paths
Management and Cloud Control Planes
Centralized Policy Control: Single point of compromise affects entire device fleet
Fleet-Wide Device Access: One vulnerability grants access to hundreds or thousands of devices
Configuration Export for Reconnaissance: Complete network topology and security posture visible in configuration files
Credential Harvesting: VPN credentials, API keys, and service account passwords stored in configurations
Lateral Movement Enablement: VPN access and network configurations facilitate internal network penetration
For defenders, this pattern demands that Fortinet management plane and SSO features must be treated as Tier-0 assets, with strict access control, aggressive patching, and continuous monitoring equivalent to domain controllers and identity providers.
Internet Exposure of Management Interfaces: Many organizations expose FortiClientEMS, FortiManager, and FortiAnalyzer management interfaces directly to the internet for convenience, creating an attack surface for pre-authentication vulnerabilities like CVE-2026-21643.
Delayed Patching of Management Infrastructure: Management and monitoring systems often receive lower patching priority than production firewalls, despite being equally or more critical. Organizations may patch FortiGate firewalls within days while leaving FortiManager or FortiClientEMS unpatched for weeks or months.
Trust in Cloud SSO Without Verification: The assumption that cloud-based SSO is inherently secure leads to insufficient monitoring of SSO authentication events. CVE-2026-24858 demonstrates that cloud SSO can become a cross-tenant attack vector when implementation flaws exist.
Lack of Management Plane Monitoring: Many organizations lack dedicated security monitoring for management system activities, including:
Configuration as Attack Intelligence: Exported configurations provide attackers with complete network intelligence, including topology, security controls, credentials, and potential attack paths—yet configuration access is often insufficiently protected or monitored.
Identify All EMS Instances:
# Inventory FortiClientEMS servers in your environment
Get-Service -Name "FortiClientEMS*" -ComputerName (Get-ADComputer -Filter *).Name
Affected Version:
Safe Versions:
Upgrade Path:
Check FortiCloud SSO Status:
FortiOS/FortiProxy:
Navigate to: System → Settings → Allow administrative login using FortiCloud SSO
Status: [Enabled/Disabled]
FortiManager/FortiAnalyzer:
Navigate to: System Settings → SAML SSO → Allow admins to login with FortiCloud
Status: [Enabled/Disabled]
Recommendation: Disable FortiCloud SSO unless absolutely required for business operations.
Minimum Fixed Versions:
| Product | Branch | Minimum Safe Version |
|---|---|---|
| FortiOS | 7.6.x | 7.6.6+ |
| FortiOS | 7.4.x | 7.4.11+ |
| FortiOS | 7.2.x | 7.2.13+ |
| FortiOS | 7.0.x | 7.0.19+ |
| FortiOS | 6.4.x | NOT AFFECTED ✅ |
| FortiManager | 7.6.x | 7.6.6+ |
| FortiManager | 7.4.x | 7.4.11+ |
| FortiManager | 7.2.x | 7.2.13+ |
| FortiManager | 7.0.x | 7.0.19+ |
| FortiManager | 6.4.x | NOT AFFECTED ✅ |
| FortiAnalyzer | 7.6.x | 7.6.6+ |
| FortiAnalyzer | 7.4.x | 7.4.11+ |
| FortiAnalyzer | 7.2.x | 7.2.13+ |
| FortiAnalyzer | 7.0.x | 7.0.19+ |
| FortiAnalyzer | 6.4.x | NOT AFFECTED ✅ |
| FortiProxy | 7.6.x | 7.6.6+ |
| FortiProxy | 7.4.x | 7.4.11+ |
| FortiProxy | 7.2.x | 7.2.13+ |
| FortiProxy | 7.0.x | 7.0.19+ |
Restrict Management Interface Access:
1. Place FortiClientEMS behind VPN or bastion host
2. Restrict access to management VLANs only
3. Implement IP allowlisting for admin access
4. NEVER expose EMS web interface directly to internet
If Internet Exposure Is Unavoidable:
Web Server Hardening:
- Enforce TLS 1.2+ only
- Disable weak cipher suites (3DES, RC4, MD5)
- Enable HTTP Strict Transport Security (HSTS)
- Implement Content Security Policy (CSP)
- Enable full HTTP request logging with URL and body metrics
Disable SSO If Not Required:
# FortiOS CLI command to disable FortiCloud SSO
config system admin
edit <admin-name>
set accprofile super_admin
set trusthost1 <trusted-ip-range>
next
end
config system settings
set admin-forticloud-sso-login disable
end
If SSO Must Remain Enabled:
Hunt for SQL Injection Attempts:
Splunk Query:
index=web_logs sourcetype=fortinet:ems
| search uri_path="*api*" OR uri_path="*admin*"
| regex _raw="(?i)(union|select|insert|update|delete|drop|exec|script|javascript|<script)"
| stats count by src_ip, uri_path, http_method, status_code
| where count > 5
| sort - count
Microsoft Sentinel (KQL):
CommonSecurityLog
| where DeviceVendor == "Fortinet" and DeviceProduct == "FortiClientEMS"
| where RequestURL contains "api" or RequestURL contains "admin"
| where RequestURL matches regex @"(?i)(union|select|insert|update|delete|drop|exec|'|--|;)"
| summarize AttemptCount=count() by SourceIP, RequestURL, RequestMethod, HttpStatusCode
| where AttemptCount > 5
| order by AttemptCount desc
File System Indicators (Web Shells):
# Search for suspicious files in EMS web directories
Get-ChildItem -Path "C:\Program Files\Fortinet\FortiClientEMS\www" -Recurse -Include *.asp,*.aspx,*.jsp,*.php,*.exe |
Where-Object { $_.CreationTime -gt (Get-Date).AddDays(-30) } |
Select-Object FullName, CreationTime, LastWriteTime, Length
Database Anomaly Detection:
-- Check for unauthorized admin accounts in EMS database
SELECT username, email, created_date, last_login, privilege_level
FROM ems_admin_users
WHERE created_date > '2025-12-01'
ORDER BY created_date DESC;
-- Check for suspicious configuration changes
SELECT config_name, modified_by, modified_date, change_description
FROM ems_config_audit
WHERE modified_date > '2025-12-01'
AND modified_by NOT IN (SELECT username FROM known_admins)
ORDER BY modified_date DESC;
Hunt for Rogue Admin Accounts:
FortiOS CLI:
# List all local admin accounts
config system admin
show
end
# Look for suspicious account names:
# audit, backup, itadmin, secadmin, support, backupadmin,
# deploy, remoteadmin, security, svcadmin, system
Automated Account Audit Script:
#!/bin/bash
# Check for suspicious admin accounts on FortiGate
SUSPICIOUS_ACCOUNTS=("audit" "backup" "itadmin" "secadmin" "support" "backupadmin" "deploy" "remoteadmin" "security" "svcadmin" "system")
echo "Checking for suspicious admin accounts..."
for account in "${SUSPICIOUS_ACCOUNTS[@]}"; do
result=$(ssh admin@fortigate "config system admin; show | grep $account")
if [ ! -z "$result" ]; then
echo "[ALERT] Suspicious account found: $account"
echo "$result"
fi
done
Hunt for Malicious SSO Logins:
Splunk Query:
index=fortinet sourcetype=fortigate:event
| search (action="login" OR action="authentication") AND method="sso"
| search user="*cloud-noc*" OR user="*cloud-init*" OR user="*admin-cloud*" OR user="*sso-admin*"
| stats count by _time, user, src_ip, dst, action, status
| sort - _time
Microsoft Sentinel (KQL):
CommonSecurityLog
| where DeviceVendor == "Fortinet"
| where Activity == "login" or Activity == "authentication"
| where AdditionalExtensions contains "sso"
| where DestinationUserName contains "cloud-noc"
or DestinationUserName contains "cloud-init"
or DestinationUserName contains "admin-cloud"
or DestinationUserName contains "sso-admin"
| project TimeGenerated, DestinationUserName, SourceIP, DeviceHostName, Activity, LogSeverity
| order by TimeGenerated desc
Hunt for Configuration Exports:
FortiOS Log Query:
index=fortinet sourcetype=fortigate:event
| search action="download" OR action="export" OR action="backup"
| search file="*config*" OR file="*backup*"
| stats count by _time, user, src_ip, file, action
| where _time > relative_time(now(), "-30d@d")
| sort - _time
Hunt for VPN Modifications:
FortiOS CLI Audit:
# Check VPN configuration change history
diagnose debug config-error-log read
# Review recent VPN user additions
config vpn ssl web user
show
end
# Check for new VPN user groups
config user group
show
end
Malicious SSO Account Patterns:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Suspicious Admin Account Names:
audit
backup
itadmin
secadmin
support
backupadmin
deploy
remoteadmin
security
svcadmin
system
Security Team Training:
Admin Account Hygiene:
Configuration Management:
Email-Based Reconnaissance Defense:
Network Segmentation:
Treat any unpatched FortiClientEMS 7.4.4 instance as potentially compromised until proven otherwise.
Check for Unauthorized Local Accounts:
# List local users created in the last 90 days
Get-LocalUser | Where-Object { $_.Enabled -eq $true -and $_.PasswordLastSet -gt (Get-Date).AddDays(-90) } |
Select-Object Name, Enabled, PasswordLastSet, LastLogon |
Sort-Object PasswordLastSet -Descending
Check for Scheduled Tasks:
# Find suspicious scheduled tasks
Get-ScheduledTask | Where-Object { $_.Author -notlike "*Microsoft*" -and $_.Date -gt (Get-Date).AddDays(-90) } |
Select-Object TaskName, TaskPath, Author, Date, State
Check for Web Shells:
# Scan EMS web directories for recently modified files
$webRoot = "C:\Program Files\Fortinet\FortiClientEMS\www"
Get-ChildItem -Path $webRoot -Recurse -File |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-90) } |
Select-Object FullName, LastWriteTime, Length |
Sort-Object LastWriteTime -Descending
Check for Suspicious Processes:
# Identify unusual child processes of EMS web server
Get-WmiObject Win32_Process |
Where-Object { $_.ParentProcessId -eq (Get-Process -Name "FortiClientEMS*").Id } |
Select-Object ProcessId, Name, CommandLine, CreationDate
Check for Unauthorized Admin Accounts:
-- Review admin accounts created during exploitation window
SELECT admin_id, username, email, privilege_level, created_date, created_by, last_login
FROM ems_administrators
WHERE created_date BETWEEN '2025-12-01' AND CURRENT_TIMESTAMP
ORDER BY created_date DESC;
Check for Configuration Changes:
-- Audit configuration modifications
SELECT config_id, config_name, modified_by, modified_date, change_type, old_value, new_value
FROM ems_config_audit
WHERE modified_date BETWEEN '2025-12-01' AND CURRENT_TIMESTAMP
AND modified_by NOT IN ('admin', 'system')
ORDER BY modified_date DESC;
Check for Deployment Package Modifications:
-- Review endpoint deployment package changes
SELECT package_id, package_name, version, modified_by, modified_date, checksum
FROM ems_deployment_packages
WHERE modified_date BETWEEN '2025-12-01' AND CURRENT_TIMESTAMP
ORDER BY modified_date DESC;
Search for SQL Injection Patterns:
# Grep for SQL injection indicators in IIS/Apache logs
grep -E "(union|select|insert|update|delete|drop|exec|'|--|;|xp_cmdshell)" /var/log/ems/access.log |
grep -E "api|admin" |
awk '{print $1, $4, $7}' |
sort | uniq -c | sort -rn
Identify Suspicious IP Addresses:
# Find IPs with high error rates (potential injection attempts)
awk '$9 ~ /^(4|5)/ {print $1}' /var/log/ems/access.log |
sort | uniq -c | sort -rn | head -20
FortiOS/FortiProxy:
# Export all admin accounts for review
config system admin
show full-configuration
end
# Check for accounts created via SSO
diagnose debug application sslvpn -1
diagnose debug enable
# Review output for SSO authentication events
FortiManager/FortiAnalyzer:
# List all admin accounts
config system admin user
show
end
# Check admin login history
execute log filter category 0
execute log display
FortiOS Event Log Query:
# Search for configuration backup/export events
execute log filter field action backup
execute log display
# Search for configuration download events
execute log filter field action download
execute log display
SIEM Query for Config Exports:
index=fortinet sourcetype=fortigate:event
| search (action="backup" OR action="download" OR action="export")
| search (file="*config*" OR file="*backup*" OR description="*configuration*")
| eval export_time=strftime(_time, "%Y-%m-%d %H:%M:%S")
| table export_time, user, src_ip, dst, action, file, description
| sort - export_time
Check for New VPN Users:
# List all SSL VPN users
config vpn ssl web user
show
end
# Check VPN user creation dates in logs
execute log filter field subtype vpn
execute log filter field action create
execute log display
Check for VPN Access Grants:
# Review VPN user group memberships
config user group
show
end
# Check for new VPN portals
config vpn ssl web portal
show
end
If Compromise Is Suspected:
Immediate Isolation:
Evidence Preservation:
Credential Rotation:
System Rebuild:
Enhanced Monitoring:
Products Affected: FortiGate, FortiProxy, FortiSwitchManager, FortiWeb
Vulnerability Type: SAML SSO authentication bypass
Exploitation Status: Actively exploited in the wild (confirmed by Rapid7)
Attack Method: Crafted SAML authentication messages allowing unauthenticated admin access
Key Lesson: SAML and SSO implementations require rigorous security testing and should never be assumed secure without verification
Product Affected: FortiGate SSL VPN
Vulnerability Type: Two-factor authentication bypass
Technical Flaw: Case-insensitive username validation bug allowing authentication bypass
Current Exposure: >10,000 firewalls remain vulnerable in 2026 (6 years post-disclosure)
Exploitation Status: Actively exploited by ransomware groups for initial access
Key Lesson: Legacy vulnerabilities persist for years due to patching delays; threat actors maintain exploit tooling for old vulnerabilities indefinitely
Common Themes Across Fortinet Vulnerabilities:
Treat Fortinet Devices as Tier-0 Assets:
Aggressive Patch SLAs:
Restrict Management Plane Access:
Centralized Logging and Detection:
CVE-2026-21643 and CVE-2026-24858 represent a critical inflection point for Fortinet security posture: the management and identity infrastructure has become a weaponized attack surface requiring immediate action and long-term architectural changes.
✅ Patch Immediately - FortiClientEMS 7.4.4 and all vulnerable FortiCloud SSO versions must be upgraded within 48 hours. Active exploitation of CVE-2026-24858 is confirmed; CVE-2026-21643 weaponization is imminent.
✅ Assume Breach - Any device with FortiCloud SSO enabled during December 2025 - January 2026 should be treated as potentially compromised. Conduct thorough forensic analysis for rogue admin accounts, configuration exports, and VPN modifications.
✅ Disable FortiCloud SSO - Unless FortiCloud SSO is absolutely required for business operations, disable it immediately on all devices. The risk-to-benefit ratio does not justify enabling this feature for most organizations.
✅ Elevate Management Infrastructure Security - Fortinet management systems (FortiManager, FortiAnalyzer, FortiClientEMS) must be treated as Tier-0 assets with security controls equivalent to domain controllers: no internet exposure, mandatory VPN access, privileged access management, and 24/7 monitoring.
✅ Implement Detection and Response - Deploy the threat hunting queries and detection rules provided in this analysis. Establish real-time alerting for admin account creation, configuration exports, and SSO authentication anomalies.
✅ Learn from the Pattern - This is the fourth major Fortinet identity/management vulnerability in 18 months (CVE-2020-12812, CVE-2025-59718, CVE-2025-59719, CVE-2026-24858). Organizations must adopt a "defense in depth" approach assuming future vulnerabilities will emerge in these attack surfaces.
Update immediately and audit thoroughly. The cost of emergency patching and forensic analysis is negligible compared to the cost of a breach enabled by these vulnerabilities. With active exploitation confirmed for CVE-2026-24858 and pre-authentication RCE capabilities in CVE-2026-21643, the window for proactive defense is measured in hours, not days. Organizations that delay patching or skip compromise assessment are accepting material cybersecurity risk that will be difficult to justify in post-incident reviews.
Written by
Research
A DevOps engineer and cybersecurity enthusiast with a passion for uncovering the latest in zero-day exploits, automation, and emerging tech. I write to share real-world insights from the trenches of IT and security, aiming to make complex topics more accessible and actionable. Whether I’m building tools, tracking threat actors, or experimenting with AI workflows, I’m always exploring new ways to stay one step ahead in today’s fast-moving digital landscape.
Get the latest cybersecurity insights delivered to your inbox.