CVE-2026-15920 Potential cross-site scripting via URLField values in the admin
Attackers can execute scripts in the Django admin interface if unsafe URLs are stored via non-standard methods, targeting staff users.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2026-15920?
CVE-2026-15920 is a medium-severity cross-site scripting vulnerability in Djangoproject Django, published on 4 Aug 2026. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Official description
An issue was discovered in Django 5.2 before 5.2.17 and 6.0 before 6.0.8. `django.contrib.admin.utils.display_for_field()` renders `URLField` values as clickable links in the admin without validating the URL. A value stored with an unsafe scheme is displayed as a link on changelist and read-only admin pages, which allows cross-site scripting against staff users who click the link. Exploitation requires the unsafe value to already be stored in the database. `URLField` validation through a `ModelForm` or the admin rejects unsafe schemes, so this affects applications that persist `URLField` data without running model validation, for example through direct queryset writes, deserialization, or bulk import of untrusted input. Django would like to thank Egor Saltykov for reporting this issue.
Weakness: CWE-83
Which versions are affected by CVE-2026-15920?
1 open source package ship an affected version, including django. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
django Bitnami | From 5.2.0 | 5.2.17, 6.0.8 |
Products include Djangoproject Django.
How do I fix CVE-2026-15920?
Upgrade django to a fixed version for your release line: 5.2.17 or 6.0.8.
Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.
Is CVE-2026-15920 being exploited?
There is no known exploitation of CVE-2026-15920 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-15920, DEBIAN-CVE-2026-15920, GHSA-8rmj-xgq5-w9qm, MINI-qhgv-9w28-58gq, UBUNTU-CVE-2026-15920.