CVE-2025-21585

4.9 MEDIUM

📋 TL;DR

This vulnerability in MySQL Server's optimizer component allows high-privileged attackers with network access to cause a denial of service (DoS) by crashing or hanging the server. It affects MySQL versions 8.0.0-8.0.41, 8.4.0-8.4.4, and 9.0.0-9.2.0. Attackers need administrative database privileges to exploit this vulnerability.

💻 Affected Systems

Products:
  • Oracle MySQL Server
Versions: 8.0.0-8.0.41, 8.4.0-8.4.4, 9.0.0-9.2.0
Operating Systems: All platforms running affected MySQL versions
Default Config Vulnerable: ⚠️ Yes
Notes: Requires high-privileged database account (admin/root equivalent).

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete unavailability of MySQL Server leading to application downtime and service disruption.

🟠

Likely Case

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

🟢

If Mitigated

Limited impact due to proper privilege separation and network segmentation.

🌐 Internet-Facing: MEDIUM - Requires admin credentials but network access enables remote exploitation.
🏢 Internal Only: HIGH - Malicious insiders or compromised admin accounts can easily exploit this.

🎯 Exploit Status

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

Oracle describes as 'easily exploitable' but requires high privileges.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Apply patches from Oracle's April 2025 Critical Patch Update

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

Restart Required: Yes

Instructions:

1. Download appropriate patch from Oracle support. 2. Backup databases. 3. Apply patch following Oracle's documentation. 4. Restart MySQL service.

🔧 Temporary Workarounds

Restrict Network Access

all

Limit MySQL server access to trusted networks only

# Configure MySQL bind-address to internal IP only
bind-address = 10.0.0.1

Privilege Reduction

all

Minimize number of high-privileged accounts and implement least privilege

# Review and revoke unnecessary admin privileges
REVOKE ALL PRIVILEGES ON *.* FROM 'user'@'%';

🧯 If You Can't Patch

  • Implement strict network segmentation and firewall rules to limit MySQL access
  • Enforce strong authentication and monitor admin account activity closely

🔍 How to Verify

Check if Vulnerable:

Check MySQL version: SELECT VERSION(); and compare against affected ranges

Check Version:

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

Verify Fix Applied:

Verify version is updated beyond affected ranges and check Oracle patch status

📡 Detection & Monitoring

Log Indicators:

  • Unexpected MySQL crashes
  • Server hang events
  • Multiple failed optimizer queries from admin accounts

Network Indicators:

  • Multiple protocol connections from admin accounts followed by service disruption

SIEM Query:

source="mysql.log" AND ("crash" OR "hang" OR "shutdown") AND user="root"

🔗 References

📤 Share & Export