CVE-2025-30370: jupyterlab-git has a command injection vulnerability in "Open Git Repository in Terminal"
Overview
On many platforms, a third party can create a Git repository under a name that includes a shell command substitution [^1] string in the syntax $(<command>). These directory names are allowed in macOS and a majority of Linux distributions [^2]. If a user starts jupyter-lab in a parent directory of this inappropriately-named Git repository, opens it, and clicks “Git > Open Git Repository in Terminal” from the menu bar, then the injected command <command> is run in the user’s shell without the user’s permission.
This issue is occurring because when that menu entry is clicked, jupyterlab-git opens the terminal and runs cd <git-repo-path> through the shell to set the current directory [^3]. Doing so runs any command substitution strings present in the directory name, which leads to the command injection issue described here. A previous patch provided an incomplete fix [^4].
References
- github.com/advisories/GHSA-cj5w-8mjf-r5f8
- github.com/jupyterlab/jupyterlab-git
- github.com/jupyterlab/jupyterlab-git/blob/7eb3b06f0092223bd5494688ec264527bbeb2195/src/commandsAndMenu.tsx
- github.com/jupyterlab/jupyterlab-git/commit/b46482993f76d3a546015c6a94ebed8b77fc2376
- github.com/jupyterlab/jupyterlab-git/pull/1196
- github.com/jupyterlab/jupyterlab-git/security/advisories/GHSA-cj5w-8mjf-r5f8
- nvd.nist.gov/vuln/detail/CVE-2025-30370
Code Behaviors & Features
Detect and mitigate CVE-2025-30370 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →