CVE-2026-15920
📛 CVE Title
Potential cross-site scripting via URLField values in the admin
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.
Overview
- State
- PUBLISHED
- Assigner (CNA)
- DSF
- CVSS severity
- MEDIUM
- CVSS score
- 5.1 / 10
- CVSS vector
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- Effective score
- 5.1 / 10 MEDIUM source: CNA overview
- CWE(s)
-
CWE-83 - Reserved
- 2026-07-15
- Published
- 2026-08-04 15:48 UTC
- Last updated
- 2026-08-04 17:21 UTC
- Source
- https://raw.githubusercontent.com/CVEProject/cvelistV5/main/cves/2026/15xxx/CVE-2026-15920.json
Affected products (1)
| Vendor | Product | Versions | Platforms |
|---|---|---|---|
| djangoproject | Django |
6.0 (affected),
6.0.8 (unaffected),
5.2 (affected),
5.2.17 (unaffected)
|
— |
Vendor references (7)
References embedded in the original CVE record by the assigning CNA.
- Django security archive vendor-advisory
- Django releases announcements mailing-list
- https://github.com/django/django/commit/47511a21026cdd721d8fbf8571cc079bc38bb46d patch
- https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a patch
- https://github.com/django/django/commit/13debb622a32720bda1bccda7622fd14fbf3931b patch
- https://github.com/django/django/commit/b9adb81339cc418f8f56b1050cca6dfec3ab6349 patch
- Django security releases issued: 6.0.8 and 5.2.17 vendor-advisory
Web references (0)
DuckDuckGo results ranked by threat-intel / vendor advisory domains. Generated by the 🔎 Find references (web) button above — same flow as the Remediations search.
No web references attached yet.
AI Forensic Analysis
Only Available for Registered Users. Sign in to view.
Raw JSON
The full cvelistV5 record. Download as CVE-2026-15920.json.
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-15920",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-08-04T17:16:24.319084Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-08-04T17:21:13.428Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://pypi.org/project/Django/",
"defaultStatus": "unaffected",
"packageName": "django",
"product": "Django",
"repo": "https://github.com/django/django/",
"vendor": "djangoproject",
"versions": [
{
"lessThan": "6.0.8",
"status": "affected",
"version": "6.0",
"versionType": "python"
},
{
"status": "unaffected",
"version": "6.0.8",
"versionType": "python"
},
{
"lessThan": "5.2.17",
"status": "affected",
"version": "5.2",
"versionType": "python"
},
{
"status": "unaffected",
"version": "5.2.17",
"versionType": "python"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "reporter",
"value": "Egor Saltykov"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Natalia Bidart"
},
{
"lang": "en",
"type": "coordinator",
"value": "Natalia Bidart"
}
],
"datePublic": "2026-08-04T10:00:00.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "<p>An issue was discovered in Django 5.2 before 5.2.17 and 6.0 before 6.0.8.</p><p><code>django.contrib.admin.utils.display_for_field()</code> renders <code>URLField</code> 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.</p><p>Exploitation requires the unsafe value to already be stored in the database. <code>URLField</code> validation through a <code>ModelForm</code> or the admin rejects unsafe schemes, so this affects applications that persist <code>URLField</code> data without running model validation, for example through direct queryset writes, deserialization, or bulk import of untrusted input.</p><p>Django would like to thank Egor Saltykov for reporting this issue.</p>"
}
],
"value": "An issue was discovered in Django 5.2 before 5.2.17 and 6.0 before 6.0.8.\n`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.\r\nExploitation 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.\nDjango would like to thank Egor Saltykov for reporting this issue."
}
],
"impacts": [
{
"capecId": "CAPEC-244",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-244: XSS Targeting URI Placeholders"
}
]
}
],
"metrics": [
{
"other": {
"content": {
"namespace": "https://docs.djangoproject.com/en/dev/internals/security/#security-issue-severity-levels",
"value": "moderate"
},
"type": "Django severity rating"
}
},
{
"cvssV3_1": {
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
}
},
{
"cvssV4_0": {
"baseScore": 5.1,
"baseSeverity": "MEDIUM",
"vectorString": "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",
"version": "4.0"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-83",
"description": "CWE-83: Improper Neutralization of Script in Attributes in a Web Page",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-04T15:48:40.537Z",
"orgId": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
"shortName": "DSF"
},
"references": [
{
"name": "Django security archive",
"tags": [
"vendor-advisory"
],
"url": "https://docs.djangoproject.com/en/dev/releases/security/"
},
{
"name": "Django releases announcements",
"tags": [
"mailing-list"
],
"url": "https://groups.google.com/g/django-announce"
},
{
"tags": [
"patch"
],
"url": "https://github.com/django/django/commit/47511a21026cdd721d8fbf8571cc079bc38bb46d"
},
{
"tags": [
"patch"
],
"url": "https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a"
},
{
"tags": [
"patch"
],
"url": "https://github.com/django/django/commit/13debb622a32720bda1bccda7622fd14fbf3931b"
},
{
"tags": [
"patch"
],
"url": "https://github.com/django/django/commit/b9adb81339cc418f8f56b1050cca6dfec3ab6349"
},
{
"name": "Django security releases issued: 6.0.8 and 5.2.17",
"tags": [
"vendor-advisory"
],
"url": "https://www.djangoproject.com/weblog/2026/aug/04/security-releases/"
}
],
"source": {
"discovery": "EXTERNAL"
},
"timeline": [
{
"lang": "en",
"time": "2026-07-13T00:00:00.000Z",
"value": "Initial report received."
},
{
"lang": "en",
"time": "2026-07-21T00:00:00.000Z",
"value": "Vulnerability confirmed."
},
{
"lang": "en",
"time": "2026-08-04T10:00:00.000Z",
"value": "Security release issued."
}
],
"title": "Potential cross-site scripting via URLField values in the admin",
"x_generator": {
"engine": "cvelib 1.8.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
"assignerShortName": "DSF",
"cveId": "CVE-2026-15920",
"datePublished": "2026-08-04T15:48:40.537Z",
"dateReserved": "2026-07-15T20:32:49.882Z",
"dateUpdated": "2026-08-04T17:21:13.428Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}