CVE-2026-44727 json
Jupyter Server: Stored XSS in `NbconvertFileHandler` / `NbconvertPostHandler` via missing `sandbox` CSP
published 2026-06-18 4 mo ago modified 2026-10-25 14 d ago also EUVD-2026-38347 , GHSA-fcw5-x6j4-ccmp , PYSEC-2026-366
- cvss
- 9.0
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 38%
- public exploits
- 0
- none known
Summary
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.
Patch / fix
- pypi jupyter-server 2.20.0
- Red Hat Red Hat Migration Toolkit for Applications 8.2 1784109883
- Red Hat Red Hat OpenShift AI 3.4 1787073546, 1787073593, 1787073605, 1787073713, 1787073717, 1787073913, 1787073929, 1787074078, 1787074331, 1787076481, 1787076778, 1787077779
- jupyter-server Debian 14 2.20.0-1
debian advisories DEBIAN-CVE-2026-44727
- python-jupyter-server openSUSE Tumbleweed 2.20.0-1.1
opensuse advisories openSUSE-SU-2026:11159-1
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-44727 updated cvss 9.0
jupyter-server: Jupyter Server: Remote Code Execution via stored Cross-Site Scripting in nbconvert handlers
-
Red Hat Migration Toolkit for Applications 8.2 mta/mta-solution-server-rhel9 1784109883fixed: vendor fix RHSA-2026:43038
-
Red Hat OpenShift AI 3.3 rhoai/odh-workbench-jupyter-minimal-cpu-py312-rhel9 1790260954, rhoai/odh-workbench-jupyter-minimal-cuda-py312-rhel9 1790072130, rhoai/odh-workbench-jupyter-minimal-rocm-py312-rhel9 1790072109, rhoai/odh-workbench-jupyter-pytorch-cuda-py312-rhel9 1789651387, rhoai/odh-workbench-jupyter-pytorch-rocm-py312-rhel9 1789651385, rhoai/odh-workbench-jupyter-trustyai-cpu-py312-rhel9 1790260954, +4 morefixed: vendor fix RHSA-2026:73987
-
Red Hat OpenShift AI 3.4 rhoai/odh-th06-cpu-torch210-py312-rhel9 1787076778, rhoai/odh-th06-rocm64-torch291-py312-rhel9 1787076481, rhoai/odh-th06-cuda130-torch210-py312-rhel9 1787077779, rhoai/odh-workbench-jupyter-minimal-cpu-py312-rhel9 1787073913, rhoai/odh-workbench-jupyter-minimal-cuda-py312-rhel9 1787074078, rhoai/odh-workbench-jupyter-minimal-rocm-py312-rhel9 1787073929, +6 morefixed: vendor fix RHSA-2026:60520
-
Red Hat Migration Toolkit for Applications 8.2 mta/mta-ui-rhel9 1783962515, mta/mta-cli-rhel9 1784211378, mta/mta-hub-rhel9 1784059743, mta/mta-rhel9-operator 1784219586, mta/mta-operator-bundle 1784220119, mta/mta-analyzer-addon-rhel9 1784163267, +7 morenot affected: vulnerable code not present
-
Red Hat OpenShift AI (RHOAI) rhoai/odh-th06-cpu-torch291-py312-rhel9, rhoai/odh-th06-cuda130-torch291-py312-rhel9not affected: component not present
-
Red Hat OpenShift AI 3.3 rhoai/odh-cli-rhel9 1790070206, rhoai/rhai-cli-rhel9 1790070206, rhoai/odh-mlflow-rhel9 1789653606, rhoai/odh-trainer-rhel9 1790136369, rhoai/odh-maas-api-rhel9 1790131842, rhoai/odh-mlserver-rhel9 1789121365, +67 more Red Hat OpenShift AI 3.4 rhoai/odh-cli-rhel9 1787330837, rhoai/rhai-cli-rhel9 1787330837, rhoai/odh-automl-rhel9 1786612415, rhoai/odh-mlflow-rhel9 1787226790, rhoai/odh-autorag-rhel9 1786612637, rhoai/odh-trainer-rhel9 1787089049, +88 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- total
- Assessed
- 4 mo ago
Exploit prediction
0.44% chance of exploitation in the next 30 days, higher than 38% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 9.3 | 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 |
| CISA ADP | 3.1 | 9.0 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H |
| GitHub | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| CNA | 4.0 | 9.3 | 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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| NVD | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| CNA | 3.1 | 9.0 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | jupyter-server | <2.20.0 |
2.20.0 |
Affected products
- jupyter-server jupyter_server
- Red Hat Red Hat Migration Toolkit for Applications 8.2
- Red Hat Red Hat OpenShift AI 3.4
- Red Hat Red Hat OpenShift AI (RHOAI)
Classification
References
-
github.com
/jupyter-server/jupyter_server/commit/6cbee8d65e71abac851c4492fea987ad080580bd
web, patch
-
github.com
/jupyter-server/jupyter_server/security/advisories/GHSA-fcw5-x6j4-ccmp
web, mitigation, patch, vendor-advisory
-
access.redhat.com
/errata/RHSA-2026:43038
vendor-advisory, web
-
access.redhat.com
/errata/RHSA-2026:60520
vendor-advisory, web
-
access.redhat.com
/security/cve/CVE-2026-44727
vdb-entry, web
-
bugzilla.redhat.com
/show_bug.cgi?id=2491516
issue-tracking, web
-
security.access.redhat.com
/data/csaf/v2/vex/2026/cve-2026-44727.json
web
-
nvd.nist.gov
/vuln/detail/CVE-2026-44727
advisory
-
github.com
/advisories/GHSA-fcw5-x6j4-ccmp
advisory
-
github.com
/jupyter-server/jupyter_server
package
-
github.com
/pypa/advisory-database/tree/main/vulns/jupyter-server/PYSEC-2026-366.yaml
web
-
pypi.org
/project/jupyter-server
web, package
Sources
- CVE List CVE-2026-44727
- GitHub Advisory GHSA-fcw5-x6j4-ccmp
- NVD CVE-2026-44727
- OSV PYSEC-2026-366
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.