pyLoad: SSRF guard bypass via IPv6 6to4/NAT64 transition wrappers of internal IPs
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- High
- Impact type
- —
- Confidentiality · integrity · availability
- Low · None · Low
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub.
Summary
pyLoad is a free and open-source download manager written in Python. Prior to 0.5.0b3.dev101, is_global_address in src/pyload/core/utils/web/check.py relies on Python's global-address classification without examining IPv4 destinations embedded in 6to4 or NAT64 IPv6 addresses. A low-privileged user can submit an IPv6 literal through parse_urls to the pre-resolution is_global_host guard. Because host_to_ip is pinned to AF_INET, that guard does not evaluate a hostname's AAAA result. Separately, curl resolves hostnames before the pycurl PREREQFUNC in src/pyload/core/network/http/http_request.py applies the same vulnerable is_global_address check to the actual connection address, so a transition-form AAAA result can be permitted even when it terminates at an embedded loopback, private, CGNAT, or link-local IPv4 address. Exploitation requires the pyLoad host to route the applicable transition mechanism, including 6to4 on affected Python 3.9 through 3.11 deployments or NAT64 on a network with a NAT64 gateway. Successful exploitation can enable internal-network reconnaissance, timing-based confirmation, limited service disruption, or cloud metadata disclosure where the wrapped address is routable. This issue is fixed in version 0.5.0b3.dev101.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| pyload | pyload | before 0.5.0b3.dev101 | 0.5.0b3.dev101 | Patch available | CNA |
| — | pyload-ng (PyPI) | up to 0.5.0b3.dev100 | — | No fix listed | GHSA-m5x5-28jr-gpjj |
- pyload Vendorpyload Affected before 0.5.0b3.dev101 Fixed in 0.5.0b3.dev101 Patch available CNA
- pyload-ng (PyPI) Vendor— Affected up to 0.5.0b3.dev100 Fixed in — No fix listed GHSA-m5x5-28jr-gpjj
Remediation
- Fix · CNA pyload (pyload) Fixed in 0.5.0b3.dev101
Timeline
- 2026-10-02 Threatist record created from CVE-2026-48737
- 2026-10-03 Alias added: GHSA-m5x5-28jr-gpjj
References
More pyload vulnerabilities
- TI-2023-00282 Code Injection in pyload/pyload CVSS 3.1CRITICAL 9.8
- TI-2025-34556 pyLoad CNL Blueprint is vulnerable to Path Traversal through `dlc_path` leading to Remote Code Execution (RCE) CVSS 3.1CRITICAL 9.8
- TI-2025-33765 pyLoad vulnerable to remote code execution through js2py onCaptchaResult CVSS 3.1CRITICAL 9.8
- TI-2023-00412 Excessive Attack Surface in pyload/pyload CVSS 3.1CRITICAL 9.8
- TI-2026-27589 pyLoad has SSRF fix bypass via HTTP redirect CVSS 4.0CRITICAL 9.3
- TI-2026-26332 pyLoad: Server-Side Request Forgery via Download Link Submission Enables Cloud Metadata Exfiltration CVSS 4.0CRITICAL 9.3
Sources
- CVE-2026-48737 · CVE Program
- CVE-2026-48737 · NVD
- FIRST EPSS
- GHSA-m5x5-28jr-gpjj · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences