CVE-2021-24007

9.8 CRITICAL

📋 TL;DR

This CVE describes SQL injection vulnerabilities in FortiMail email security appliances that allow unauthenticated attackers to execute arbitrary SQL commands via crafted HTTP requests. Attackers could potentially execute unauthorized code or commands on affected systems. Organizations running FortiMail versions before 6.4.4 are affected.

💻 Affected Systems

Products:
  • FortiMail
Versions: All versions before 6.4.4
Operating Systems: Fortinet's custom OS
Default Config Vulnerable: ⚠️ Yes
Notes: All default configurations are vulnerable. No special configuration required for exploitation.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise allowing attackers to execute arbitrary code, steal sensitive data, pivot to internal networks, and maintain persistent access.

🟠

Likely Case

Data exfiltration, email system compromise, credential theft, and potential lateral movement within the network.

🟢

If Mitigated

Limited impact with proper network segmentation, WAF protection, and restricted database permissions.

🌐 Internet-Facing: HIGH - FortiMail appliances are typically internet-facing email gateways, making them directly accessible to attackers.
🏢 Internal Only: MEDIUM - While primarily internet-facing, compromised systems could be used to attack internal networks.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

SQL injection vulnerabilities are well-understood and often weaponized quickly. The unauthenticated nature makes exploitation straightforward.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 6.4.4 and later

Vendor Advisory: https://fortiguard.com/advisory/FG-IR-21-012

Restart Required: Yes

Instructions:

1. Backup current configuration. 2. Download FortiMail 6.4.4 or later from Fortinet support portal. 3. Upload firmware to FortiMail via web interface. 4. Install update. 5. Reboot system. 6. Verify version and functionality.

🔧 Temporary Workarounds

Web Application Firewall Rules

all

Implement WAF rules to block SQL injection patterns targeting FortiMail endpoints

# Example WAF rule for SQL injection detection
# Configure in your WAF solution to block patterns like: UNION SELECT, ' OR '1'='1, ;--

Network Segmentation

linux

Restrict access to FortiMail management interfaces to trusted IP addresses only

# Example firewall rule
# iptables -A INPUT -p tcp --dport 443 -s trusted_network -j ACCEPT
# iptables -A INPUT -p tcp --dport 443 -j DROP

🧯 If You Can't Patch

  • Implement strict network access controls to limit FortiMail exposure to only necessary IP addresses
  • Deploy a web application firewall (WAF) in front of FortiMail with SQL injection detection rules

🔍 How to Verify

Check if Vulnerable:

Check FortiMail version via web interface: System > Dashboard > System Information. If version is below 6.4.4, system is vulnerable.

Check Version:

# From FortiMail CLI:
get system status
# Look for 'Version: FortiMail-6.4.4' or higher

Verify Fix Applied:

After patching, verify version is 6.4.4 or higher in System > Dashboard > System Information. Test email functionality to ensure patch didn't break services.

📡 Detection & Monitoring

Log Indicators:

  • Unusual SQL error messages in logs
  • Multiple failed login attempts followed by successful access
  • Unexpected database queries in application logs

Network Indicators:

  • HTTP requests containing SQL keywords (SELECT, UNION, INSERT, etc.) to FortiMail endpoints
  • Unusual outbound connections from FortiMail to external systems

SIEM Query:

source="fortimail" AND ("sql" OR "union" OR "select" OR "' OR '1'='1") AND response_code=200

🔗 References

📤 Share & Export