CVE-2026-1312 Potential SQL injection via QuerySet.order_by and FilteredRelation
Attackers can execute SQL injection via crafted dictionary expansion in QuerySet.order_by and FilteredRelation, potentially reading or modifying database contents.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-1312?
CVE-2026-1312 is a medium-severity SQL injection vulnerability in Djangoproject Django, published on 3 Feb 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official description
An issue was discovered in 6.0 before 6.0.2, 5.2 before 5.2.11, and 4.2 before 4.2.28. `.QuerySet.order_by()` is subject to SQL injection in column aliases containing periods when the same alias is, using a suitably crafted dictionary, with dictionary expansion, used in `FilteredRelation`. Earlier, unsupported Django series (such as 5.0.x, 4.1.x, and 3.2.x) were not evaluated and may also be affected. Django would like to thank Solomon Kebede for reporting this issue.
Weakness: CWE-89
Which versions are affected by CVE-2026-1312?
8 open source packages ship an affected version, including django and Django. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
django Bitnami | From 4.2.0 | 4.2.28, 5.2.11, 6.0.2 |
django PyPI | From 4.2 | 4.2.28, 5.2.11, 6.0.2 |
django PyPI | From 4.2a1 | 4.2.28 |
django PyPI | From 5.2a1 | 5.2.11 |
django PyPI | From 6.0a1 | 6.0.2 |
Django PyPI | From 4.2a1 | 4.2.28 |
2 more packages
Django PyPI | From 5.2a1 | 5.2.11 |
Django PyPI | From 6.0a1 | 6.0.2 |
Products include Djangoproject Django.
How do I fix CVE-2026-1312?
Upgrade django to a fixed version for your release line: 4.2.28, 5.2.11 or 6.0.2.
Use parameterised queries everywhere and never build SQL by joining strings. Upgrade affected software first; a web application firewall only buys time. More about SQL injection.
Is CVE-2026-1312 being exploited?
There is no known exploitation of CVE-2026-1312 in the wild and no public exploit code.
Public exploit code: 2 proofs of concept on GitHub.
Other vulnerabilities in Djangoproject Django
- CVE-2026-4277 Privilege abuse in GenericInlineModelAdmin
- CVE-2024-53908 Django SQL injection in HasKey(lhs, rhs) on Oracle
- CVE-2024-42005 Django SQL injection vulnerability
- CVE-2023-31047 Django bypasses validation when using one form field to upload multiple files
- CVE-2022-34265 Django `Trunc()` and `Extract()` database functions vulnerable to SQL Injection
Sources
Also known as BIT-django-2026-1312, DEBIAN-CVE-2026-1312, ECHO-e001-dbbd-1ca3, GHSA-6426-9fv3-65x8, MINI-p9gf-mr5f-p358, PYSEC-2026-47.