High severity · published Aug 4, 2026
CVE-2026-15307
Server-side file-write and request forgery via spatial lookups
8.8
CVSS
1.1%
EPSS
No
On KEV
Description
An issue was discovered in Django 5.2 before 5.2.17 and 6.0 before 6.0.8.
GeoDjango spatial lookups optimistically parse the right-hand-side value as a raster by passing it to the `django.contrib.gis.gdal.GDALRaster` constructor. Any value used in a spatial lookup against a `GeometryField` or `RasterField` reaches this constructor, including untrusted input, for example a spatial-field filter submitted through the Django admin changelist query string by a staff user with view permission. A `dict`, or a `str` holding its JSON representation, is opened in write mode regardless of the constructor's `write=False` default, allowing a file with an attacker-chosen name and contents to be written through a file-backed GDAL driver. Any other `str` is treated as a datasource, allowing an outbound network request through a GDAL virtual filesystem handler. Writing a file to a location later imported by the application can result in remote code execution.
Earlier, unsupported Django series (such as 5.1.x, 5.0.x, and 4.2.x) were not evaluated and may also be affected.
Django would like to thank Bence Nagy, localhost-detect, and kimchunbok_ for reporting this issue.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Attack vector
Network
Complexity
Low
Privileges
Low
User interaction
None
Confidentiality
High
Integrity
High
Availability
High
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)1.1% · higher than 66% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
DJ
Django · djangoproject
6.0 before 6.0.8; 5.2 before 5.2.17 · source: vendor, NVD
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-15307
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-15307
Patch
https://docs.djangoproject.com/en/dev/releases/security/
Patch
https://github.com/django/django/commit/115ffd0463a765ab1cc93de18e94b5459b8a300e
Patch
https://github.com/django/django/commit/208f80cb682868b584ed0a78f23e4ba6304212aa
Patch
https://github.com/django/django/commit/39b3e2d0c743a338def6c473086ebc06865e86b6
Patch
https://github.com/django/django/commit/f1949c1f9758947ade984c895ff16bef46f56520
Mailing List
https://groups.google.com/g/django-announce
More from Django
9.8
CVE-2026-4277
Privilege abuse in GenericInlineModelAdmin
9.8
CVE-2025-59681
An issue was discovered in Django 4.2 before 4.2.25, 5.1 before 5.1.13, and 5.2 before 5.2.7
9.8
CVE-2024-53908
An issue was discovered in Django 5.1 before 5.1.4, 5.0 before 5.0.10, and 4.2 before 4.2.17
9.8
CVE-2023-31047
In Django 3.2 before 3.2.19, 4.x before 4.1.9, and 4.2 before 4.2.1, it was possible to bypass validation when using one form field to upload multiple files
9.8
CVE-2022-34265
An issue was discovered in Django 3.2 before 3.2.14 and 4.0 before 4.0.6
