CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

CVE-2026-48737

mediumCVSS 4.9covered by 1 sourcefirst seen 2026-07-09
Summary is_global_address in src/pyload/core/utils/web/check.py is the central guard against SSRF-style outbound connections in pyload-ng. It tests whether a given IP is "globally routable" via Python's ipaddress.ip_address(value).is_global, and callers treat not is_global as "deny": def is_global_address(value): try: return ipaddress.ip_address(value).is_global except ValueError: return False def is_global_host(value): ips = host_to_ip(value) return ips and all((is_global_address(ip) for ip in ips)) Python's ipaddress.IPv6Address.is_global classifies the NAT64 well-known prefix as globally routable on every supported Python version (3.9 through 3.14 confirmed), and on older Pythons (3.9-3.11) the 6to4 prefix as well: | address | is_global on Py 3.9-3.11 | is_global on Py 3.12+ | wrapped IPv4 | |----------------------------------|---------------------------|--------------------------|----------------------| | 2002:7f00:0001:: (6to4) | True | False | 127.0.0.1 | | 2002:0a00:0001:: (6to4) | True | False | 10.0.0.1 | | 2002:a9fe:a9fe:: (6to4) | True | False | 169.254.169.254 (IMDS)| | 64:ff9b::a9fe:a9fe (NAT64) | True | True | 169.254.169.254 | | 64:ff9b::7f00:1 (NAT64) | True | True | 127.0.0.1 | pyload-ng declares python_requires = >=3.9 (setup.cfg), so deployments on Python 3.9-3.11 see the 6to4 path too. The NAT64 path is universal. is_global returns True for these wrappers, so is_global_address returns True and the deny check passes. The pycurl PREREQFUNC at src/pyload/core/network/http/http_request.py:680 consults the same helper just before TCP-connect: if not self.allow_private_ip: is_proxy_ip = self.http_proxy_host and self.http_proxy_host == (conn_primary_ip, conn_primary_port) if not is_global_address(conn_primary_ip) and not is_proxy_ip: return pycurl.PREREQFUNC_ABORT return pycurl.PREREQFUNC_OK On a host with 6to4 routing (legacy operator tunnels; 2002::/16 still configurable) or NAT64 (cloud IPv6-only subnets with NAT64 gateway), the encoded form

⚡ Watch CVE-2026-48737

Get an email if CVE-2026-48737 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.

Advisory coverage (1)

External references

NVD record for CVE-2026-48737

CVE.org record

Embed the live status

CVE-2026-48737 live status badge — this badge updates automatically when the KEV or exploit status changes. How to embed it →

[![CVE-2026-48737 status](https://www.csirts.com/badge/CVE-2026-48737)](https://www.csirts.com/cve/CVE-2026-48737)