CVE-2026-44727Medium· 5.4▾ SunlitJupyter Server: Stored XSS in `NbconvertFileHandler` / `NbconvertPostHandler` via missing `sandbox` CSP
▾ Sunlit zone — Low / medium · no exploitation signal
impact 29.7 · likelihood 0.1 · 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 4.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
0.2%
0.2% → 0.4%
Last analysed / modified upstream
5.4 → —
medium → critical
— → 5.4
critical → medium
5.4 → —
medium → critical
— → 5.4
critical → medium
5.4 → —
medium → critical
— → 5.4
critical → medium
The nbconvert HTTP handlers in jupyter_server render user-authored notebook HTML under the Jupyter origin without a sandbox directive in their Content-Security-Policy.
Combined with nbconvert.HTMLExporter's default non-sanitizing behavior, a notebook carrying an HTML payload in a display_data output triggers stored XSS with cookie access, full /api/* authority, and kernel RCE.
An authenticated victim who navigates to /nbconvert/html/<path> containing attacker-authored output can have their token exfiltrated to another domain because it is executed in the Jupyter origin.
Fixed in v2.20.0, commit 6cbee8d
For deployments where editing the installed jupyter_server is impractical (containerized builds, read-only images), adding this to jupyter_server_config.py has the same effect as the patch above without touching source files:
import jupyter_server.nbconvert.handlers as _nb
def _csp(self):
return super(type(self), self).content_security_policy + "; sandbox allow-scripts"
_nb.NbconvertFileHandler.content_security_policy = property(_csp)
_nb.NbconvertPostHandler.content_security_policy = property(_csp)
jupyter-server < 2.20.0Upgrade to a patched release:
jupyter-server 2.20.0Field changes observed since this record was first indexed.
Connected by shared product, vendor, weakness, or advisory.
CVE-2026-40110HighJupyter Server has a CORS Origin Validation Bypass via `re.match()` in `allow_origin_pat`
CVE-2020-26275Medium· 6.1Jupyter Server open redirect vulnerability
CVE-2023-39968Medium· 6.1Open Redirect Vulnerability in jupyter-server
CVE-2025-61669MediumJupyter Server has an open redirection vulnerability in `next` query parameter
CVE-2022-29241High· 7.1Jupyter server Token bruteforcing
CVE-2024-35178High· 7.5Jupyter server on Windows discloses Windows user password hash