CVE-2026-35187

pyLoad has SSRF in parse_urls API endpoint via unvalidated URL parameter

Published Apr 6, 2026 CVSS 3.1 · 7.7 High EPSS < 1% KEV · Not listed
Description
pyLoad is a free and open-source download manager written in Python. In 0.5.0b3.dev96 and earlier, the parse_urls API function in src/pyload/core/api/__init__.py fetches arbitrary URLs server-side via get_url(url) (pycurl) without any URL validation, protocol restriction, or IP blacklist. An authenticated user with ADD permission can make HTTP/HTTPS requests to internal network resources and cloud metadata endpoints, read local files via file:// protocol (pycurl reads the file server-side), interact with internal services via gopher:// and dict:// protocols, and enumerate file existence via error-based oracle (error 37 vs empty response).

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-2wvg-62qm-gj33 pyLoad: SSRF in parse_urls API endpoint via unvalidated URL parameter
History
Type Values Removed Values Added
First Time appeared Pyload-ng Project
Pyload-ng Project pyload-ng
CPEs cpe:2.3:a:pyload-ng_project:pyload-ng:*:*:*:*:*:python:*:*
Vendors & Products Pyload-ng Project
Pyload-ng Project pyload-ng
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Pyload
Pyload pyload
Vendors & Products Pyload
Pyload pyload
Type Values Removed Values Added
Description pyLoad is a free and open-source download manager written in Python. In 0.5.0b3.dev96 and earlier, the parse_urls API function in src/pyload/core/api/__init__.py fetches arbitrary URLs server-side via get_url(url) (pycurl) without any URL validation, protocol restriction, or IP blacklist. An authenticated user with ADD permission can make HTTP/HTTPS requests to internal network resources and cloud metadata endpoints, read local files via file:// protocol (pycurl reads the file server-side), interact with internal services via gopher:// and dict:// protocols, and enumerate file existence via error-based oracle (error 37 vs empty response).
Title pyLoad has SSRF in parse_urls API endpoint via unvalidated URL parameter
Weaknesses CWE-918
References
Metrics cvssV3_1

{'score': 7.7, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Apr 7, 2026, 2:03 PM
Reserved
Apr 1, 2026, 5:26 PM
Status
Analyzed
Published
Apr 6, 2026, 8:16 PM
Modified
Jul 24, 2026, 9:10 PM