jupyterlab-git
A Git extension for JupyterLab
Activity
- Latest release
- 1mo ago
- Total releases
- 88
- Cadence
- ~24 days
- Last 12 months
- 10
Reach
- Stars
- 1.6k
Details
- License
- custom
- First release
- Jul 30, 2018
| Version | Released | |
|---|---|---|
0.54.1
patch
| ||
0.54.0
minor
| ||
0.54.0a1
pre
2 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev | ||
0.54.0a0
pre
2 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev | ||
0.53.0
minor
2 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev | ||
0.53.0a1
pre
2 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev | ||
0.53.0a0
pre
2 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev | ||
0.52.0
minor
2 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev | ||
0.51.4
patch
2 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev | ||
0.51.3
patch
2 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev | ||
0.51.2
patch
2 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev | ||
0.51.1
patch
2 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev | ||
0.51.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.50.2
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.50.1
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.50.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.50.0rc0
pre
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.50.0a2
pre
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.50.0a1
pre
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.50.0a0
pre
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.44.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.43.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.42.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.42.0rc0
pre
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.41.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.40.1
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.40.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.39.3
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.39.2
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.39.1
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.39.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.38.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.37.1
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.37.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.36.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.35.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.34.2
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.34.1
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.34.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.33.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.32.4
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.32.3
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.32.2
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.32.1
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.32.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.31.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.31.0a0
pre
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.30.1
patch
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.30.0
minor
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev | ||
0.30.0b3
pre
3 CVEs
CVE-2026-54528
PYSEC-2026-2539
GHSA-436q-jwfr-rm2h
Jul 13, 2026
jupyterlab-git excluded_paths Case-Sensitivity Bypass Allows Reading Excluded Directories
7.1
/ 10
High
Network
Low
Low
None
Unchanged
High
Low
None
Summary
Vulnerable Code
Root Cause
On macOS APFS and Windows NTFS, ImpactAn authenticated JupyterLab user with access to the affected Jupyter server can bypass admin-configured
Attack Scenario
ExploitSee
Fix
Or apply Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 74 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2026-54527
PYSEC-2026-2540
GHSA-f962-v9hr-pfg5
PYSEC-2026-2541
Jul 13, 2026
jupyterlab-git extension: Stored XSS leading to RCE
Critical
Network
Low
Low
Overview Amazon Web Services (AWS) Security has identified a stored cross-site scripting (XSS) issue in the jupyterlab-git JupyterLab extension that can lead to remote code execution (RCE). The issue exists in the PlainTextDiff.ts component, where the createHeader() method passes Git filenames directly to innerHTML without sanitization when rendering diffs for renamed files in commit history. This allows an adversary to craft a filename containing arbitrary HTML/JavaScript that executes when another user views the rename diff in the Git History tab. The issue can be leveraged through the rename history view in the JupyterLab Git panel. An adversary creates a file with a crafted filename containing a JavaScript payload (e.g., <img src=x onerror=eval(atob("base64_payload"))>.py), renames the file in a subsequent commit, and pushes to a shared repository. When a victim clones the repository, navigates to the Git History tab, clicks the rename commit, and then clicks the renamed file to view the diff, the unsanitized filename renders via innerHTML, executing arbitrary JavaScript in the victim's browser session. The injected JavaScript reads the xsrf cookie, opens a JupyterLab terminal via POST /api/terminals, connects via WebSocket, and executes arbitrary shell commands — achieving full RCE. An adversary can leverage this to exfiltrate secrets or credentials from the victim's environment. Scope of impact We discovered this issue during internal security testing. The issue is present in the default configuration of JupyterLab when the jupyterlab-git extension is installed. The attack requires:
The issue could allow an actor who has access to a shared Git repository to execute arbitrary JavaScript in another user's JupyterLab environment by committing a file with a crafted filename, potentially leading to remote code execution with access to user code, data, environment variables, and credentials. Proof of concept The issue exists in the createHeader() method where filenames from rename history are passed directly to innerHTML without sanitization: [1] https://github.com/jupyterlab/jupyterlab-git/blob/main/src/components/diff/PlainTextDiff.ts#L214 Attack flow:
Proof-of-concept mitigation The issue can be mitigated by replacing innerHTML with textContent for filename rendering in the createHeader() method of PlainTextDiff.ts. Alternatively, proper HTML sanitization (escaping <, >, &, ", ') can be applied before inserting user-controlled filenames into the DOM. Affected versions
0.30.0
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
+ 36 more Show less
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.51.1
0.51.2
0.51.3
0.51.4
0.52.0
0.53.0
0.53.0a0
0.53.0a1
0.54.0a0
0.54.0a1
Fixed in
0.54.0
References Updated Jul 13, 2026 · Source: OSV.dev
CVE-2025-30370
PYSEC-2026-1483
GHSA-cj5w-8mjf-r5f8
Jul 07, 2026
jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
7.4
/ 10
High
Local
High
Low
Required
Changed
Low
High
High
OverviewOn many platforms, a third party can create a Git repository under a name that includes a shell command substitution ^1 string in the syntax This issue is occurring because when that menu entry is clicked, Scope of ImpactThis issue allows for arbitrary code execution via command injection. A wide range of actions are permitted by this issue, including but not limited to: modifying files, exfiltrating data, halting services, or compromising the server's security rules. We have scanned the source code of This issue was reproduced on the latest release of Proof-of-concept
Proof-of-concept mitigationThe issue can be mitigated by the patch shown below.
This patch removes the We have verified that this patch works when applied to a local installation of WorkaroundsWe recommend that users upgrade to the patched versions listed on this GHSA. However, if a user is unable to upgrade, there are 3 different ways to mitigate this vulnerability without upgrading to a patch.
Affected versions
0.1.1
0.1.2
0.10.0
0.10.1
0.10.1rc0
0.11.0
0.11.0rc0
0.11.0rc1
0.2.0
0.2.2
0.20.0
0.20.0rc0
+ 64 more Show less
0.21.0
0.21.0a0
0.21.0a1
0.21.0rc0
0.21.1
0.22.0
0.22.1
0.22.2
0.22.3
0.23.0
0.23.1
0.23.2
0.23.3
0.24.0
0.3.0
0.30.0
0.30.0b1
0.30.0b2
0.30.0b3
0.30.1
0.31.0
0.31.0a0
0.32.0
0.32.1
0.32.2
0.32.3
0.32.4
0.33.0
0.34.0
0.34.1
0.34.2
0.35.0
0.36.0
0.37.0
0.37.1
0.38.0
0.39.0
0.39.1
0.39.2
0.39.3
0.4.4
0.40.0
0.40.1
0.41.0
0.42.0
0.42.0rc0
0.43.0
0.44.0
0.5.0
0.50.0
0.50.0a0
0.50.0a1
0.50.0a2
0.50.0rc0
0.50.1
0.50.2
0.51.0
0.6.0
0.6.1
0.8.0
0.8.1
0.9.0
0.9.0rc1
0.9.1
Fixed in
0.51.1
References
Updated Jul 07, 2026 · Source: OSV.dev |