The Wire · Showcase
DJANGO PATCHES FOUR CRITICAL VULNERABILITIES IN ADMIN AND SPATIAL QUERIES
By RepoJournal · Filed · About Django
Django shipped fixes for four CVEs overnight, including a stored XSS in admin URL rendering that could compromise staff accounts and three denial-of-service vectors in geolocation and language handling.
The most dangerous fix addresses CVE-2026-15920, where the admin renders URLField values as clickable links without validating them first [1]. A stored malicious URL could execute script in a staff member's authenticated session when clicked on changelists or read-only forms. Three additional CVEs landed in the same batch: CVE-2026-15307 blocks raster strings and dicts in spatial lookups that could trigger disk writes or network fetches through the GDALRaster constructor [2], CVE-2026-15830 mitigates DoS via nested geometry collections by adding max_geom_collections argument to limit either depth or total count before reaching GEOS [3], and CVE-2026-15337 rejects language codes longer than 500 characters before cache lookup to prevent memory exhaustion [4]. All four have been added to Django's security archive [5]. This is the security batch you patch immediately: URL validation in admin is table-stakes, and the spatial/internationalization DoS vectors hit production deployments using GIS or multi-language features.
One email a day. Unsubscribe in one click.
Keep up with Django in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Patch Django immediately for CVE-2026-15920 (admin XSS) django/django [immediate]
- → Apply CVE-2026-15307, CVE-2026-15830, CVE-2026-15337 fixes if you use GeoDjango or i18n django/django [immediate]
- → Review admin URLField rendering in your codebase for similar patterns django/django [plan]
References
- [1] Fixed CVE-2026-15920 -- Made display_for_field() validate URLs before rendering admin links. django/django
- [2] Fixed CVE-2026-15307 -- Blocked raster strings and dicts in spatial lookups. django/django
- [3] Fixed CVE-2026-15830 -- Mitigated potential DoS via nested geometry collections. django/django
- [4] Fixed CVE-2026-15337 -- Mitigated potential DoS in check_for_language(). django/django
- [5] Added CVE-2026-15307, CVE-2026-15337, CVE-2026-15830, and CVE-2026-15920 to security archive. django/django