{"id":"CVE-2026-15920","state":"PUBLISHED","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.\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.","publishedAt":"2026-08-04T15:48:40.537Z","updatedAt":"2026-08-04T17:21:13.428Z","severity":{"score":5.1,"label":"Medium","version":"4.0","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","source":"DSF"},"assigner":"DSF","products":["djangoproject Django"],"affected":[{"vendor":"djangoproject","product":"Django","packageName":"django","defaultStatus":"unaffected","versions":[{"version":"6.0","status":"affected","lessThan":"6.0.8","versionType":"python"},{"version":"6.0.8","status":"unaffected","versionType":"python"},{"version":"5.2","status":"affected","lessThan":"5.2.17","versionType":"python"},{"version":"5.2.17","status":"unaffected","versionType":"python"}],"collectionURL":"https://pypi.org/project/Django/","repo":"https://github.com/django/django/"}],"references":["https://docs.djangoproject.com/en/dev/releases/security/","https://groups.google.com/g/django-announce","https://github.com/django/django/commit/47511a21026cdd721d8fbf8571cc079bc38bb46d","https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a","https://github.com/django/django/commit/13debb622a32720bda1bccda7622fd14fbf3931b","https://github.com/django/django/commit/b9adb81339cc418f8f56b1050cca6dfec3ab6349","https://www.djangoproject.com/weblog/2026/aug/04/security-releases/"],"weaknesses":["CWE-83"],"ingestedAt":"2026-10-29T20:11:00.674Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/15xxx/CVE-2026-15920.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-15920","state":"PUBLISHED","datePublished":"2026-08-04T15:48:40.537Z","dateUpdated":"2026-08-04T17:21:13.428Z","assignerShortName":"DSF","assignerOrgId":"6a34fbeb-21d4-45e7-8e0a-62b95bc12c92","dateReserved":"2026-07-15T20:32:49.882Z"},"containers":{"cna":{"title":"Potential cross-site scripting via URLField values in the admin","descriptions":[{"lang":"en","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."}],"affected":[{"vendor":"djangoproject","product":"Django","packageName":"django","defaultStatus":"unaffected","versions":[{"version":"6.0","status":"affected","lessThan":"6.0.8","versionType":"python"},{"version":"6.0.8","status":"unaffected","versionType":"python"},{"version":"5.2","status":"affected","lessThan":"5.2.17","versionType":"python"},{"version":"5.2.17","status":"unaffected","versionType":"python"}],"collectionURL":"https://pypi.org/project/Django/","repo":"https://github.com/django/django/"}],"references":[{"url":"https://docs.djangoproject.com/en/dev/releases/security/","name":"Django security archive","tags":["vendor-advisory"]},{"url":"https://groups.google.com/g/django-announce","name":"Django releases announcements","tags":["mailing-list"]},{"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","tags":["patch"]},{"url":"https://www.djangoproject.com/weblog/2026/aug/04/security-releases/","name":"Django security releases issued: 6.0.8 and 5.2.17","tags":["vendor-advisory"]}],"metrics":[{"other":{"content":{"value":"moderate","namespace":"https://docs.djangoproject.com/en/dev/internals/security/#security-issue-severity-levels"},"type":"Django severity rating"}},{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","baseScore":6.1,"baseSeverity":"MEDIUM"}},{"cvssV4_0":{"version":"4.0","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","baseScore":5.1,"baseSeverity":"MEDIUM"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-83","lang":"en","description":"CWE-83: Improper Neutralization of Script in Attributes in a Web Page","type":"CWE"}]}],"providerMetadata":{"shortName":"DSF","orgId":"6a34fbeb-21d4-45e7-8e0a-62b95bc12c92","dateUpdated":"2026-08-04T15:48:40.537Z"},"impacts":[{"capecId":"CAPEC-244","descriptions":[{"lang":"en","value":"CAPEC-244: XSS Targeting URI Placeholders"}]}],"credits":[{"lang":"en","type":"reporter","value":"Egor Saltykov"},{"lang":"en","type":"remediation developer","value":"Natalia Bidart"},{"lang":"en","type":"coordinator","value":"Natalia Bidart"}],"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."}],"datePublic":"2026-08-04T10:00:00.000Z","source":{"discovery":"EXTERNAL"},"x_generator":{"engine":"cvelib 1.8.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-08-04T17:16:24.319084Z","id":"CVE-2026-15920","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-08-04T17:21:13.428Z"}}]}}}