CVE-2025-59681·MariaDB vulnerability
An issue was discovered in Django 4.2 before 4.2.25, 5.1 before 5.1.13, and 5.2 before 5.2.7. QuerySet.annotate(), QuerySet.alias(), QuerySet.aggregate(), and QuerySet.extra() are subject to SQL injection in column aliases, when using a suitably crafted dictionary, with dictionary expansion, as the **kwargs passed to these methods (on MySQL and MariaDB).
- Severity
- high
- Software
- MariaDB
- Fixed in
- 5.2.7
- Published
- 2025-10-01
Affected versions
From: 5.2
Until: 5.2.7
Fixed in: 5.2.7
How to fix this CVE
MariaDB users running versions 5.2.0 through 5.2.6 must upgrade to 5.2.7 or later to patch a SQL injection vulnerability in query alias handling. This vulnerability allows authenticated users to inject malicious SQL through crafted dictionary arguments passed to QuerySet methods on MySQL and MariaDB backends. Immediate patching is recommended for production environments, especially those with untrusted database users or applications that construct dynamic queries.
sudo dnf update mariadb-serverDefensia detects this vulnerability
WAF mitigation (if patching is not yet possible)
Add this rule to your WAF to block exploitation attempts while you schedule the patch.
Implement input validation to restrict dictionary keys passed to Django ORM methods to alphanumeric characters and underscores only; block requests containing suspicious alias patterns with special characters, semicolons, or SQL keywords in column alias parameters.How to check if you are affected
- Step 1: Check installed MariaDB version by running `mariadb --version` or connecting to the server and executing `SELECT VERSION();`
- Step 2: Verify if your application uses Django ORM with annotate(), alias(), aggregate(), or extra() methods that accept user-controlled dictionary arguments
- Step 3: Search MariaDB audit logs for suspicious SQL patterns containing unusual alias definitions or multiple consecutive column aliases with special characters: `grep -i 'alias' /var/log/mysql/audit.log | grep -E '["\'].*[;\-\-]'`
- Step 4: After patching, confirm the new version by running `mariadb --version` and verify query execution with a test annotate() call returns expected results without errors
FAQ
What is CVE-2025-59681?
CVE-2025-59681 is a SQL injection vulnerability in MariaDB where authenticated attackers can inject arbitrary SQL code through improperly sanitized column alias parameters in Django ORM query methods on MySQL and MariaDB systems.
Is CVE-2025-59681 being actively exploited?
No, CVE-2025-59681 is not currently listed in the CISA Known Exploited Vulnerabilities catalog and no public exploits are known at this time.
What versions of MariaDB are affected by CVE-2025-59681?
MariaDB versions 5.2.0 through 5.2.6 are vulnerable; version 5.2.7 and later include the fix.
How do I check if my server is vulnerable to CVE-2025-59681?
Connect to MariaDB and run `SELECT VERSION();` then compare against 5.2.7. If your version is between 5.2.0 and 5.2.6 inclusive, your server is vulnerable.
Does Defensia detect CVE-2025-59681?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If MariaDB is installed on a monitored server, CVE-2025-59681 will appear in your dashboard with remediation steps.
Related MariaDB CVEs
References
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2025-59681. Free for 1 server.
Get started free