CVE-2026-24486
Python-Multipart has Arbitrary File Write via Non-Default Configuration
Record summary
CVE-2026-24486 has a selected CVSS score of 8.6 (high); EIP currently links 1 catalogued exploit.
Description
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.
Exploitation context
Available material
- Catalogued exploits
- 1
CISA SSVC decision
CISA Coordinator · SSVC 2.0.3 · Evaluated Jan 27, 2026 · Source: CVE List
Affected products and versions
Showing 12 of 67| Product | Source | Version range | Status |
|---|---|---|---|
python-multipartBrowse Kludex / python-multipart | CVE List | < 0.0.22 | affected |
Default status: affected | CVE List | Version data not supplied | |
OpenShift LightspeedBrowse Red Hat / OpenShift Lightspeedopenshift-lightspeed/lightspeed-ocp-rag-rhel9Default status: unaffected | CVE List | Version data not supplied | |
OpenShift LightspeedBrowse Red Hat / OpenShift Lightspeedopenshift-lightspeed/lightspeed-service-api-rhel9Default status: affected | CVE List | Version data not supplied | |
Default status: affected | CVE List | Version data not supplied | |
Default status: affected | CVE List | Version data not supplied | |
Red Hat AI Inference Server 3.2Browse Red Hat / Red Hat AI Inference Server 3.2rhaiis/vllm-cuda-rhel9Default status: affected | CVE List | 1772160593 to < * | unaffected |
Red Hat AI Inference Server 3.2Browse Red Hat / Red Hat AI Inference Server 3.2rhaiis/vllm-rocm-rhel9Default status: affected | CVE List | 1772160625 to < * | unaffected |
Red Hat Ansible Automation Platform 2Browse Red Hat / Red Hat Ansible Automation Platform 2ansible-automation-platform-24/de-minimal-rhel8Default status: unaffected | CVE List | Version data not supplied | |
Red Hat Ansible Automation Platform 2Browse Red Hat / Red Hat Ansible Automation Platform 2ansible-automation-platform-24/de-minimal-rhel9Default status: unaffected | CVE List | Version data not supplied | |
Red Hat Ansible Automation Platform 2Browse Red Hat / Red Hat Ansible Automation Platform 2ansible-automation-platform-24/de-supported-rhel8Default status: unaffected | CVE List | Version data not supplied | |
Red Hat Ansible Automation Platform 2Browse Red Hat / Red Hat Ansible Automation Platform 2ansible-automation-platform-24/de-supported-rhel9Default status: unaffected | CVE List | Version data not supplied | |
Proofs of concept
1Catalogued exploits
ExploitDBPython-Multipart 0.0.22 - Path TraversalExploitDB exploitby jefersoncardoso.devExploit1 file
Analysis
Technical assessment
Python script that sends HTTP multipart POST requests with path traversal filenames to a target upload endpoint, attempting to write files to arbitrary filesystem locations.
Backdoor review
No backdoor observed in reviewed code
The PoC script is a straightforward path traversal exploit for CVE-2026-24486. It sends HTTP POST requests with malicious filenames to a target server. No backdoor, deceptive payload, persistence mechanism, or unrelated remote access is present. The script's behavior is limited to demonstrating the vulnerability.
Classification basis and observed behavior
Classification basis
The script actively sends crafted requests designed to write files outside the intended upload directory, which is the definition of an exploit. It does not merely check for the vulnerability; it attempts to exercise it.
exploits/python/webapps/52543.py:1exploits/python/webapps/52543.py:10-14exploits/python/webapps/52543.py:50-54Requirements
- Target server must be running python-multipart with UPLOAD_KEEP_FILENAME=True and UPLOAD_DIR configured.
exploits/python/webapps/52543.py:11-12 - Attacker must have network access to the target upload endpoint.
exploits/python/webapps/52543.py:22 - Local source file /etc/hosts must exist on the attacker machine.
exploits/python/webapps/52543.py:23-27
Observed behavior
- Reads a local file (/etc/hosts) and sends it as the content of a multipart file upload with a malicious filename containing path traversal sequences.
exploits/python/webapps/52543.py:23exploits/python/webapps/52543.py:50-54 - Iterates over a list of payload filenames including absolute paths, relative traversal sequences, null byte injection, and double slashes.
exploits/python/webapps/52543.py:30-39exploits/python/webapps/52543.py:46 - Prints HTTP response status and body for each attempt, and provides post-exploitation verification commands.
exploits/python/webapps/52543.py:56-60exploits/python/webapps/52543.py:68-70
Behaviors behind the backdoor verdict
Observables
- Target Url
- Payload withheldThe script targets a local server, which is typical for a PoC demonstration.
exploits/python/webapps/52543.py:22 - Payload List
- Payload withheldThe list of filenames used in the exploit, all designed to test path traversal. The filenames are part of the vulnerability demonstration.
exploits/python/webapps/52543.py:30-38 - Verification Command
- Payload withheldA post-exploit command printed for the user to manually verify the file writes in a Docker container. This is a manual verification step, not an automated backdoor action.
exploits/python/webapps/52543.py:70
What the analysis did not establish
- Only the exploit script is provided; the vulnerable server application is not included.
- The script's actual effectiveness cannot be verified without a running target instance.
- The script uses hardcoded target URL and source file; it may require modification for different environments.
- The review is limited to the provided text of the exploit script. No external libraries (e.g., 'requests') or the target server's behavior were analyzed.
This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.