Description
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.
Published: 2026-06-22
Score: 9.3 Critical
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises from missing a sandbox directive in the Content‑Security‑Policy header of the nbconvert HTTP handlers in Jupyter Server. When the nbconvert.HTMLExporter renders notebook HTML without sanitizing user‑provided content, malicious HTML in a display_data output is stored in the notebook file. A rendered page that includes this payload triggers stored XSS and grants the attacker access to the user’s session cookie, full /api/* authority, and ultimately the ability to execute code in the kernel. This is a classic reflected XSS that has been promoted to a stored form with a severe impact, classified as CWE‑79 (Cross‑Site Scripting) and CWE‑1021 (Content‑Security‑Policy directive missing).

Affected Systems

The affected product is Jupyter Server (jupyter_server). All releases older than 2.20 are vulnerable. The nbconvertFileHandler and nbconvertPostHandler endpoints are the specific entry points that may serve malicious notebook content.

Risk and Exploitability

The CVSS score of 9.3 places this issue in the critical range. EPSS is not available, so the current exploitation likelihood cannot be quantified, but the vulnerability is listed as not included in CISA KEV, indicating it has not yet triggered widespread attacks. The attack requires an attacker to supply a notebook containing malicious HTML and then have that notebook rendered in the user’s browser. Once the payload runs, the attacker gains full API access and kernel execution privileges. The possibility to retrieve the cookie and run arbitrary code means that exploitation could be done in a single step once the payload is delivered, making the threat significant for any environment that allows untrusted notebook uploads.

Generated by OpenCVE AI on June 22, 2026 at 23:31 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade jupyter_server to version 2.20 or later.
  • Restrict nbconvert HTML rendering to authenticated users or disable it for untrusted notebooks.
  • Add a sandbox directive to the Content‑Security‑Policy header for nbconvert responses or enforce it through server configuration.

Generated by OpenCVE AI on June 22, 2026 at 23:31 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-fcw5-x6j4-ccmp Jupyter Server: Stored XSS in `NbconvertFileHandler` / `NbconvertPostHandler` via missing `sandbox` CSP
History

Tue, 23 Jun 2026 13:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Mon, 22 Jun 2026 21:00:00 +0000

Type Values Removed Values Added
Description 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.
Title Jupyter Server: Stored XSS in `NbconvertFileHandler` / `NbconvertPostHandler` via missing `sandbox` CSP
Weaknesses CWE-1021
CWE-79
References
Metrics cvssV4_0

{'score': 9.3, 'vector': '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'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-06-23T12:15:27.263Z

Reserved: 2026-05-07T18:04:17.309Z

Link: CVE-2026-44727

cve-icon Vulnrichment

Updated: 2026-06-23T12:15:24.412Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-06-22T23:45:04Z

Weaknesses
  • CWE-1021

    Improper Restriction of Rendered UI Layers or Frames

  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')