Description
JupyterLab Git is a Git extension for JupyterLab. From 0.30.0b3 before 0.54.0, the PlainTextDiff.ts createHeader() method passes Git filenames directly to innerHTML when rendering renamed files in commit history, allowing a crafted filename to execute JavaScript when a victim views the rename diff in the Git History tab. This issue is fixed in version 0.54.0.
Published: 2026-07-08
Score: 9.3 Critical
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

JupyterLab Git is a Git extension for JupyterLab. From 0.30.0b3 before 0.54.0, the PlainTextDiff.ts createHeader() method passes Git filenames directly to innerHTML when rendering renamed files in commit history, allowing a crafted filename to execute JavaScript when a victim views the rename diff in the Git History tab. This issue is fixed in version 0.54.0.

Affected Systems

JupyterLab Git extension for the JupyterLab platform. Versions from 0.30.0b3 up to, but not including, 0.54.0 are impacted. Affected builds include all publicly released releases in that range.

Risk and Exploitability

The CVSS score of 9.3 places this flaw in the critical range, indicating a high potential impact for confidentiality, integrity, and availability. The EPSS score of < 1% indicates a very low probability of exploitation, and the flaw is not in the CISA KEV catalog, suggesting it has not yet been widely exploited. The attack vector is likely a crafted repository containing a malicious filename; any user who opens the Git History tab for that repository will trigger the code. This path requires no elevated privileges beyond normal user access to the targeted JupyterLab instance, making exploitation considerably easy once the vulnerable extension is installed.

Generated by OpenCVE AI on July 26, 2026 at 16:49 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the JupyterLab Git extension to version 0.54.0 or later to apply the official fix.
  • If updating is not immediately possible, disable the Git History feature or remove the jupyterlab-git plugin to eliminate the edge that allows unescaped filenames from being displayed.
  • As an additional protective measure, configure a Content Security Policy that blocks inline scripts for the JupyterLab web application to prevent execution of injected code.

Generated by OpenCVE AI on July 26, 2026 at 16:49 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-f962-v9hr-pfg5 jupyterlab-git extension: Stored XSS leading to RCE
History

Fri, 10 Jul 2026 09:30:00 +0000

Type Values Removed Values Added
First Time appeared Jupyter
Jupyter jupyterlab
Vendors & Products Jupyter
Jupyter jupyterlab

Thu, 09 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 08 Jul 2026 21:15:00 +0000

Type Values Removed Values Added
Description JupyterLab Git is a Git extension for JupyterLab. From 0.30.0b3 before 0.54.0, the PlainTextDiff.ts createHeader() method passes Git filenames directly to innerHTML when rendering renamed files in commit history, allowing a crafted filename to execute JavaScript when a victim views the rename diff in the Git History tab. This issue is fixed in version 0.54.0.
Title JupyterLab Git: Stored XSS leading to RCE
Weaknesses CWE-79
References
Metrics cvssV4_0

{'score': 9.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H'}


Subscriptions

Jupyter Jupyterlab
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-09T14:16:09.781Z

Reserved: 2026-06-15T18:40:01.651Z

Link: CVE-2026-54527

cve-icon Vulnrichment

Updated: 2026-07-09T14:15:39.992Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-26T17:00:14Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')