CVE-2024-21207

4.9 MEDIUM

📋 TL;DR

This vulnerability in MySQL Server's InnoDB component allows high-privileged attackers with network access to cause a denial of service by crashing or hanging the server. It affects MySQL versions 8.0.38 and prior, 8.4.1 and prior, and 9.0.1 and prior. Attackers need administrative database privileges but can exploit it remotely via multiple protocols.

💻 Affected Systems

Products:
  • Oracle MySQL Server
Versions: 8.0.38 and prior, 8.4.1 and prior, 9.0.1 and prior
Operating Systems: All platforms running affected MySQL versions
Default Config Vulnerable: ⚠️ Yes
Notes: Requires InnoDB storage engine (default in MySQL 8.0+) and high-privileged database user account.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete MySQL Server outage causing application downtime and service disruption until server restart.

🟠

Likely Case

Targeted DoS attacks against vulnerable MySQL instances by malicious insiders or compromised admin accounts.

🟢

If Mitigated

Limited impact due to proper access controls and network segmentation preventing unauthorized admin access.

🌐 Internet-Facing: MEDIUM - While exploitable remotely, attackers need high privileges which are rarely exposed directly to the internet.
🏢 Internal Only: MEDIUM - Malicious insiders or compromised admin accounts could exploit this to disrupt database services.

🎯 Exploit Status

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

Oracle describes it as 'easily exploitable' but requires high database privileges (PR:H). No public exploit details available.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 8.0.39, 8.4.2, 9.0.2 or later

Vendor Advisory: https://www.oracle.com/security-alerts/cpuoct2024.html

Restart Required: Yes

Instructions:

1. Download latest MySQL version from Oracle website. 2. Backup databases. 3. Stop MySQL service. 4. Install updated version. 5. Start MySQL service. 6. Verify version with 'SELECT VERSION();'

🔧 Temporary Workarounds

Restrict Admin Network Access

all

Limit network access to MySQL admin accounts to trusted IPs only

mysql> REVOKE ALL PRIVILEGES ON *.* FROM 'admin_user'@'%';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'trusted_ip' IDENTIFIED BY 'password';

Implement Connection Rate Limiting

all

Limit connection attempts to prevent rapid exploitation attempts

# In my.cnf: max_connections = 100
# In my.cnf: max_user_connections = 10

🧯 If You Can't Patch

  • Implement strict access controls for MySQL admin accounts and monitor for unusual activity.
  • Segment MySQL servers from untrusted networks and implement network-based DoS protection.

🔍 How to Verify

Check if Vulnerable:

Run 'SELECT VERSION();' in MySQL and compare against affected versions: 8.0.0-8.0.38, 8.4.0-8.4.1, 9.0.0-9.0.1

Check Version:

mysql -u root -p -e 'SELECT VERSION();'

Verify Fix Applied:

Confirm version is 8.0.39+, 8.4.2+, or 9.0.2+ using 'SELECT VERSION();'

📡 Detection & Monitoring

Log Indicators:

  • Unexpected MySQL crashes or restarts
  • Multiple connection attempts from admin accounts
  • InnoDB error messages in error log

Network Indicators:

  • Unusual traffic patterns to MySQL port 3306 from admin accounts
  • Multiple rapid connections followed by service disruption

SIEM Query:

source="mysql_error.log" AND ("crash" OR "hang" OR "InnoDB") OR source="mysql_slow.log" AND user IN (admin_users) AND connection_count > threshold

🔗 References

📤 Share & Export