CVE-2026-15920
Potential cross-site scripting via URLField values in the admin
- Published
- Updated
- Reserved
- Assigned by
- DSF
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.
Scores
| Scored by | CVSS | Score | Vector |
|---|---|---|---|
| DSFCNA (assigner) | 4.0 | Medium5.1 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N |
| DSFCNA (assigner) | 3.1 | Medium6.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N |
| NVDNVD · Analyzed | 4.0 | Medium5.1 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
- EPSS (exploitation in 30 days)
- 0.35% · top 71% of all CVEs (6 Nov 2026)
- CISA SSVC
- Exploitation: none · Automatable: no · Technical impact: partial
The list uses the assigner's score when there is one, then CISA's, then NVD's: Medium 5.1.
Weakness
Affected products
- affected 6.0 – < 6.0.8
- unaffected 6.0.8
- affected 5.2 – < 5.2.17
- unaffected 5.2.17
References (7)
- Django security archive (opens in a new tab)vendor-advisory
- Django releases announcements (opens in a new tab)mailing-list
- https://github.com/django/django/commit/47511a21026cdd721d8fbf8571cc079bc38bb46d (opens in a new tab)patch
- https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a (opens in a new tab)patch
- https://github.com/django/django/commit/13debb622a32720bda1bccda7622fd14fbf3931b (opens in a new tab)patch
- https://github.com/django/django/commit/b9adb81339cc418f8f56b1050cca6dfec3ab6349 (opens in a new tab)patch
- Django security releases issued: 6.0.8 and 5.2.17 (opens in a new tab)vendor-advisory
Sources
The same CVE in the primary databases and aggregators, to check against.
- CVE.org record (opens in a new tab)
- CVE List JSON (GitHub) (opens in a new tab)
- NVD (opens in a new tab)
- FIRST EPSS (opens in a new tab)
- OSV.dev (opens in a new tab)
- GitHub Advisories (opens in a new tab)
- CIRCL Vulnerability-Lookup (opens in a new tab)
Badge for a README or a ticket
[](https://trackcve.app/cve/CVE-2026-15920)Record last updated .