CVE-2025-31104

7.2 HIGH

📋 TL;DR

This OS command injection vulnerability in FortiADC allows authenticated attackers to execute arbitrary operating system commands via specially crafted HTTP requests. It affects multiple FortiADC versions from 6.1 through 7.6.1, potentially leading to complete system compromise.

💻 Affected Systems

Products:
  • FortiADC
Versions: 7.6.0-7.6.1, 7.4.0-7.4.6, 7.2.0-7.2.7, 7.1.0-7.1.4, 7.0 all versions, 6.2 all versions, 6.1 all versions
Operating Systems: FortiOS-based systems
Default Config Vulnerable: ⚠️ Yes
Notes: Requires authenticated access to the FortiADC web interface or API endpoints.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full system compromise with attacker gaining root privileges, installing persistent backdoors, pivoting to internal networks, and exfiltrating sensitive data.

🟠

Likely Case

Unauthorized command execution leading to configuration changes, data theft, or deployment of cryptocurrency miners on affected systems.

🟢

If Mitigated

Limited impact due to network segmentation, strong authentication controls, and restricted user permissions preventing successful exploitation.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires valid credentials but is technically straightforward once authenticated.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 7.6.2, 7.4.7, 7.2.8, 7.1.5, and later versions

Vendor Advisory: https://fortiguard.fortinet.com/psirt/FG-IR-25-099

Restart Required: Yes

Instructions:

1. Download appropriate firmware version from Fortinet support portal. 2. Backup current configuration. 3. Upload and install firmware update via web interface or CLI. 4. Reboot system after installation completes.

🔧 Temporary Workarounds

Restrict Administrative Access

all

Limit access to FortiADC management interface to trusted IP addresses only

config system interface
edit <interface_name>
set allowaccess https ssh
set trust-ip-1 <trusted_ip>
end

Implement Strong Authentication

all

Enforce multi-factor authentication and complex passwords for all administrative accounts

config system admin
edit <admin_user>
set password <complex_password>
set two-factor enable
end

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate FortiADC from critical systems
  • Enable comprehensive logging and monitoring for suspicious command execution patterns

🔍 How to Verify

Check if Vulnerable:

Check FortiADC version via web interface (System > Dashboard) or CLI command: get system status

Check Version:

get system status | grep Version

Verify Fix Applied:

Verify firmware version is 7.6.2, 7.4.7, 7.2.8, 7.1.5 or later after patching

📡 Detection & Monitoring

Log Indicators:

  • Unusual command execution in system logs
  • Multiple failed authentication attempts followed by successful login
  • HTTP requests with suspicious parameters containing shell metacharacters

Network Indicators:

  • Unusual outbound connections from FortiADC to external IPs
  • Traffic patterns inconsistent with normal load balancing operations

SIEM Query:

source="fortiadc" AND (event_type="command_execution" OR http_uri="*;*" OR http_uri="*|*" OR http_uri="*`*")

🔗 References

📤 Share & Export