CVE-2026-4277
Django vulnerability analysis and mitigation

Overview

CVE-2026-4277 is an authorization bypass vulnerability in Django's GenericInlineModelAdmin component, where add permissions on inline model instances are not validated when forged POST data is submitted. It affects Django versions 4.2 before 4.2.30, 5.2 before 5.2.13, and 6.0 before 6.0.4; unsupported series (5.0.x, 4.1.x, 3.2.x) may also be affected. The vulnerability was reported by N05ec@LZU-DSLab and disclosed on April 7, 2026. CISA-ADP assigned a CVSS v3.1 base score of 9.8 (Critical), while GitHub's CVSS v4 assessment rates it as Low (2.3) due to the requirement for some privileges and attack prerequisites (GitHub Advisory, Django Security Releases).

Technical details

The root cause is a missing authorization check (CWE-862) in Django's GenericInlineModelAdmin, which fails to validate whether the submitting user has the "add" permission before processing inline model instance creation via forged HTTP POST requests. An attacker can craft a malicious POST request targeting Django admin endpoints that use GenericInlineModelAdmin, bypassing the permission enforcement layer entirely. The GitHub Advisory also references CWE-639 (Authorization Bypass Through User-Controlled Key), indicating the bypass is facilitated through attacker-controlled input in the request body. A patch commit is available at the Django source repository (GitHub Advisory, Django Changeset).

Impact

Successful exploitation allows an attacker to create or modify inline model instances in the Django admin interface without possessing the required "add" permissions, resulting in unauthorized data manipulation. The CISA-ADP CVSS assessment indicates high confidentiality, integrity, and availability impact, meaning sensitive data could be exposed, critical records altered, and service stability disrupted. The scope is limited to applications using GenericInlineModelAdmin in their Django admin configuration, but the potential for unauthorized data modification could enable privilege escalation or further lateral movement within the application (GitHub Advisory, Red Hat Bugzilla).

Exploitability

As of the time of reporting, there is no public proof-of-concept exploit and no evidence of active in-the-wild exploitation (Feedly). The EPSS score is approximately 0.013% (0.022% per GitHub Advisory), placing it in a low percentile for near-term exploitation likelihood. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. No threat actor attribution has been reported. The GitHub CVSS v4 assessment notes that attack requirements (AT:P) and low privileges (PR:L) are prerequisites, which somewhat limits the practical exploitability compared to the CISA-ADP unauthenticated assessment (GitHub Advisory).

Exploitation steps

  1. Reconnaissance: Identify Django applications exposing an admin interface that uses GenericInlineModelAdmin for inline model management. Tools like Shodan or manual browsing can identify publicly accessible Django admin endpoints.
  2. Obtain minimal access: Depending on the actual privilege requirement, obtain a low-privileged user account on the target Django application (e.g., a standard authenticated user without "add" permissions on the target inline model).
  3. Identify target admin endpoint: Navigate to or enumerate the Django admin URL (typically /admin/) and identify pages that render GenericInlineModelAdmin inline forms for a target model.
  4. Craft forged POST request: Using a tool such as Burp Suite or curl, construct a POST request to the relevant admin change/add view URL, including the inline formset data for the target model instance, bypassing the UI-level permission checks.
  5. Submit forged data: Send the crafted POST request. Because GenericInlineModelAdmin does not validate add permissions server-side, the inline model instance is created or modified without authorization.
  6. Verify impact: Confirm that the unauthorized inline model instance was created or modified in the database, demonstrating the permission bypass (GitHub Advisory, Django Changeset).

Indicators of compromise

  • Network: Unexpected or anomalous POST requests to Django admin URLs (e.g., /admin/<app>/<model>/add/ or /admin/<app>/<model>/<id>/change/) from users who do not normally perform add operations; requests containing inline formset parameters (e.g., fields prefixed with <model_name>_set-) from low-privileged accounts.
  • Logs: Django application logs or web server access logs showing POST requests to admin change/add views by users lacking the expected permissions; HTTP 200 or 302 responses to admin form submissions from accounts that should have been denied.
  • Database: Unexpected creation or modification of inline model records not attributable to authorized admin users; audit trail discrepancies between admin action logs and actual database state.
  • Application: Django admin action log entries (if enabled) showing inline model additions by users without the corresponding permission assignment.

Mitigation and workarounds

Django has released patched versions addressing this vulnerability: 4.2.30, 5.2.13, and 6.0.4. Users on unsupported series (5.0.x, 4.1.x, 3.2.x) should upgrade to a currently supported and patched version as soon as possible. As a network-level workaround, restrict access to Django admin endpoints (/admin/) to trusted IP addresses using firewall rules or web server configuration. Additionally, reviewing audit logs for suspicious POST activity to admin endpoints is recommended as a detection measure (Django Security Releases, GitHub Advisory).

Community reactions

The Django Software Foundation credited N05ec@LZU-DSLab for responsible disclosure and published coordinated security releases on April 7, 2026 (Django Security Releases). Red Hat opened a tracking bug and assigned medium severity, with 33 users CC'd indicating broad downstream interest across Red Hat products (Red Hat Bugzilla). Ubuntu, openSUSE, SUSE, Mageia, and Fedora all issued downstream security advisories and package updates shortly after the disclosure. IBM also issued an advisory noting potential impact on IBM Storage Defender - Resiliency Service (IBM Advisory). Community discussion was noted on oss-security mailing lists and security tracking platforms.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

python-django

Affected

sid

python-django: 3:4.2.30-1

Fixed

trixie

python-django

Affected

RHEL / CentOS

Unknown

Alpine

Fixed

edge

py3-django: 5.2.13-r0

Fixed

v3.23

py3-django: 4.2.30-r0

Fixed

SourceThis report was generated using AI

Related Django vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-15830MEDIUM6.9
  • Django logoDjango
  • py3-django
NoYesAug 04, 2026
CVE-2026-53877MEDIUM6.3
  • Django logoDjango
  • openstack-horizon-2026.1
NoYesJul 07, 2026
CVE-2026-53878MEDIUM5.3
  • Django logoDjango
  • python-django5
NoYesJul 07, 2026
CVE-2026-48588LOW2.3
  • Django logoDjango
  • authentik-2026.5
NoYesJul 07, 2026
CVE-2026-8404LOW2.3
  • Django logoDjango
  • python311-Django
NoYesJun 03, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management