CVE-2026-44727: Jupyter Server: Stored XSS in `NbconvertFileHandler` / `NbconvertPostHandler` via missing `sandbox` CSP
Jupyter Server is the backend for Jupyter web applications. Prior to 2.20, 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. This vulnerability is fixed in 2.20.
Security readout for executives and security teams
Plain-English summary
Jupyter Server versions before 2.20 can render notebook-generated HTML in a way that lets hostile notebook content run script under the trusted Jupyter site. If a user opens the rendered content, an attacker may gain the user’s Jupyter authority, including API access and possible code execution through kernels.
Executive priority
Treat as urgent for shared or externally reachable Jupyter environments. The issue can turn a notebook viewing action into account and compute compromise. Patch promptly, then verify exposure and access controls.
Technical view
The nbconvert HTTP handlers, NbconvertFileHandler and NbconvertPostHandler, served user-authored notebook HTML on the Jupyter origin without a sandbox CSP directive. Because nbconvert.HTMLExporter does not sanitize by default, malicious display_data HTML can become stored XSS with cookie access and /api/* authority. Fixed in jupyter_server 2.20.
Likely exposure
Highest exposure is Jupyter Server < 2.20 where users can upload, share, or open notebooks from others, especially multi-user notebook environments. Publicly reachable or broadly accessible Jupyter deployments increase business risk.
Exploitation context
Sources describe a stored XSS path requiring low privileges and user interaction. The record is not listed as KEV, and the provided sources do not state active exploitation. Impact may extend from browser compromise to Jupyter API abuse and kernel-backed code execution.
Researcher notes
The root issue is missing CSP sandboxing for nbconvert-rendered, user-controlled HTML on the trusted origin. Do not assume sanitization from nbconvert defaults. Validate fixed behavior through version and vendor advisory status rather than exploit reproduction.
Mitigation direction
Upgrade jupyter_server to version 2.20 or later.
Apply relevant vendor packages, including Red Hat fixes where applicable.
Restrict Jupyter access to trusted users and networks until patched.
Avoid opening untrusted notebooks or rendered notebook HTML.
Check vendor advisories for supported backports and product-specific status.
Validation and detection
Inventory all Jupyter Server installations and record jupyter_server versions.
Confirm no deployed instance runs jupyter_server below 2.20.
Identify shared notebook workflows that accept user-authored HTML outputs.
Review access controls for exposed Jupyter endpoints.
Check Red Hat advisory status for affected managed packages.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-1021: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
Client-side and session-facing weaknesses should be reviewed alongside initial-access and user-execution behaviors. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
The CVE wording references code or command execution, so execution technique review may help defensive triage. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
2CVSS vectors
5Timeline events
2ADP providers
7Source links
SSVC decision data
CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: noneAutomatable: noTechnical Impact: total
CVSS vector scores
2 official scores
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-1021 · source CWE mapping
Improper Restriction of Rendered UI Layers or Frames
Improper Restriction of Rendered UI Layers or Frames represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.