CVE-2026-1287 Potential SQL injection in column aliases via control characters
Attackers can execute SQL injection via control characters in column aliases using FilteredRelation, requiring an upgrade to patched Django versions.
- 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-1287?
CVE-2026-1287 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. `FilteredRelation` is subject to SQL injection in column aliases via control characters, using a suitably crafted dictionary, with dictionary expansion, as the `**kwargs` passed to `QuerySet` methods `annotate()`, `aggregate()`, `extra()`, `values()`, `values_list()`, and `alias()`. 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-1287?
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-1287?
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-1287 being exploited?
There is no known exploitation of CVE-2026-1287 in the wild and no public exploit code.
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-1287, CLSA-2026-1788334218, DEBIAN-CVE-2026-1287, ECHO-f04c-582a-df62, GHSA-gvg8-93h5-g6qq, MINI-6wr8-cwj9-hr4w and 3 more.