{"id":"CVE-2026-15920","summary":"Potential cross-site scripting via URLField values in the admin","details":"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.","modified":"2026-08-07T18:56:51.278492442Z","published":"2026-08-04T15:48:40.537Z","related":["SUSE-SU-2026:3503-1","openSUSE-SU-2026:11464-1","openSUSE-SU-2026:11465-1","openSUSE-SU-2026:21543-1"],"database_specific":{"cna_assigner":"DSF","cwe_ids":["CWE-83"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/15xxx/CVE-2026-15920.json","unresolved_ranges":[{"source":"AFFECTED_FIELD","extracted_events":[{"introduced":"6.0"},{"fixed":"6.0.8"},{"introduced":"5.2"},{"fixed":"5.2.17"}]},{"extracted_events":[{"introduced":"5.2"},{"fixed":"5.2.17"},{"introduced":"6.0"},{"fixed":"6.0.8"}],"source":"DESCRIPTION"}]},"references":[{"type":"WEB","url":"https://github.com/django/django/"},{"type":"ADVISORY","url":"https://docs.djangoproject.com/en/dev/releases/security/"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/15xxx/CVE-2026-15920.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-15920"},{"type":"ADVISORY","url":"https://www.djangoproject.com/weblog/2026/aug/04/security-releases/"},{"type":"FIX","url":"https://github.com/django/django/commit/13debb622a32720bda1bccda7622fd14fbf3931b"},{"type":"FIX","url":"https://github.com/django/django/commit/47511a21026cdd721d8fbf8571cc079bc38bb46d"},{"type":"FIX","url":"https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a"},{"type":"FIX","url":"https://github.com/django/django/commit/b9adb81339cc418f8f56b1050cca6dfec3ab6349"},{"type":"PACKAGE","url":"https://pypi.org/project/Django/"},{"type":"ARTICLE","url":"https://groups.google.com/g/django-announce"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/django/django","events":[{"introduced":"0"},{"fixed":"13debb622a32720bda1bccda7622fd14fbf3931b"},{"fixed":"47511a21026cdd721d8fbf8571cc079bc38bb46d"},{"fixed":"5a260d309a4c8010c2ebda24eb758a5d95e2508a"},{"fixed":"b9adb81339cc418f8f56b1050cca6dfec3ab6349"}],"database_specific":{"source":"REFERENCES"}}],"versions":["6.1rc1","5.2.16","6.0.7","6.1b1","5.2.15","6.0.6","6.1a1","5.2.14","6.0.5","5.2.13","6.0.4","5.2.12","6.0.3","5.2.11","6.0.2","6.0.1","5.2.10","6.0","5.2.9","6.0rc1","5.2.8","6.0b1","5.2.7","6.0a1","5.2.6","5.2.5","5.2.4","5.2.3","5.2.2","5.2.1","5.2","5.2rc1","5.2b1","5.2a1","1.7a2","1.4","1.3","1.2.1","1.2","1.1","1.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-15920.json"}}],"schema_version":"1.8.0","severity":[{"type":"CVSS_V4","score":"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"}]}