Executive brief
JupyterLab Git is an extension that allows users to manage Git repositories directly within the JupyterLab interface. A security flaw in how the extension handles file path restrictions allows authenticated users to bypass access controls on systems with case-insensitive filesystems (such as Windows or macOS). By simply changing the capitalization of a folder name in a web request, an attacker can view sensitive files, git history, and source code that administrators intended to keep hidden.
Technical details
The vulnerability exists in the GitHandler.prepare() method within jupyterlab_git/handlers.py. The extension uses fnmatch.fnmatchcase() to validate requested paths against an admin-defined 'excluded_paths' list. Because fnmatchcase() is strictly case-sensitive, it fails to block requests where the path casing is modified (e.g., '/Secrets/' instead of '/secrets/'). On case-insensitive filesystems like NTFS (Windows) or APFS (macOS), these varied paths resolve to the same underlying directory. An authenticated attacker can exploit this to bypass security controls and access the /content, /status, and /diff endpoints for restricted directories. The issue is resolved in version 0.54.0 by implementing case-folding during the comparison.
Affected products
- jupyterlab jupyterlab-git < 0.54.0
Timeline
- 2026-06-17: patched: Version 0.54.0 released
- 2026-06-18: advisory: GitHub Security Advisory published
- 2026-07-08: disclosed: CVE published to NVD