id: PYSEC-2026-366 published: "2026-06-29T11:50:52.185377Z" modified: "2026-07-01T20:22:54.921081Z" aliases: - CVE-2026-44727 - GHSA-fcw5-x6j4-ccmp summary: "Jupyter Server: Stored XSS in `NbconvertFileHandler` / `NbconvertPostHandler` via missing `sandbox` CSP " details: "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`. \n\nCombined 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.\n\n### Impact\n\nAn authenticated victim who navigates to `/nbconvert/html/` containing attacker-authored output can have their token exfiltrated to another domain because it is executed in the Jupyter origin.\n\n### Patches\n\nFixed in v2.20.0, commit [6cbee8d](https://github.com/jupyter-server/jupyter_server/commit/6cbee8d65e71abac851c4492fea987ad080580bd)\n \n\n### Workarounds\n\nFor 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:\n\n```\nimport jupyter_server.nbconvert.handlers as _nb\n\ndef _csp(self):\n return super(type(self), self).content_security_policy + \"; sandbox allow-scripts\"\n\n_nb.NbconvertFileHandler.content_security_policy = property(_csp)\n_nb.NbconvertPostHandler.content_security_policy = property(_csp)\n```" affected: - package: name: jupyter-server ecosystem: PyPI purl: pkg:pypi/jupyter-server ranges: - type: ECOSYSTEM events: - introduced: "0" - fixed: 2.20.0 versions: - 0.0.0 - 0.0.1 - 0.0.2 - 0.0.3 - 0.0.4 - 0.0.5 - 0.1.0 - 0.1.1 - 0.2.0 - 0.2.1 - 0.3.0 - 1.0.0 - 1.0.0rc0 - 1.0.0rc1 - 1.0.0rc10 - 1.0.0rc11 - 1.0.0rc12 - 1.0.0rc13 - 1.0.0rc14 - 1.0.0rc15 - 1.0.0rc16 - 1.0.0rc2 - 1.0.0rc3 - 1.0.0rc4 - 1.0.0rc5 - 1.0.0rc6 - 1.0.0rc7 - 1.0.0rc8 - 1.0.0rc9 - 1.0.1 - 1.0.10 - 1.0.11 - 1.0.2 - 1.0.3 - 1.0.4 - 1.0.5 - 1.0.6 - 1.0.7 - 1.0.8 - 1.0.9 - 1.1.0 - 1.1.1 - 1.1.2 - 1.1.3 - 1.1.4 - 1.10.0 - 1.10.1 - 1.10.2 - 1.11.0 - 1.11.1 - 1.11.2 - 1.12.0 - 1.12.1 - 1.13.0 - 1.13.1 - 1.13.2 - 1.13.3 - 1.13.4 - 1.13.5 - 1.15.0 - 1.15.1 - 1.15.2 - 1.15.3 - 1.15.4 - 1.15.5 - 1.15.6 - 1.16.0 - 1.17.0 - 1.17.1 - 1.18.0 - 1.18.1 - 1.19.0 - 1.19.1 - 1.2.0 - 1.2.1 - 1.2.2 - 1.2.3 - 1.21.0 - 1.23.0 - 1.23.1 - 1.23.2 - 1.23.3 - 1.23.4 - 1.23.5 - 1.23.6 - 1.24.0 - 1.3.0 - 1.4.0 - 1.4.1 - 1.5.0 - 1.5.1 - 1.6.0 - 1.6.1 - 1.6.2 - 1.6.3 - 1.6.4 - 1.7.0 - 1.7.0a1 - 1.7.0a2 - 1.8.0 - 1.9.0 - 2.0.0 - 2.0.0a0 - 2.0.0a1 - 2.0.0a2 - 2.0.0b0 - 2.0.0b1 - 2.0.0rc0 - 2.0.0rc1 - 2.0.0rc2 - 2.0.0rc3 - 2.0.0rc4 - 2.0.0rc5 - 2.0.0rc6 - 2.0.0rc7 - 2.0.0rc8 - 2.0.1 - 2.0.2 - 2.0.3 - 2.0.4 - 2.0.5 - 2.0.6 - 2.0.7 - 2.1.0 - 2.10.0 - 2.10.1 - 2.11.0 - 2.11.1 - 2.11.2 - 2.12.0 - 2.12.1 - 2.12.2 - 2.12.3 - 2.12.4 - 2.12.5 - 2.13.0 - 2.14.0 - 2.14.1 - 2.14.2 - 2.15.0 - 2.16.0 - 2.17.0 - 2.18.0 - 2.18.1 - 2.18.2 - 2.19.0 - 2.2.0 - 2.2.1 - 2.3.0 - 2.4.0 - 2.5.0 - 2.6.0 - 2.7.0 - 2.7.1 - 2.7.2 - 2.7.3 - 2.8.0 - 2.9.0 - 2.9.1 references: - type: WEB url: https://github.com/jupyter-server/jupyter_server/security/advisories/GHSA-fcw5-x6j4-ccmp - type: WEB url: https://github.com/jupyter-server/jupyter_server/commit/6cbee8d65e71abac851c4492fea987ad080580bd - type: PACKAGE url: https://github.com/jupyter-server/jupyter_server - type: PACKAGE url: https://pypi.org/project/jupyter-server - type: ADVISORY url: https://github.com/advisories/GHSA-fcw5-x6j4-ccmp - type: ADVISORY url: https://nvd.nist.gov/vuln/detail/CVE-2026-44727 severity: - type: CVSS_V4 score: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H