Security Resilience

CVE-2023-31047

Access Control in Djangoproject Django 3.2 – 3.2.19

Published
07 May 2023
Modified
29 January 2025
Patch / advisory
CVSS Score v3.1 9.8
Click a component to see what it means
Raw vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
EPSS Score 0.014 72th percentile
Risk Priority 74 floored blend · peak EPSS

CVSS and EPSS are reproduced from their sources (NVD, FIRST EPSS). Risk Priority is our own derived reading, not an NVD score.

Summary

CVE-2023-31047 is a critical-severity Improper Input Validation (CWE-20) vulnerability in Djangoproject Django. Its CVSS base score is 9.8 (Critical).

Operationally, ranked in the top 28% of CVEs by exploit likelihood; it is not currently listed in the CISA KEV catalog.

OWASP Top 10 for Web (2025)

EU & UK References

Vulnerability Data

In Django 3.2 before 3.2.19, 4.x before 4.1.9, and 4.2 before 4.2.1, it was possible to bypass validation when using one form field to upload multiple files. This multiple upload has never been supported by forms.FileField or forms.ImageField (only the…

more

last uploaded file was validated). However, Django's "Uploading multiple files" documentation suggested otherwise.

CWE(s)

Related Threats

CVEs Like This One

CVE-2024-25641Same product: Fedoraproject Fedora
CVE-2023-39456Same product: Fedoraproject Fedora
CVE-2022-3075Same product: Fedoraproject Fedora
CVE-2023-43090Same product: Fedoraproject Fedora
CVE-2023-6879Same product: Fedoraproject Fedora
CVE-2023-39357Same product: Fedoraproject Fedora
CVE-2021-39226Same product: Fedoraproject Fedora
CVE-2021-3781Same product: Fedoraproject Fedora
CVE-2022-4223Same product: Fedoraproject Fedora
CVE-2024-24549Same product: Fedoraproject Fedora

Affected Assets

djangoproject
django
4.2 · 3.2 — 3.2.19 · 4.0 — 4.1.9
fedoraproject
fedora
38

Mitigating Controls

Likely Mitigating Controls AI

Per-CVE control mapping for this CVE has not run yet; the list below is derived from the weakness types (CWEs) cited in the NVD entry.

addresses: CWE-862

Requiring an access control policy ensures authorization checks are defined and applied for critical functions.

addresses: CWE-862

Reviews of access controls detect missing authorization checks on critical functions or resources.

addresses: CWE-862

Documenting permitted unauthenticated actions prevents missing authorization by making all exceptions explicit and subject to organizational review.

addresses: CWE-862

Requiring attribute association with information prevents authorization from being performed without necessary security or privacy context.

addresses: CWE-862

Mandating authorization prior to allowing remote connections addresses missing authorization for remote access.

addresses: CWE-862

Mandating authorization before wireless connections are allowed prevents missing authorization for wireless access.

addresses: CWE-862

The control requires authorization before allowing mobile device connections, directly mitigating missing authorization for system access.

addresses: CWE-862

Requiring approvals for account creation and specifying authorizations ensures authorization is not missing for system access.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

blocks

Requiring formal authorization of every access request before rights are granted ensures that checks for required permissions are performed, preventing missing authorization checks from being introduced.

blocks

A.5.18's provisioning, review, revocation and activation steps (incl. owner approval, SoD, timely removal on role/termination change) directly stop exploitation of missing authorization checks by ensuring no actor receives or retains rights to resources they should not access; the bounded remainder is that it cannot stop missing-authorization defects inside the enforcement mechanism itself once rights have been granted (e.g. flawed code that ignores the rights table).

finds

By requiring competent outsiders to verify that every function enforces the need-to-know principle, the control lowers the likelihood that missing authorization checks persist undetected.

blocks

A.5.8 integrates risk assessment, requirements elicitation and governance into the project lifecycle so that authorization needs can be identified and specified; it does not itself perform or enforce authorization checks, so the missing-authorization weakness can still be present and exploitable.

blocks

A.8.25 mandates security requirements, secure coding guidelines, checkpoints, testing (incl. code scans) and developer training in the SDLC, which reaches a slice of input validation defects but leaves the majority (incomplete enforcement, second-order inputs, parser differentials, post-validation canonicalization) unaddressed as in the SA-3 and A.8.28 anchors.

blocks

Mandating input controls that include integrity checks and input validation ensures that untrusted data is examined before use, blocking the root cause of many injection and malformed-data weaknesses.

Hardening callouts derived

DISA STIG baselines are authored against specific weaknesses. Where this CVE cites a broad weakness class, the mapping is not asserted at that abstraction (owner ruling, 2026-09-25: grade only at Base and below), so no rule is shown here rather than a rule shown against the wrong grain.

  • No fine-grained STIG row for CWE-20, a class-level weakness, and none of its children carries one either.
  • No fine-grained STIG row for CWE-862, a class-level weakness, and none of its children carries one either.

References