Skip to main content

pyLoad CVE-2026-48484

| EUVDEUVD-2026-95910 MEDIUM
Improper Input Validation (CWE-20)
2026-10-09 GitHub_M GHSA-vq8p-m3wm-gv5f
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain valid API key or login
  2. Exploit
    Craft multipart POST to /api/rpc with multi-GB file
  3. Execution
    Server reads entire file into memory via file.read()
  4. Impact
    Memory exhausted, OOM killer terminates pyLoad process

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

Requires an authenticated session or a valid X-API-Key to reach the /api/rpc endpoint, and specifically targets RPC functions that accept multipart/form-data file uploads (e.g. check_online_status_container). The vulnerable code path exists in default configurations of pyLoad prior to 0.5.0b3.dev101, since no MAX_CONTENT_LENGTH was set. Exploitation is LIMITED by the authentication requirement (PR:L) and can be mitigated at the perimeter by a reverse-proxy body-size cap (e.g. Nginx client_max_body_size) even on unpatched versions; the fix enforces a 16MB server-side limit.

Impact

This is a moderate-severity availability-only flaw. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H, base 6.5) is internally consistent with the description: network-reachable, low attack complexity, no user interaction, and impact limited to availability (process termination via OOM) with no confidentiality or integrity loss. The PR:L metric is corroborated by the GHSA reproduction steps, which require a valid login session or API key - so this is an authenticated DoS, not an unauthenticated one. No EPSS score, SSVC decision, or CISA KEV status was supplied in the input, so exploitation probability and automatability cannot be quantified from the data; the absence of KEV/EPSS is a data gap, not evidence of low risk. A detailed, working proof-of-concept (curl command plus a 10GB truncate file) is published in the vendor's own GHSA advisory, so publicly available exploit code exists. Net: this is a real but bounded issue - trivially reproducible against any authenticated attacker, but it only crashes the service and requires the attacker to already hold valid credentials or an API key, which meaningfully narrows the threat population to insiders or compromised accounts rather than anonymous internet scanners.

Exploit ScenarioDerived

An attacker who has obtained a valid pyLoad login session or API key sends a multipart/form-data POST to /api/rpc referencing a file-accepting function (e.g. check_online_status_container) with a multi-gigabyte file attached. The server calls file.read() on the entire upload with no size cap, exhausting RAM until the kernel OOM-killer terminates the pyLoad process, interrupting all active downloads. A complete working PoC is published in the vendor GHSA advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 09, 2026

Denial of service in pyLoad (pyload-ng) prior to 0.5.0b3.dev101 allows an authenticated API user to crash the server by uploading an oversized file to the /api/rpc endpoint. The rpc handler in api_blueprint.py reads the entire multipart/form-data payload into memory with file.read() before any size check is applied, so a multi-gigabyte upload exhausts available RAM and the process is killed by the kernel OOM killer, interrupting all active downloads and tasks. Exploitation requires an authenticated session or a valid X-API-Key (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H, 6.5), and no public exploit was identified at time of analysis, though the upstream advisory documents full reproduction steps; the flaw is rated moderate severity because it affects availability only and can be contained at the reverse-proxy layer on unpatched hosts.

RemediationAI

Vendor-released patch: upgrade pyload-ng to 0.5.0b3.dev101 or later, which introduces MAX_CONTENT_LENGTH = 16 MB in src/pyload/webui/app/config.py and rejects oversized uploads before they are read into memory (see the advisory at https://github.com/pyload/pyload/security/advisories/GHSA-vq8p-m3wm-gv5f and the fix commit at https://github.com/pyload/pyload/commit/461cd66f30fa9e96453fb4d8c5c47467e452363c). If an immediate upgrade is not possible, the advisory's own recommended compensating control is to enforce a request body limit at the reverse proxy - for Nginx set client_max_body_size to a conservative value such as 16m - which blocks the oversized upload at the perimeter; the trade-off is that the same limit also rejects legitimately large container or file uploads through the API, so operators handling large DLC/container files must tune the value upward and accept a correspondingly larger memory exposure on the still-unpatched backend. Additionally, restrict reachability of /api/rpc by binding the web UI to localhost or a management network and by requiring strong, rotated API keys, since exploitation needs either a login session or a valid X-API-Key (CVSS PR:L). Monitor process RSS and kernel OOM-killer logs for pyload to detect attempted or accidental memory-exhaustion events until the patched release is deployed.

Affected VersionsENISA

pyload < 0.5.0b3.dev101

Affected Packages

pypi pyload-ng fix: 0.5.0b3.dev101
euvd pyload fix: 0.5.0b3.dev101

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in pypi, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

pyLoad is a Python download manager whose web interface is built on Flask blueprints. The vulnerable code path sits in src/pyload/webui/app/blueprints/api_blueprint.py around line 73, in the rpc function that dispatches API calls: when a request arrives as multipart/form-data (for example an API call such as check_online_status_container that accepts a container file), the handler performs an unconditional file.read() to pull the whole upload into process memory before handing it to the underlying function. Because the application was never configured with Flask's MAX_CONTENT_LENGTH, there is no upper bound on the buffered body, and the root-cause class is CWE-20 (Improper Input Validation) - the code fails to validate the size of untrusted input before allocating memory for it. The affected package is pip/pyload-ng before 0.5.0b3.dev101, mapping to CPE cpe:2.3:a:pyload:pyload:*:*:*:*:*:*:*:*; the fix commit 461cd66f30fa9e96453fb4d8c5c47467e452363c adds MAX_CONTENT_LENGTH = 16 * 1024 * 1024 (16 MB) to BaseConfig in src/pyload/webui/app/config.py, restoring a server-side ceiling on request bodies.

Know when Pyload gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Network endpoint reachable with trivial oversized upload (AV:N/AC:L), but a valid API key/login is required (PR:L); impact is availability-only process crash (C:N/I:N/A:H).

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
Patch available
Oct 09, 2026 - 18:02 EUVD

DescriptionCVE.org

pyLoad is a free and open-source download manager written in Python. Prior to 0.5.0b3.dev101, the API rpc function in api_blueprint.py handles multipart/form-data uploads by reading the whole content of the uploaded file into memory with file.read(). This occurs before the data is sent to the underlying function. Since there is no size limit set at this point, a large file upload can exhaust the server's available memory which led to process termination. Version 0.5.0b3.dev101 contains a patch.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 pypi packages depend on pyload-ng (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 0.5.0b3.dev101.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Low
niche open-source hobbyist download manager, no enterprise footprint
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.

More in Pyload

View all
CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

CVE-2023-0297 CRITICAL POC
9.8 Jan 14

Code Injection in GitHub repository pyload/pyload prior to 0.5.0b3.dev31. Rated critical severity (CVSS 9.8), this vulne

CVE-2023-0435 CRITICAL POC
9.8 Jan 22

Excessive Attack Surface in GitHub repository pyload/pyload prior to 0.5.0b3.dev41. Rated critical severity (CVSS 9.8),

CVE-2023-47890 HIGH POC
8.8 Jan 08

pyLoad 0.5.0 is vulnerable to Unrestricted File Upload. Rated high severity (CVSS 8.8), this vulnerability is remotely e

CVE-2023-0434 HIGH POC
7.5 Jan 22

Improper Input Validation in GitHub repository pyload/pyload prior to 0.5.0b3.dev40. Rated high severity (CVSS 7.5), thi

CVE-2023-0509 HIGH POC
7.4 Jan 26

Improper Certificate Validation in GitHub repository pyload/pyload prior to 0.5.0b3.dev44. Rated high severity (CVSS 7.4

CVE-2024-32880 HIGH POC
7.2 Apr 26

pyload is an open-source Download Manager written in pure Python. Rated high severity (CVSS 7.2), this vulnerability is

CVE-2023-0227 MEDIUM POC
6.5 Jan 12

Insufficient Session Expiration in GitHub repository pyload/pyload prior to 0.5.0b3.dev36. Rated medium severity (CVSS 6

CVE-2024-1240 MEDIUM POC
6.1 Nov 15

An open redirection vulnerability exists in pyload/pyload version 0.5.0. Rated medium severity (CVSS 6.1), this vulnerab

CVE-2024-24808 MEDIUM POC
6.1 Feb 06

pyLoad is an open-source Download Manager written in pure Python. Rated medium severity (CVSS 6.1), this vulnerability i

CVE-2023-0488 MEDIUM POC
5.4 Jan 26

Cross-site Scripting (XSS) - Stored in GitHub repository pyload/pyload prior to 0.5.0b3.dev42. Rated medium severity (CV

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy