<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Jupyter_server (&lt;= 2.19.0) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/jupyter_server--2.19.0/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 18 Jun 2026 15:20:33 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/jupyter_server--2.19.0/feed.xml" rel="self" type="application/rss+xml"/><item><title>Jupyter Server Stored XSS via Missing CSP Sandbox (CVE-2026-44727)</title><link>https://feed.craftedsignal.io/briefs/2026-06-jupyter-server-xss/</link><pubDate>Thu, 18 Jun 2026 15:20:33 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-jupyter-server-xss/</guid><description>A critical stored Cross-Site Scripting (XSS) vulnerability, CVE-2026-44727, exists in `jupyter_server` versions up to 2.19.0 due to a missing `sandbox` directive in Content-Security-Policy (CSP) headers, allowing authenticated attackers to craft malicious notebooks that exfiltrate victim tokens and achieve kernel Remote Code Execution (RCE) when viewed.</description><content:encoded><![CDATA[<p>Jupyter Server, versions up to 2.19.0, is affected by a critical stored Cross-Site Scripting (XSS) vulnerability, identified as CVE-2026-44727. This flaw resides in the <code>NbconvertFileHandler</code> and <code>NbconvertPostHandler</code> components, specifically due to a missing <code>sandbox</code> directive in their Content-Security-Policy (CSP). This oversight allows user-authored Jupyter notebooks containing malicious HTML payloads within <code>display_data</code> output to be rendered without proper sanitization or isolation. An authenticated attacker can craft such a notebook and share it. When an unsuspecting, authenticated victim navigates to the malicious notebook's output via the <code>/nbconvert/html/&lt;path&gt;</code> endpoint, the embedded script executes within their browser under the Jupyter origin. This grants the attacker potential access to the victim's authentication tokens, leading to cookie exfiltration, and can be escalated to full <code>/api/*</code> authority and kernel Remote Code Execution (RCE) on the server. This vulnerability poses a significant risk to the integrity and confidentiality of data on affected Jupyter environments.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li><strong>Attacker Crafts Malicious Jupyter Notebook</strong>: An authenticated attacker creates a Jupyter notebook containing a specially crafted HTML payload within a <code>display_data</code> output cell, embedding malicious JavaScript.</li>
<li><strong>Attacker Uploads/Shares Notebook</strong>: The attacker uploads this malicious notebook to a vulnerable <code>jupyter_server</code> instance (versions up to 2.19.0) or shares it with potential victims.</li>
<li><strong>Victim Accesses Server</strong>: An authenticated victim logs into the <code>jupyter_server</code> instance.</li>
<li><strong>Triggering XSS</strong>: The victim navigates their browser to the malicious notebook's output view, which is rendered via the <code>/nbconvert/html/&lt;path&gt;</code> endpoint handled by <code>NbconvertFileHandler</code> or <code>NbconvertPostHandler</code>.</li>
<li><strong>Vulnerable Rendering</strong>: The <code>jupyter_server</code> renders the user-authored HTML content. Due to the missing <code>sandbox</code> directive in the Content-Security-Policy, the malicious HTML is not isolated and executes without restrictions.</li>
<li><strong>Client-Side Execution</strong>: The embedded malicious JavaScript executes within the victim's browser, operating under the same origin as the <code>jupyter_server</code>.</li>
<li><strong>Token Exfiltration</strong>: The executing script accesses the victim's authentication tokens (e.g., cookies, session tokens) and exfiltrates them to an attacker-controlled domain.</li>
<li><strong>Kernel RCE</strong>: Leveraging the victim's authenticated session, the script utilizes full <code>/api/*</code> authority to interact with Jupyter's internal APIs, potentially achieving Remote Code Execution on the Jupyter kernel or the underlying server.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>The successful exploitation of CVE-2026-44727 can lead to severe consequences for affected <code>jupyter_server</code> instances. An authenticated victim's session tokens, including cookies, can be exfiltrated to an attacker-controlled domain, compromising user accounts and sensitive data. Furthermore, the malicious script executing with full <code>/api/*</code> authority can be used to interact with the Jupyter environment, potentially achieving kernel Remote Code Execution (RCE). This allows an attacker to execute arbitrary commands on the server hosting the Jupyter kernel, leading to data theft, system compromise, or further network penetration. The vulnerability impacts any organization or individual using <code>jupyter_server</code> for data analysis, development, or educational purposes, especially in collaborative environments where users might share notebooks.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Immediately patch <code>jupyter_server</code> to version v2.20.0 or higher to address CVE-2026-44727.</li>
<li>For deployments where patching is impractical, implement the provided workaround by adding the Content-Security-Policy modification to your <code>jupyter_server_config.py</code> file.</li>
<li>Deploy the Sigma rules &quot;Detects CVE-2026-44727 Exploitation — Jupyter <code>nbconvert</code> HTML Handler Access&quot; and &quot;Detects CVE-2026-44727 Probing — Suspicious Characters in Jupyter <code>nbconvert</code> Path&quot; to your SIEM for monitoring.</li>
<li>Ensure <code>webserver</code> logs are collected and ingested into your security monitoring platform to enable detection of these activities.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>xss</category><category>web-vulnerability</category><category>jupyter</category><category>server-side</category><category>rce</category></item></channel></rss>