{"id":"CVE-2026-111362","kind":"vulnerability","aliases":["CVE-2026-111362"],"related":[],"title":"Django: GeoJSON input can trigger server-side requests to attacker-chosen destinations","description":"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.\n`django.contrib.gis.gdal.OGRGeometry` does not restrict external coordinate reference system definitions in GeoJSON input, which allows remote attackers to cause server-side requests to attacker-selected destinations via crafted crs members.\nEarlier, unsupported Django series (such as 5.1.x, 5.0.x, and 4.2.x) were not evaluated and may also be affected.\nDjango would like to thank Submersion Security Research Team for reporting this issue.","summary":"Django's GIS OGRGeometry class accepts external coordinate reference system definitions in GeoJSON input without restriction. A remote attacker can send crafted crs members to make the server issue requests to destinations of their choosing (server-side request forgery).","severity":"medium","cvss":6.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["django","gis","python","runtime","web-backend"],"not_affected_if":["no-gis-contrib","no-untrusted-geojson"],"how_to_check":"- Check the installed Django version with `python -m django --version`, and look for `django.contrib.gis` in INSTALLED_APPS\n- Check whether the application passes untrusted GeoJSON into `OGRGeometry`\n- Compare the version against the fixed releases listed in the fix section","fix":"- Django 6.1: upgrade to `6.1.3` or later\n- Django 6.0: upgrade to `6.0.10` or later\n- Django 5.2: upgrade to `5.2.19` or later\n- Earlier unsupported series (5.1.x, 5.0.x, 4.2.x) were not evaluated by the sources and may also be affected","status":"open","published_at":"2026-11-03T16:17:18+00:00","first_seen_at":"2026-11-03T16:21:42+00:00","triaged_at":"2026-11-03T16:24:02+00:00","updated_at":"2026-11-03T16:24:02+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-11-03T16:24:02Z","model":"claude-haiku-5-5","output":{"fix":"- Django 6.1: upgrade to `6.1.3` or later\n- Django 6.0: upgrade to `6.0.10` or later\n- Django 5.2: upgrade to `5.2.19` or later\n- Earlier unsupported series (5.1.x, 5.0.x, 4.2.x) were not evaluated by the sources and may also be affected","reach":"internet","title":"Django: GeoJSON input can trigger server-side requests to attacker-chosen destinations","impact":"medium","summary":"Django's GIS OGRGeometry class accepts external coordinate reference system definitions in GeoJSON input without restriction. A remote attacker can send crafted crs members to make the server issue requests to destinations of their choosing (server-side request forgery).","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["django","python","gis","web-backend"],"confidence":0.7,"fix_status":"available","needs_auth":"unknown","worst_case":"server makes requests to attacker-chosen internal or external hosts","analyst_note":"Confirm whether the unsupported 4.2, 5.0 and 5.1 series are affected, and check the linked GitHub patch commits for the exact vulnerable code path and any required GIS setup.","how_to_check":"- Check the installed Django version with `python -m django --version`, and look for `django.contrib.gis` in INSTALLED_APPS\n- Check whether the application passes untrusted GeoJSON into `OGRGeometry`\n- Compare the version against the fixed releases listed in the fix section","plain_action":"","needs_analyst":true,"not_affected_if":["no-gis-contrib","no-untrusted-geojson"],"who_is_affected":"Applications built on Django that use the GIS contrib module (django.contrib.gis) and accept GeoJSON from outside, for example through an API or form, are exposed. Projects that do not use GIS features or never parse untrusted GeoJSON can skip it. The sources do not say whether the unsupported 5.1, 5.0 and 4.2 series are affected, only that they were not evaluated.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000807,"input_tokens":4295,"output_tokens":754,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-111362':17A,20A '-2026':16A,19A '4.2':126C '5.0':123C '5.1':121C '5.2':81C '5.2.19':83C '6.0':77C '6.0.10':79C '6.1':74C '6.1.3':76C 'accept':33B 'affect':135C 'allow':97C 'also':133C 'attack':12A,46B,99C,108C 'attacker-chosen':11A 'attacker-select':107C 'backend':27B 'caus':101C 'choos':62B 'chosen':13A 'class':32B 'coordin':35B,89C 'craft':49B,112C 'crs':50B,113C 'cve':15A,18A 'definit':38B,92C 'destin':14A,59B,110C 'discov':71C 'django':1A,21B,28B,73C,117C,136C 'django.contrib.gis.gdal.ogrgeometry':84C 'earlier':115C 'evalu':130C 'extern':34B,88C 'forgeri':67B 'geojson':2A,40B,94C 'gis':22B,30B 'input':3A,41B,95C 'issu':56B,69C,148C 'like':138C 'make':53B 'may':132C 'member':51B,114C 'ogrgeometri':31B 'python':23B 'refer':36B,90C 'remot':45B,98C 'report':146C 'request':9A,57B,66B,105C 'research':143C 'restrict':43B,87C 'runtim':24B 'secur':142C 'select':109C 'send':48B 'seri':118C 'server':7A,55B,64B,103C 'server-sid':6A,63B,102C 'side':8A,65B,104C 'submers':141C 'system':37B,91C 'team':144C 'thank':140C 'trigger':5A 'unsupport':116C 'via':111C 'web':26B 'web-backend':25B 'without':42B 'would':137C 'x':122C,124C,127C","nicknames":[],"mitigations":[],"who_affected":"Applications built on Django that use the GIS contrib module (django.contrib.gis) and accept GeoJSON from outside, for example through an API or form, are exposed. Projects that do not use GIS features or never parse untrusted GeoJSON can skip it. The sources do not say whether the unsupported 5.1, 5.0 and 4.2 series are affected, only that they were not evaluated.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["django","gis","medium","python","runtime","webbackend"],"campaign_type":null,"first_public_at":"2026-11-03T16:17:18+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"6a34fbeb-21d4-45e7-8e0a-62b95bc12c92","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-111362","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111362","severity":null,"published_at":"2026-11-03T16:17:18+00:00","modified_at":"2026-11-03T16:17:19+00:00","first_seen_at":"2026-11-03T16:21:42+00:00","fetched_at":"2026-11-03T16:21:42+00:00","note":null}],"documents":[{"id":58785,"url":"https://github.com/django/django/commit/31bef742da017bc71fdce9298c30984aad844102","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":58786,"url":"https://github.com/django/django/commit/649fb7985f67d5936dfb8caae6a54c0870dc8eec","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":58787,"url":"https://github.com/django/django/commit/e938f676fcca72f41247b0e96d4f0805e1722913","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":58788,"url":"https://github.com/django/django/commit/ecb2b77b49890d6b2120f73fb3d7eb7ac7650143","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}