AdvisoriesCVE-2026-111362

CVE-2026-111362

Django: server-side request forgery via GeoJSON geometries

Medium

Time
—
Cost
—

Product

Django

Affected versions

Before 6.1.3, 6.0.10, and 5.2.19

Class

Server-side request forgery CWE-918

Severity

Medium

Summary

Overview

GeoJSON geometries can carry a crs member that names a coordinate reference system. GDAL resolves CRS URLs found there.

Creating a geometry from user input could therefore make the Django process issue network requests or read files. Django rates the issue moderate under its security policy.

The issue is fixed in Django 6.1.3, 6.0.10, and 5.2.19, released on November 3, 2026.

Sequence

Attack path

  1. 01

    Step 1

    Supply a GeoJSON geometry whose crs member names a URL.

  2. 02

    Step 2

    Pass that geometry into code that creates a Django geometry from user input.

  3. 03

    Step 3

    GDAL resolves the CRS URL during geometry creation.

  4. 04

    Step 4

    The Django process issues a network request or reads a file named by that resolution.

#poc

Proof of concept

On affected releases, a geometry created from user input could resolve a CRS URL through GDAL. The same input on 6.1.3, 6.0.10, and 5.2.19 does not.

We will update this post at a later time to include additional proof of concept details. Operators should treat geometry creation from user input on affected releases as in scope and upgrade.

#exploit

Exploitation

The primitive is a network request or file read issued by the Django process during geometry creation. It requires code that creates geometries from user input.

Reach is limited to network requests and file reads by the Django process during geometry creation. That reach does not by itself execute caller-supplied code in the process.

We will update this post at a later time to include additional exploitation details.

#details

Technical details

Root cause: GDAL resolves CRS URLs in the crs member of GeoJSON geometries during geometry creation.

Affected configuration: Django releases before the 6.1.3, 6.0.10, and 5.2.19 fixes, where geometries are created from user input.

The fix in 6.1.3, 6.0.10, and 5.2.19 stops that CRS resolution from reaching the network or the filesystem.

Remediation

Fixed in Django 6.1.3, 6.0.10, and 5.2.19.

  • Upgrade to Django 6.1.3, 6.0.10, or 5.2.19 or later on your release line.
  • Until you can upgrade, do not create geometries from untrusted GeoJSON, and limit outbound network access from the Django process.

How Submersion found it

  1. 01

    Step 1

    We will update this post at a later time to include proof of concept and exploitation details.

Basin was pointed at Django. It received the application and a running environment. It did not receive a vulnerability description, an exploit, a patch diff, or a prior disclosure.

Disclosure

Disclosure timeline

  1. Published

    Fixed in Django 6.1.3, 6.0.10, and 5.2.19