Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-33992

CVE-2026-33992: Pyload Download Manager SSRF Vulnerability

CVE-2026-33992 is a Server-Side Request Forgery flaw in Pyload download manager that lets authenticated attackers access internal networks and cloud metadata. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2026-33992 Overview

A critical Server-Side Request Forgery (SSRF) vulnerability has been discovered in pyLoad, a popular free and open-source download manager written in Python. Prior to version 0.5.0b3.dev97, pyLoad's download engine accepts arbitrary URLs without proper validation, enabling authenticated attackers to access internal network services and exfiltrate sensitive cloud provider metadata.

Critical Impact

An authenticated attacker can exploit this vulnerability to access internal network services and exfiltrate sensitive cloud provider metadata, including droplet IDs, network configurations, region information, authentication keys, and SSH keys configured in user-data/cloud-init on platforms like DigitalOcean.

Affected Products

  • pyLoad versions prior to 0.5.0b3.dev97
  • pyLoad 0.5.0 and earlier beta releases
  • Self-hosted pyLoad instances exposed to authenticated users

Discovery Timeline

  • 2026-03-27 - CVE-2026-33992 published to NVD
  • 2026-03-31 - Last updated in NVD database

Technical Details for CVE-2026-33992

Vulnerability Analysis

This SSRF vulnerability (CWE-918) exists in pyLoad's download engine, which fails to validate URLs before processing download requests. The download functionality accepts arbitrary URLs from authenticated users without checking whether the target is an internal or external resource. This allows attackers to craft requests targeting internal services, cloud metadata endpoints, and other resources that should not be accessible from the application.

On cloud infrastructure such as DigitalOcean droplets, attackers can target the metadata service endpoint (typically 169.254.169.254) to retrieve sensitive infrastructure information. The exposed data includes droplet identification, network configuration details, geographic region, authentication credentials, and SSH keys provisioned through user-data or cloud-init mechanisms.

Root Cause

The vulnerability stems from the lack of URL validation in pyLoad's downloader component. The application did not implement checks to verify whether target URLs resolve to global/public IP addresses versus internal or private ranges. Without these safeguards, the download engine would attempt to fetch any URL provided by an authenticated user, including those pointing to internal network resources.

Attack Vector

The attack requires authenticated access to the pyLoad instance. Once authenticated, an attacker can submit download requests with URLs targeting internal services or cloud metadata endpoints. The download engine processes these requests without validation, effectively acting as a proxy for the attacker to reach otherwise inaccessible resources. The response data is then returned to the attacker, enabling data exfiltration from internal networks.

The security patch introduces URL validation by importing address checking utilities:

python
 import mimetypes
 import os
 import re
+import urllib
 
 from pyload.core.network.exceptions import Fail
 from pyload.core.network.http.exceptions import BadHeader
 from pyload.core.utils import format, fs, parse
+from pyload.core.utils.web.check import is_global_address, is_ip_address
+from pyload.core.utils.web.convert import host_to_ip
 
 from ..helpers import exists
 from .hoster import BaseHoster

Source: GitHub Commit Detail

Detection Methods for CVE-2026-33992

Indicators of Compromise

  • Download requests targeting internal IP ranges (e.g., 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
  • Requests to cloud metadata endpoints such as 169.254.169.254
  • Unusual download patterns from authenticated users attempting to access non-standard URLs
  • Log entries showing downloads initiated to localhost or loopback addresses

Detection Strategies

  • Monitor pyLoad application logs for download requests targeting private IP ranges or cloud metadata services
  • Implement network-level monitoring to detect outbound connections from pyLoad to internal services
  • Review authentication logs for suspicious user activity patterns preceding SSRF attempts
  • Deploy web application firewall rules to detect and block requests containing internal IP addresses or cloud metadata URLs

Monitoring Recommendations

  • Enable verbose logging in pyLoad to capture all download request URLs
  • Set up alerts for download requests targeting RFC 1918 private address space
  • Monitor cloud provider audit logs for unexpected metadata API access from pyLoad server instances
  • Implement egress filtering to restrict pyLoad's ability to connect to internal network segments

How to Mitigate CVE-2026-33992

Immediate Actions Required

  • Upgrade pyLoad to version 0.5.0b3.dev97 or later which contains the security patch
  • Restrict network access from pyLoad instances to internal services using firewall rules
  • Review and audit user accounts with access to pyLoad for unauthorized access
  • If running on cloud infrastructure, consider implementing instance metadata service restrictions

Patch Information

The vulnerability has been addressed in pyLoad version 0.5.0b3.dev97. The fix introduces proper URL validation using is_global_address and is_ip_address functions to verify that download targets are legitimate external resources. The patch is available through the GitHub Commit Detail and detailed in the GitHub Security Advisory.

Workarounds

  • Implement network-level restrictions to prevent pyLoad from accessing internal IP ranges and cloud metadata endpoints
  • Place pyLoad behind a reverse proxy with URL filtering capabilities to block requests to private addresses
  • Disable or restrict pyLoad's download functionality until the patch can be applied
  • On cloud platforms, use instance metadata service v2 (IMDSv2) which requires session tokens and provides additional protection
bash
# Configuration example - Block pyLoad access to metadata endpoints using iptables
iptables -A OUTPUT -d 169.254.169.254 -j DROP
iptables -A OUTPUT -d 10.0.0.0/8 -j DROP
iptables -A OUTPUT -d 172.16.0.0/12 -j DROP
iptables -A OUTPUT -d 192.168.0.0/16 -j DROP

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.