CVE-2026-45306Medium· 6.5▾ SunlitpyLoad Has Incomplete Fix for CVE-2026-33509 -storage_folder Bypass via Session Directory in pyLoad
▾ Sunlit zone — Low / medium · no exploitation signal
impact 35.8 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Exploit-prediction probability, daily snapshots since Jul 13.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
Last analysed / modified upstream
0.2%
The fix for CVE-2026-33509 prevents setting storage_folder inside PKGDIR or userdir, but does NOT protect the Flask session directory (/tmp/pyLoad/flask). An authenticated attacker can set storage_folder to the session directory and download session files of other users via /files/get/, leading to account takeover.
The fix in src/pyload/core/api/__init__.py:
directories = [PKGDIR, userdir]
if any(directories[0].startswith(d) for d in directories[1:]):
return # blocked
But the Flask session directory is:
session_storage_path = os.path.join(api.get_cachedir(), "flask")
# = /tmp/pyLoad/flask ← NOT blocked by fix
storage_folder = /tmp/pyLoad/flask/tmp/pyLoad/flask not inside PKGDIR or userdirGET /files/get/<victim_session_filename>send_from_directory('/tmp/pyLoad/flask', session_file) serves victim's sessionimport os
PKGDIR = "/usr/lib/python3/dist-packages/pyload"
userdir = os.path.expanduser("~/.pyload")
session_dir = "/tmp/pyLoad/flask"
correct_case = lambda x: x
directories = [
correct_case(os.path.join(os.path.realpath(d), ""))
for d in [session_dir, PKGDIR, userdir]
]
blocked = any(directories[0].startswith(d) for d in directories[1:])
print(f"Fix blocks session_dir: {blocked}")
# Output: Fix blocks session_dir: False ← BYPASS CONFIRMED
Authenticated admin can steal sessions of other users → Account Takeover.
blocked_dirs = [PKGDIR, userdir, api.get_cachedir()]
directories = [
os.path.join(os.path.realpath(d), "")
for d in [value] + blocked_dirs
]
if any(directories[0].startswith(d) for d in directories[1:]):
return
pyload-ng <= 0.5.0b3.dev99Refer to the advisory for the patched release.
Connected by shared product, vendor, weakness, or advisory.
CVE-2024-22416Critical· 9.6Cross-Site Request Forgery on any API call in pyLoad may lead to admin privilege escalation
CVE-2025-54802Critical· 9.8pyLoad CNL Blueprint allows Path Traversal through `dlc_path` which leads to Remote Code Execution (RCE)
CVE-2026-35463High· 8.8pyLoad: Improper Neutralization of Special Elements used in an OS Command
CVE-2026-40071Medium· 5.4pyload-ng has a WebUI JSON permission mismatch that lets ADD/DELETE users invoke MODIFY-only actions
CVE-2026-45348High· 8.7pyLoad is vulnerable to stored XSS in Downloads view via unsanitized link URL in packages.js template literal
CVE-2026-44226Medium· 5.3PyLoad vulnerable to unauthenticated traceback disclosure via global exception handler in WebUI