CVE-2026-24486
Python-Multipart has Arbitrary File Write via Non-Default Configuration
Python-Multipart is a streaming multipart parser for Python. Prior to version 0.0.22, a Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename. Users should upgrade to version 0.0.22 to receive a patch or, as a workaround, avoid using UPLOAD_KEEP_FILENAME=True in project configurations.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- High
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
8.6
Python-Multipart has Arbitrary File Write via Non-Default Configuration
Python-Multipart is a streaming multipart parser for Python. Prior to version 0.0.22, a Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename. Users should upgrade to version 0.0.22 to receive a patch or, as a workaround, avoid using UPLOAD_KEEP_FILENAME=True in project configurations.
- Record
CVE-2026-24486- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L - Weakness
- CWE-22, CWE-22
- Updated
- 2026-11-02
EUVDEUVD-2026-4754
8.6
Python-Multipart is a streaming multipart parser for Python. Prior to version 0.0.22, a Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename. Users should upgrade to version 0.0.22 to receive a patch or, as a workaround, avoid using UPLOAD_KEEP_FILENAME=True in project configurations.
- Record
EUVD-2026-4754- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-wp53-j4wj-2cfg
8.6
Python-Multipart has Arbitrary File Write via Non-Default Configuration
Summary
A Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename.
Details
When UPLOAD_DIR is set and UPLOAD_KEEP_FILENAME is True, the library constructs the file path using os.path.join(file_dir, fname). Due to the behavior of os.path.join(), if the filename begins with a /, all preceding path components are discarded:
os.path.join("/upload/dir", "/etc/malicious") == "/etc/malicious"
This allows an attacker to bypass the intended upload directory and write files to arbitrary paths.
Affected Configuration
Projects are only affected if all of the following are true:
UPLOAD_DIRis setUPLOAD_KEEP_FILENAMEis set to True- The uploaded file exceeds
MAX_MEMORY_FILE_SIZE(triggering a flush to disk)
The default configuration is not vulnerable.
Impact
Arbitrary file write to attacker-controlled paths on the filesystem.
Mitigation
Upgrade to version 0.0.22, or avoid using UPLOAD_KEEP_FILENAME=True in project configurations.
- Record
GHSA-wp53-j4wj-2cfg- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L - Weakness
- CWE-22
- Updated
- 2026-11-02
NVD
8.6
Python-Multipart is a streaming multipart parser for Python. Prior to version 0.0.22, a Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename. Users should upgrade to version 0.0.22 to receive a patch or, as a workaround, avoid using UPLOAD_KEEP_FILENAME=True in project configurations.
- Record
CVE-2026-24486- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSV
8.6
Python-Multipart has Arbitrary File Write via Non-Default Configuration
Python-Multipart is a streaming multipart parser for Python. Prior to version 0.0.22, a Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename. Users should upgrade to version 0.0.22 to receive a patch or, as a workaround, avoid using UPLOAD_KEEP_FILENAME=True in project configurations.
- Record
CVE-2026-24486- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-24486
7.5
Python-Multipart is a streaming multipart parser for Python. Prior to version 0.0.22, a Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename. Users should upgrade to version 0.0.22 to receive a patch or, as a workaround, avoid using UPLOAD_KEEP_FILENAME=True in project configurations.
- Record
DEBIAN-CVE-2026-24486- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Updated
- 2026-11-02
Show 10 moreShow less
OSVGHSA-wp53-j4wj-2cfg
8.6
Python-Multipart has Arbitrary File Write via Non-Default Configuration
Summary
A Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename.
Details
When UPLOAD_DIR is set and UPLOAD_KEEP_FILENAME is True, the library constructs the file path using os.path.join(file_dir, fname). Due to the behavior of os.path.join(), if the filename begins with a /, all preceding path components are discarded:
os.path.join("/upload/dir", "/etc/malicious") == "/etc/malicious"
This allows an attacker to bypass the intended upload directory and write files to arbitrary paths.
Affected Configuration
Projects are only affected if all of the following are true:
UPLOAD_DIRis setUPLOAD_KEEP_FILENAMEis set to True- The uploaded file exceeds
MAX_MEMORY_FILE_SIZE(triggering a flush to disk)
The default configuration is not vulnerable.
Impact
Arbitrary file write to attacker-controlled paths on the filesystem.
Mitigation
Upgrade to version 0.0.22, or avoid using UPLOAD_KEEP_FILENAME=True in project configurations.
- Record
GHSA-wp53-j4wj-2cfg- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVOESA-2026-2276
7.5
python-python-multipart security update
A streaming multipart parser for Python
Security Fix(es):
Python-Multipart is a streaming multipart parser for Python. Prior to version 0.0.22, a Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename. Users should upgrade to version 0.0.22 to receive a patch or, as a workaround, avoid using UPLOAD_KEEP_FILENAME=True in project configurations.(CVE-2026-24486)
- Record
OESA-2026-2276- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Updated
- 2026-11-02
OSVPYSEC-2026-1852
8.6
Python-Multipart has Arbitrary File Write via Non-Default Configuration
Summary
A Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename.
Details
When UPLOAD_DIR is set and UPLOAD_KEEP_FILENAME is True, the library constructs the file path using os.path.join(file_dir, fname). Due to the behavior of os.path.join(), if the filename begins with a /, all preceding path components are discarded:
os.path.join("/upload/dir", "/etc/malicious") == "/etc/malicious"
This allows an attacker to bypass the intended upload directory and write files to arbitrary paths.
Affected Configuration
Projects are only affected if all of the following are true:
UPLOAD_DIRis setUPLOAD_KEEP_FILENAMEis set to True- The uploaded file exceeds
MAX_MEMORY_FILE_SIZE(triggering a flush to disk)
The default configuration is not vulnerable.
Impact
Arbitrary file write to attacker-controlled paths on the filesystem.
Mitigation
Upgrade to version 0.0.22, or avoid using UPLOAD_KEEP_FILENAME=True in project configurations.
- Record
PYSEC-2026-1852- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L - Updated
- 2026-11-02
OSVROOT-APP-PYPI-CVE-2026-24486
8.6
CVE-2026-24486 in python-multipart - Patched by Root
Root has patched CVE-2026-24486 in the python-multipart package for Root:PyPI. Multiple fixed versions available.
- Record
ROOT-APP-PYPI-CVE-2026-24486- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-24486
8.6
Python-Multipart is a streaming multipart parser for Python. Prior to version 0.0.22, a Path Traversal vulnerability exists when using non-default configuration options UPLOAD_DIR and UPLOAD_KEEP_FILENAME=True. An attacker can write uploaded files to arbitrary locations on the filesystem by crafting a malicious filename. Users should upgrade to version 0.0.22 to receive a patch or, as a workaround, avoid using UPLOAD_KEEP_FILENAME=True in project configurations.
- Record
UBUNTU-CVE-2026-24486- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Updated
- 2026-11-02
OSVCLSA-2026-1786503821 No score
TuxCare security update for python-multipart (1 CVE)
TuxCare rebuilt python-multipart to address 1 CVE. Fixed in 0.0.6.post7+tuxcare.
- Record
CLSA-2026-1786503821- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:20125-1 No score
Security update for python-python-multipart
This update for python-python-multipart fixes the following issues:
- CVE-2026-24486: Fixed non-default configuration options can lead to path traversal (bsc#1257301).
- Record
openSUSE-SU-2026:20125-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:0307-1 No score
Security update for python-python-multipart
This update for python-python-multipart fixes the following issues:
- CVE-2026-24486: Fixed non-default configuration options can lead to path traversal (bsc#1257301).
- Record
SUSE-SU-2026:0307-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:20188-1 No score
Security update for python-python-multipart
This update for python-python-multipart fixes the following issues:
- CVE-2026-24486: Fixed non-default configuration options can lead to path traversal (bsc#1257301).
- Record
SUSE-SU-2026:20188-1- Updated
- 2026-11-02
OSVUSN-8027-1 No score
python-multipart vulnerabilities
It was discovered that Python-Multipart incorrectly handled certain regular expressions. An attacker could possibly use this issue to cause Python-Multipart to consume excessive resources, leading to a regular expression denial of service. This issue only affected Ubuntu 22.04 LTS. (CVE-2024-24762)
It was discovered that Python-Multipart did not properly sanitize line breaks during user input. An attacker could use this issue to send arbitrary input, thus preventing other requests from being processed, resulting in a denial of service. This issue was only fixed in Ubuntu 24.04 LTS. (CVE-2024-53981)
It was discovered that Python-Multipart was vulnerable to path traversal attacks. An attacker could possibly craft and upload files outside the target directory, resulting in remote code execution. (CVE-2026-24486)
- Record
USN-8027-1- Updated
- 2026-11-02
Affected products
- fastapiexpert python-multipart
- kludex python-multipart
- red hat lightspeed core
- red hat openshift lightspeed
- red hat ai inference server
- red hat ai inference server 3.2
- red hat ansible automation platform 2
- red hat ansible automation platform 2.6
- red hat enterprise linux ai (rhel ai) 3
- red hat openshift ai (rhoai)
- red hat openshift ai 2.25
- red hat openshift ai 3.3
Show 3 moreShow less
Affected packages
| Package | Affected | Fixed |
|---|---|---|
python-multipartPyPI |
before 0.0.22 | 0.0.22 |
python-multipartTuxCare:PyPI |
0.0.6 up to 0.0.6.post7+tuxcare, plus listed versions 0.0.6.post1+tuxcare0.0.6.post2+tuxcare0.0.6.post3+tuxcare0.0.6.post4+tuxcare0.0.6.post5+tuxcare0.0.6.post6+tuxcare |
0.0.6.post7+tuxcare |
python-multipartDebian:12 |
All versions, plus listed versions 0.0.17-10.0.17-20.0.17-30.0.17-40.0.17-5 Show 9 moreShow less0.0.20-10.0.20-1.10.0.20-1.1~deb13u10.0.22-10.0.26-10.0.32-10.0.5-30.0.6-10.0.9-1 |
None known |
python-multipartDebian:13 |
before 0.0.20-1.1~deb13u1, plus listed versions 0.0.20-1 |
0.0.20-1.1~deb13u1 |
python-multipartDebian:14 |
before 0.0.20-1.1, plus listed versions 0.0.20-10.0.20-1.1~deb13u1 |
0.0.20-1.1 |
python-multipartPyPI |
before 0.0.22, plus listed versions 0.0.10.0.100.0.110.0.120.0.13 Show 16 moreShow less0.0.140.0.150.0.160.0.170.0.180.0.190.0.20.0.200.0.210.0.30.0.40.0.50.0.60.0.70.0.80.0.9 |
0.0.22 |
python-python-multipartopenEuler:24.03-LTS-SP3 |
before 0.0.22-1.oe2403sp3 | 0.0.22-1.oe2403sp3 |
python-multipartRoot:PyPI |
before 0.0.5+aikido.1 | 0.0.5+aikido.1 |
python-python-multipartopenSUSE:Leap 15.6 |
before 0.0.9-150600.3.6.1 | 0.0.9-150600.3.6.1 |
python-python-multipartSUSE:Linux Enterprise Server 16.0 |
before 0.0.20-160000.3.1 | 0.0.20-160000.3.1 |
Show 9 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python-python-multipartSUSE:Linux Enterprise Server for SAP applications 16.0 |
before 0.0.20-160000.3.1 | 0.0.20-160000.3.1 |
python-multipartUbuntu:Pro:22.04:LTS |
before 0.0.5-2ubuntu0.1~esm1, plus listed versions 0.0.5-2 |
0.0.5-2ubuntu0.1~esm1 |
python-multipartUbuntu:Pro:24.04:LTS |
before 0.0.9-1ubuntu0.1~esm1, plus listed versions 0.0.5-30.0.6-10.0.9-1 |
0.0.9-1ubuntu0.1~esm1 |
python-multipartUbuntu:25.10 |
All versions, plus listed versions 0.0.20-1 |
None known |
python-multipartUbuntu:26.10 |
All versions, plus listed versions 0.0.20-1.10.0.26-10.0.32-1 |
None known |
python-multipartUbuntu:26.04:LTS |
All versions, plus listed versions 0.0.20-10.0.20-1.1 |
None known |
python-multipartUbuntu:Pro:22.04:LTS From an advisory covering 3 CVEs |
before 0.0.5-2ubuntu0.1~esm1, plus listed versions 0.0.5-2 |
0.0.5-2ubuntu0.1~esm1 |
python-multipartUbuntu:Pro:24.04:LTS From an advisory covering 3 CVEs |
before 0.0.9-1ubuntu0.1~esm1, plus listed versions 0.0.5-30.0.6-10.0.9-1 |
0.0.9-1ubuntu0.1~esm1 |
python-python-multipartopenSUSE:Leap 16.0 |
before 0.0.20-160000.3.1 | 0.0.20-160000.3.1 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| Exploit-DB | Python-Multipart 0.0.22 - Path Traversal | 2026-04-30 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, Exploit-DB, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-24486 is a high vulnerability (CVSS 8.6) in Fastapiexpert Python-multipart, published January 26, 2026. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 2.21%, the 82nd percentile. Fixed in python-multipart 0.0.22.
References
github.com/Kludex/python-multipart/security/advisories/GHSA-wp53-j4wj-2cfg
github.com/Kludex/python-multipart/commit/9433f4bbc9652bdde82bbe380984e32f8cfc89c4
github.com/Kludex/python-multipart/releases/tag/0.0.22
access.redhat.com/security/cve/CVE-2026-24486
bugzilla.redhat.com/show_bug.cgi?id=2433132
security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-24486.json
Show 27 moreShow less
access.redhat.com/errata/RHSA-2026:3461
access.redhat.com/errata/RHSA-2026:3462
access.redhat.com/errata/RHSA-2026:3960
access.redhat.com/errata/RHSA-2026:10184
access.redhat.com/errata/RHSA-2026:42644
access.redhat.com/errata/RHSA-2026:3782
access.redhat.com/errata/RHSA-2026:19712
access.redhat.com/errata/RHSA-2026:3713
access.redhat.com/errata/RHSA-2026:44696
access.redhat.com/errata/RHSA-2026:1504
access.redhat.com/errata/RHSA-2026:51357
nvd.nist.gov/vuln/detail/CVE-2026-24486
github.com/advisories/GHSA-wp53-j4wj-2cfg
github.com/CVEProject/cvelistV5/tree/main/cves/2026/24xxx/CVE-2026-24486.json
security-tracker.debian.org/tracker/CVE-2026-24486
github.com/Kludex/python-multipart
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-2276
pypi.org/project/python-multipart
suse.com/support/update/announcement/2026/suse-su-20260307-1
bugzilla.suse.com/1257301
suse.com/security/cve/CVE-2026-24486
suse.com/support/update/announcement/2026/suse-su-202620188-1
ubuntu.com/security/CVE-2026-24486
cve.org/CVERecord?id=CVE-2026-24486
ubuntu.com/security/notices/USN-8027-1
ubuntu.com/security/CVE-2024-24762
ubuntu.com/security/CVE-2024-53981