CVE-2026-87975 json
Privilege abuse in model formsets with editable primary keys
published 2026-10-06 33 d ago modified 2026-10-06 33 d ago also EUVD-2026-93396
- cvss
- 4.3
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 13%
- public exploits
- 0
- none known
Summary
An issue was discovered in Django 6.1 before 6.1.2, 6.0 before 6.0.9, and 5.2 before 5.2.18. `django.forms.models.BaseModelFormSet.save_existing_objects()` used the presence of a primary key on a submitted form's instance as evidence that the instance belonged to the formset's limiting queryset. An object outside that queryset is represented by a newly constructed instance whose primary key can still be populated from submitted data when the model's primary key is a field accepted by the form, such as a `OneToOneField` or parent link used as the primary key of an inline formset's model, or a natural or UUID primary key included in the form's fields. This allows an authenticated user permitted to submit such a formset to delete rows outside the limiting queryset, without any permission on the targeted object, via forged management-form data marking an out-of-queryset object for deletion. Models using the default AutoField primary key are not affected. 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 Seonggwon Yoon for reporting this issue.
Patch / fix
- djangoproject Django 5.2.18, 6.0.9, 6.1.2
- python-django Debian 12 3:3.2.25-0+deb12u6
debian advisories DEBIAN-CVE-2026-87975
- python-Django SLE Module for Package Hub 15 SP7 4.2.11-150600.3.68.1
suse advisories SUSE-SU-2026:4626-1
- python-Django openSUSE Leap 16.0 5.2.4-bp160.12.1
- python-Django openSUSE Tumbleweed 6.1.2-1.1
- python-Django5 openSUSE Tumbleweed 5.2.18-1.1
- python-Django4 openSUSE Tumbleweed 4.2.30-6.1
opensuse advisories openSUSE-SU-2026:22196-1openSUSE-SU-2026:12103-1openSUSE-SU-2026:12095-1openSUSE-SU-2026:12086-1
- py3-django Alpine 3.24 5.2.18-r0
alpine advisories ALPINE-CVE-2026-87975
Alpine secdb © Alpine Linux, from https://secdb.alpinelinux.org via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-87975 updated cvss 6.5
django: Privilege abuse in model formsets with editable primary keys
-
Red Hat Ansible Automation Platform 2 python-django, python3x-django, python3.11-django, python3.12-django, automation-controller, ansible-automation-platform-24/hub-rhel8, +25 moreaffected: workaround, no fix available, no fix planned “Out of support scope”
-
Red Hat Discovery 2 discovery/discovery-server-rhel9affected: workaround, no fix available “Fix deferred”
-
Red Hat OpenStack Platform 13 (Queens) python-django, python2-django, python-django-bash-completion Red Hat OpenStack Platform 16.2 python-django20, python3-django20, rhosp-rhel8/openstack-horizon, python-django20-bash-completion Red Hat OpenStack Platform 17.1 python-django, python3-django, rhosp-rhel9/openstack-horizonaffected: workaround, no fix planned “Out of support scope”
-
Red Hat OpenStack Platform 18.0 python-django, rhoso/openstack-horizon-rhel9 Red Hat Satellite 6 python-django, python2-django, python3.12-django, python-django-bash-completion, satellite/iop-advisor-backend-rhel9affected: workaround, no fix available “Fix deferred”
-
Red Hat Update Infrastructure 4 for Cloud Providers python-djangoaffected: workaround, no fix planned “Out of support scope”
-
Red Hat Update Infrastructure 5 rhui5/rhua-rhel9, rhui5/rhua-tp-rhel9 Red Hat Self-service automation portal 2 ansible-automation-platform/bootc-automation-portal-rhel9affected: workaround, no fix available “Fix deferred”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 33 d ago
Exploit prediction
0.23% chance of exploitation in the next 30 days, higher than 13% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 4.3 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N |
| CNA | 4.0 | 5.3 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N |
| CNA | 4.0 | 5.3 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/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 |
Affected products
- djangoproject Django
Classification
- Weakness
-
- CWE-639 Authorization Bypass Through User-Controlled Key
- Technology feeds
References
-
github.com
/django/django/commit/83cbd21be57483e6b3eb6e4688a561c841aff75e
patch
-
github.com
/django/django/commit/cce6c57ed30ea83725f9d6abb2fe5ee932bab107
patch
-
github.com
/django/django/commit/b83ab92bc5474558b083a840ea4628b3261b2cfe
patch
-
github.com
/django/django/commit/ff27883ca055aa9ab23015b50674a5b10dfe5a41
patch
-
docs.djangoproject.com
/en/dev/releases/security/
vendor-advisory
-
djangoproject.com
/weblog/2026/oct/06/security-releases/
vendor-advisory
-
groups.google.com
/g/django-announce
mailing-list
Sources
- CVE List CVE-2026-87975
- NVD CVE-2026-87975
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.