CVE-2026-15920: Potential cross-site scripting via URLField values in the admin
An issue was discovered in Django 5.2 before 5.2.17 and 6.0 before 6.0.8. django.contrib.admin.utils.displayforfield() 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.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-15920?
The severity of CVE-2026-15920 is rated as medium with a score of 6.1.
What vulnerability does CVE-2026-15920 address?
CVE-2026-15920 addresses a potential cross-site scripting issue in Django that arises from unvalidated URLField values in the admin interface.
How do I fix CVE-2026-15920?
To fix CVE-2026-15920, update to Django version 5.2.17 or later, or 6.0.8 or later.
What kind of impact does CVE-2026-15920 have?
CVE-2026-15920 could allow an attacker to execute malicious scripts in a user's browser by rendering unsafe URLField values.
Which versions of Django are affected by CVE-2026-15920?
CVE-2026-15920 affects Django versions prior to 5.2.17 and 6.0 before 6.0.8.