Summary
Jupyter Server before 2.20.0 has a stored cross-site scripting flaw (CVE-2026-44727). The `NbconvertFileHandler` and `NbconvertPostHandler` served converted notebook output without a sandboxing Content-Security-Policy, so malicious HTML or JavaScript embedded in a notebook executes in the victim's browser within the Jupyter origin. Opening or being shown a crafted notebook can hijack a user's Jupyter session.
How to fix it
- Upgrade `jupyter-server` to 2.20.0 or later, which restores the sandbox Content-Security-Policy on the nbconvert handlers.
- Until you upgrade, treat notebooks from untrusted sources as hostile and do not open or render them in a shared Jupyter instance.
How to avoid it in your code
- Render untrusted, user-controlled content under a strict sandboxing Content-Security-Policy, and serve downloadable HTML from a separate origin where possible.
- Sanitize or escape document and notebook output that can contain HTML or JavaScript before display.
- Keep notebook and data-science tooling patched; these tools routinely render untrusted input and are a recurring XSS surface.
References
Related vulnerabilities
All Supply chain →- CRITICALCVE-2026-102989
TanStack Router: Unauthenticated reflected XSS in TanStack Start server-function responses
- CRITICALCVE-2026-104252
Vitess vttablet /twopcz reflected XSS
- MEDIUMCVE-2026-104250
unstructured: Stored XSS via unescaped HTML generation
- HIGHCVE-2026-96230
Microsoft Security Advisory CVE-2026-96230 - ASP.NET Core Remote Code Execution Vulnerability
- HIGHCVE-2026-108260
@tinacms/web-components: `tina-markdown` writes rich-text link URLs into `href` without scheme validation, allowing stored XSS
- CRITICALCVE-2026-107845
Contao: Cross-site scripting in the comments bundle