{"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.","aliases":["BIT-django-2026-15920"],"modified":"2026-08-19T03:49:22.404495154Z","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:11491-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"},"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":"9e7cc2b628fe8fd3895986af9b7fc9525034c1b0"},{"fixed":"e802ada38b3ecf345915163bb6d7f008be411664"},{"introduced":"36b5f39d9372147f0e758f590e35ee2b2bc317dd"},{"fixed":"b2821457e8bfa9e9066837b9f9b3a3955224ab19"},{"fixed":"13debb622a32720bda1bccda7622fd14fbf3931b"},{"fixed":"47511a21026cdd721d8fbf8571cc079bc38bb46d"},{"fixed":"5a260d309a4c8010c2ebda24eb758a5d95e2508a"},{"fixed":"b9adb81339cc418f8f56b1050cca6dfec3ab6349"}],"database_specific":{"extracted_events":[{"introduced":"5.2"},{"fixed":"5.2.17"},{"introduced":"6.0"},{"fixed":"6.0.8"}],"source":["CPE_RANGE","REFERENCES"],"cpe":"cpe:2.3:a:djangoproject:django:*:*:*:*:*:*:*:*"}}],"versions":["5.2.16","6.0.7","5.2.15","6.0.6","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","5.2.8","5.2.7","5.2.6","5.2.5","5.2.4","5.2.3","5.2.2","5.2.1","5.2"],"database_specific":{"source":"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-15920.json"}}],"schema_version":"1.9.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"}]}