<?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>Jupyterlab-Git-Core (Pip &gt;= 0.30.0b3, &lt; 0.54.0a1) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/jupyterlab-git-core-pip--0.30.0b3--0.54.0a1/</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>Fri, 19 Jun 2026 20:01:30 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/jupyterlab-git-core-pip--0.30.0b3--0.54.0a1/feed.xml" rel="self" type="application/rss+xml"/><item><title>JupyterLab Git Extension Stored XSS to RCE (CVE-2026-54527)</title><link>https://feed.craftedsignal.io/briefs/2026-06-jupyterlab-git-xss-rce/</link><pubDate>Fri, 19 Jun 2026 20:01:30 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-jupyterlab-git-xss-rce/</guid><description>A stored cross-site scripting (XSS) vulnerability, identified as CVE-2026-54527, in the `jupyterlab-git` JupyterLab extension (versions &gt;= 0.30.0b3, &lt; 0.54.0a1), specifically in `PlainTextDiff.ts`, allows an adversary with Git commit access to execute arbitrary JavaScript in a victim's browser and achieve Remote Code Execution (RCE) on the JupyterLab server by crafting a malicious filename in a Git commit that, when viewed as a rename diff, triggers the XSS payload to steal `_xsrf` cookies, open a terminal, and execute arbitrary shell commands to exfiltrate data.</description><content:encoded><![CDATA[<p>Amazon Web Services (AWS) Security discovered CVE-2026-54527, a high-severity stored cross-site scripting (XSS) vulnerability within the <code>jupyterlab-git</code> JupyterLab extension (versions &gt;= 0.30.0b3, &lt; 0.54.0a1). This flaw specifically resides in the <code>createHeader()</code> method of the <code>PlainTextDiff.ts</code> component, which insecurely renders Git filenames directly to <code>innerHTML</code> without sanitization when displaying diffs for renamed files in commit history. Exploitation requires an adversary to have commit access to a shared Git repository; they craft a malicious filename (e.g., <code>&lt;img src=x onerror=eval(atob(&quot;base64_payload&quot;))&gt;.py</code>), rename it in a subsequent commit, and push it. When a victim views the rename diff of this file in the Git History tab, the injected JavaScript executes in their browser, reading the <code>_xsrf</code> cookie, opening a JupyterLab terminal via <code>POST /api/terminals</code>, and subsequently executing arbitrary shell commands to achieve full Remote Code Execution (RCE). This allows attackers to exfiltrate secrets, credentials, and sensitive data from the victim's JupyterLab environment. The vulnerability impacts organizations utilizing JupyterLab with the vulnerable <code>jupyterlab-git</code> extension installed, potentially leading to widespread compromise of development and data science environments.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An adversary with commit access to a shared Git repository crafts a file with a malicious filename containing a JavaScript payload (e.g., <code>&lt;img src=x onerror=eval(atob(&quot;base64_payload&quot;))&gt;.py</code>).</li>
<li>The adversary performs a Git commit, renaming the crafted file, and pushes both the file creation and rename commits to the shared Git repository.</li>
<li>A victim user clones or pulls the repository into their JupyterLab environment.</li>
<li>The victim navigates to the Git History tab within JupyterLab, clicks the commit containing the rename, and then clicks the renamed malicious file to view its diff.</li>
<li>JupyterLab's <code>PlainTextDiff.ts</code> component, specifically the <code>createHeader()</code> method, renders the unsanitized malicious filename directly into the Document Object Model (DOM) via <code>innerHTML</code>, executing the embedded JavaScript payload in the victim's browser session.</li>
<li>The executed JavaScript reads the victim's <code>_xsrf</code> cookie, constructs and sends a <code>POST</code> request to the JupyterLab server's <code>/api/terminals</code> endpoint to open a new terminal session.</li>
<li>The JavaScript establishes a WebSocket connection to the newly created terminal and sends arbitrary shell commands for execution on the underlying JupyterLab server.</li>
<li>The shell commands execute with the privileges of the JupyterLab server process, leading to Remote Code Execution (RCE) and potential exfiltration of credentials or sensitive data from the victim's environment.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of CVE-2026-54527 leads to full Remote Code Execution (RCE) on the JupyterLab server where the victim's session is running. This grants an attacker unauthorized access to the victim's code, data, environment variables, and any credentials accessible from that environment. Attackers can leverage this RCE to exfiltrate sensitive information, install backdoors, move laterally within the network, or disrupt development and data science workflows. The attack vectors are widespread across any organization using JupyterLab with the vulnerable <code>jupyterlab-git</code> extension in a collaborative Git environment.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Immediately patch the <code>jupyterlab-git</code> extension to a version equal to or greater than 0.54.0a1 to remediate CVE-2026-54527.</li>
<li>Deploy the Sigma rules &quot;Detects CVE-2026-54527 Exploitation — JupyterLab Terminal Creation&quot; and &quot;Detects CVE-2026-54527 Exploitation — Suspicious JupyterLab Child Process&quot; to your SIEM and tune them for your environment's baseline JupyterLab activity.</li>
<li>Enable comprehensive <code>webserver</code> logging for all JupyterLab instances to capture <code>POST</code> requests to <code>/api/terminals</code> and other suspicious API endpoints, enabling the &quot;Detects CVE-2026-54527 Exploitation — JupyterLab Terminal Creation&quot; rule.</li>
<li>Enable <code>process_creation</code> logging on all servers hosting JupyterLab instances to monitor for unusual child processes spawned by JupyterLab or Python processes, enabling the &quot;Detects CVE-2026-54527 Exploitation — Suspicious JupyterLab Child Process&quot; rule.</li>
</ol>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>xss</category><category>rce</category><category>jupyterlab</category><category>git</category><category>web-vulnerability</category><category>software-supply-chain</category><category>ghsa</category></item></channel></rss>