CVE-2023-31047 in the critical feed json
Django bypasses validation when using one form field to upload multiple files
published 2023-05-07 3 y ago modified 2026-09-08 2 mo ago also BIT-django-2023-31047 , EUVD-2023-0071 , GHSA-r3xc-prgr-mg9p , PYSEC-2023-61
- cvss
- 9.8
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 1.4%
- EPSS 1.4% chance of exploitation in 30 days, percentile 72%
- public exploits
- 0
- none known
Summary
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 last uploaded file was validated). However, Django's "Uploading multiple files" documentation suggested otherwise.
Patch / fix
- pypi django 3.2.19, 4.1.9, 4.2.1
- bitnami django 3.2.19, 4.1.9
- djangoproject django 3.2.19, 4.1.9
- python-django Debian 14, Debian 13, Debian 12 3:3.2.19-1
debian advisories DEBIAN-CVE-2023-31047
- python-django Ubuntu 18.04 LTS 1:1.11.11-1ubuntu1.21
- python-django Ubuntu 20.04 LTS 2:2.2.12-1ubuntu0.17
- python-django Ubuntu 22.04 LTS 2:3.2.12-2ubuntu1.6
- python-django Ubuntu Pro 14.04 LTS 1.6.11-0ubuntu1.3+esm6
- python-django Ubuntu Pro 16.04 LTS 1.8.7-1ubuntu5.15+esm7
ubuntu advisories UBUNTU-CVE-2023-31047
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- foreman satellite utils 6.14, satellite capsule 6.14, satellite 6.14 3.7.0.9-1.el8sat
- foreman-cli satellite utils 6.14, satellite 6.14 3.7.0.9-1.el8sat
- foreman-ec2 satellite 6.14 3.7.0.9-1.el8sat
- rubygem-git satellite 6.14, satellite 6.13 1.18.0-1.el8sat
- puppet-agent satellite capsule 6.14, satellite capsule 6.13, satellite 6.14 +1 more 7.26.0-3.el8sat
- puppetserver satellite capsule 6.14, satellite 6.14 7.11.0-1.el8sat
- rubygem-rack satellite capsule 6.14, satellite 6.14 2.2.7-1.el8sat
- foreman-ovirt satellite 6.14 3.7.0.9-1.el8sat
red hat advisories RHSA-2023:6818RHSA-2023:5931RHSA-2023:4591
- python-Django openSUSE Leap 15.5 2.0.7-150000.1.11.1
suse advisories SUSE-SU-2023:2839-1
- python-Django5 openSUSE Tumbleweed 5.2.16-1.1
- python-Django openSUSE Tumbleweed 5.2.16-1.1
- python-Django4 openSUSE Tumbleweed 4.2.30-4.1
- python-Django6 openSUSE Tumbleweed 6.0-1.1
- python-Django4 openSUSE Tumbleweed 4.2.14-1.1
- python-Django openSUSE Tumbleweed 4.2.1-1.1
opensuse advisories openSUSE-SU-2026:11270-1openSUSE-SU-2026:11248-1openSUSE-SU-2026:11235-1openSUSE-SU-2026:10005-1openSUSE-SU-2024:14208-1openSUSE-SU-2024:12943-1
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-2023-31047 updated cvss 6.5
python-django: Potential bypass of validation when uploading multiple files using one form field
-
Red Hat Satellite 6.13 for RHEL 8 python-django 3.2.21-1.el8pc, python39-django 3.2.21-1.el8pcfixed: vendor fix RHSA-2023:5931
-
Red Hat Satellite 6.14 for RHEL 8 python-django 3.2.21-1.el8pc, python39-django 3.2.21-1.el8pcfixed: vendor fix RHSA-2023:6818
-
Red Hat RHUI 4 for RHEL 8 python-django 3.2.19-1.0.1.el8ui, python39-django 3.2.19-1.0.1.el8uifixed: vendor fix RHSA-2023:4591
-
Red Hat Ansible Automation Platform 2 python-django Red Hat Ceph Storage 3 python-django, python-django-bash-completion Red Hat OpenStack Platform 13 (Queens) python-django, python2-django, python-django-bash-completion Red Hat OpenStack Platform 16.1 python-django20, python3-django20, python-django20-bash-completion Red Hat OpenStack Platform 16.2 python-django20, python3-django20, python-django20-bash-completion Red Hat OpenStack Platform 17.0 python3-djangonot affected: vulnerable code not present
+4 more productsfewer
Red Hat Satellite 6.13 for RHEL 8 foreman 3.5.1.23-1.el8sat, satellite 6.13.5-1.el8sat, rubygem-git 1.18.0-1.el8sat, puppet-agent 7.26.0-3.el8sat, foreman-cli 3.5.1.23-1.el8sat, foreman-ec2 3.5.1.23-1.el8sat, +24 more Red Hat Satellite 6.14 for RHEL 8 cjson 1.7.14-5.el8sat, katello 4.9.0-1.el8sat, libsolv 0.7.22-4.el8pc, libcomps 0.1.18-4.el8pc, python-idna 3.3-2.el8pc, candlepin 4.3.1-1.el8sat, +667 more Red Hat Storage 3 python-django, python2-django, python-django-bash-completion Red Hat RHUI 4 for RHEL 8 rhui-tools 4.5.0.5-1.el8ui, rhui-installer 4.5.0.1-1.el8ui, rhui-tools-libs 4.5.0.5-1.el8ui, python-sqlparse 0.4.4-1.0.1.el8ui, python39-sqlparse 0.4.4-1.0.1.el8ui
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
- yes
- Technical impact
- total
- Assessed
- 21 mo ago
Exploit prediction
1.39% chance of exploitation in the next 30 days, higher than 72% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CISA ADP | 3.1 | 9.8 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| GitHub | 3.1 | 9.8 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| NVD | 3.1 | 9.8 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | 3.1 | 9.8 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| OSV | 3.1 | 9.8 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | django | >=3.2a1, <3.2.19 >=4.0a1, <4.1.9 >=4.2a1, <4.2.1 >=3.2, <3.2.19 >=4.0, <4.1.9 >=4.2, <4.2.1 |
3.2.19 4.1.9 4.2.1 |
| bitnami | django | >=3.2.0, <3.2.19 >=4.0.0, <4.1.9 >=4.2.0, <=4.2.0 |
3.2.19 4.1.9 |
Classification
- Weakness
- Technology feeds
References
-
github.com
/django/django/commit/21b1b1fc03e5f9e9f8c977ee6e35618dd3b353dd
web
-
github.com
/django/django/commit/e7c3a2ccc3a562328600be05068ed9149e12ce64
web
-
github.com
/django/django/commit/eed53d0011622e70b936e203005f0e6f4ac48965
web
-
lists.fedoraproject.org
/archives/list/package-announce%40lists.fedoraproject.org/message/A45VKTUVQ2BN6D5ZLZGCM774R6QGFOHW/
vendor-advisory, web
-
lists.fedoraproject.org
/archives/list/package-announce%40lists.fedoraproject.org/message/DNEHD6N435OE2XUFGDAAVAXSYWLCUBFD/
vendor-advisory, web
-
docs.djangoproject.com
/en/4.2/releases/security/
vendor-advisory, advisory
-
djangoproject.com
/weblog/2023/may/03/security-releases/
vendor-advisory, advisory
-
groups.google.com
/forum/#%21forum/django-announce
web
-
security.netapp.com
/advisory/ntap-20230609-0008/
web
-
nvd.nist.gov
/vuln/detail/CVE-2023-31047
advisory, web
-
docs.djangoproject.com
/en/4.2/releases/security
web
-
github.com
/django/django
package
-
github.com
/pypa/advisory-database/tree/main/vulns/django/PYSEC-2023-61.yaml
web
-
groups.google.com
/forum/#!forum/django-announce
web, article
-
lists.fedoraproject.org
/archives/list/package-announce@lists.fedoraproject.org/message/A45VKTUVQ2BN6D5ZLZGCM774R6QGFOHW
web
-
lists.fedoraproject.org
/archives/list/package-announce@lists.fedoraproject.org/message/DNEHD6N435OE2XUFGDAAVAXSYWLCUBFD
web
-
security.netapp.com
/advisory/ntap-20230609-0008
web
-
djangoproject.com
/weblog/2023/may/03/security-releases
web
-
lists.fedoraproject.org
/archives/list/package-announce@lists.fedoraproject.org/message/A45VKTUVQ2BN6D5ZLZGCM774R6QGFOHW/
report, web
-
github.com
/advisories/GHSA-r3xc-prgr-mg9p
advisory
Sources
- CVE List CVE-2023-31047
- GitHub Advisory GHSA-r3xc-prgr-mg9p
- NVD CVE-2023-31047
- OSV BIT-django-2023-31047
- OSV PYSEC-2023-61
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.