CVE-2026-48737 pyLoad: SSRF guard bypass via IPv6 6to4/NAT64 transition wrappers of internal IPs
Attackers can bypass SSRF protections in pyLoad using IPv6 transition addresses to access internal networks or cloud metadata.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- None listed
What is CVE-2026-48737?
CVE-2026-48737 is a medium-severity server-side request forgery vulnerability in pyload, published on 15 Sep 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official description
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.
Weakness: CWE-918
Which versions are affected by CVE-2026-48737?
3 open source packages ship an affected version, including pyload-ng.
| Package | Affected | Fixed in |
|---|---|---|
pyload-ng PyPI | All versions to 0.5.0b3.dev100 | None |
pyload-ng PyPI | All versions to 0.5.0b3.dev100 | None |
pyload-ng PyPI | All versions to 0.5.0b3.dev100 | None |
How do I fix CVE-2026-48737?
No fix has been published for CVE-2026-48737 yet. Limit exposure of the affected software until one is available.
Upgrade, and send outbound requests through an allow-list that blocks internal addresses. More about Server-side request forgery.
Is CVE-2026-48737 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-48737 exists.
Sources
Also known as GHSA-m5x5-28jr-gpjj, PYSEC-2026-2995.