---
id: "CVE-2026-114582"
kind: "vulnerability"
aliases: ["CVE-2026-114582"]
title: "Django GIS: crafted spatial reference strings can read local files or trigger requests"
severity: "medium"
cvss: 6.9
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["django", "geodjango", "package", "python", "self-hosted"]
not_affected_if: ["no-geodjango", "trusted-input-only"]
published_at: "2026-11-03T16:17:19+00:00"
first_seen_at: "2026-11-03T16:21:42+00:00"
updated_at: "2026-11-03T16:24:01+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-114582", "first_seen_at": "2026-11-03T16:21:42+00:00"}]
---

# Django GIS: crafted spatial reference strings can read local files or trigger requests

Django's GIS spatial reference parser passes string input to GDAL without restricting file and network access. An attacker who supplies a crafted spatial reference string can make the server fetch URLs or read local files.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Django version with `python -m django --version`.
- Look for use of `django.contrib.gis` with `SpatialReference`, `transform()`, or `srs`/`srid` settings that take user-supplied input.

## Fix

- Django `6.1.3` for the 6.1 series
- Django `6.0.10` for the 6.0 series
- Django `5.2.19` for the 5.2 series

## Timeline

- 2026-11-03T16:21:42+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-114582

## Documents

- [fix] Patch: github.com https://github.com/django/django/commit/1c980729e53ef119d43a01d32ead30116c46cd36
- [fix] Patch: github.com https://github.com/django/django/commit/3a2ec4378b53c7b8ff5283ad7eba624ffa6f2b2f
- [fix] Patch: github.com https://github.com/django/django/commit/8bda4d0db15f28828d8db000287562efae5ce063
- [fix] Patch: github.com https://github.com/django/django/commit/a658355eb51feccbe90b5ca2e3b7f3543cd99e01

## From the sources

An issue was discovered in Django 6.1 before 6.1.3, 6.0 before 6.0.10, and 5.2 before 5.2.19.
`django.contrib.gis.gdal.SpatialReference` (and related `transform()` methods and `srs`/`srid` setters) do not restrict GDAL’s file and network access when parsing string input, which allows attackers to trigger server-side requests or local file reads via crafted spatial reference strings.
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 Adraca for reporting this issue.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
