CVE-2026-102904
Description
A flaw was found in JupyterLab. When processing extension uninstallation requests, user-supplied package names are passed to the underlying package manager without properly filtering command-line options. An authenticated user with extension management access can exploit this argument injection flaw to read local server files, access internal network addresses, or overwrite files with generated log text.
Statement
A moderate-impact argument injection flaw in JupyterLab affects Red Hat OpenShift AI, which ships the vulnerable JupyterLab releases in its workbench and distributed-workload notebook images, and the Migration Toolkit for Applications 8.1 solution server image, which also ships JupyterLab. When JupyterLab processes an extension uninstallation request through the PyPI Extension Manager, the user-supplied extension name is passed to python -m pip uninstall without rejecting option-like values. An authenticated user permitted to call the extension API can exploit this to inject pip command-line options: a requirements option such as -r makes the server read a local file or fetch an internal URL, with pip's reflected parse error returning the first unparsable line and the path to the requester, and a log option such as --log can create or corrupt a chosen path with pip-generated log text. The requester cannot choose which line of a file is disclosed and cannot write content of their choosing, and the injection adds no code execution or availability impact beyond what the extension manager already permits. The issue has security implications only where the PyPI Extension Manager is enabled, the account can call the extension API, and kernels and terminals are disabled or delegated to remote hosts; otherwise such users can already read the same files and make the same outbound requests directly. Red Hat rates this flaw Moderate with a CVSS 3.1 score of 5.4, matching the upstream severity. Because the impact is Moderate with a CVSS score below 7.0, fixes for the affected Red Hat OpenShift AI components are deferred, leaving a residual risk of local file disclosure, internal network probing, and pip log file corruption by authenticated users with extension API access. The affected Migration Toolkit for Applications 8.1 stream is out of support scope.
Mitigation
Upstream provides a workaround: deployments can disable programmatic extension installation and removal entirely by switching JupyterLab to the read-only extension manager, either by starting the server with the `--LabApp.extension_manager=readonly` command-line option or by setting the traitlet `c.LabApp.extension_manager = 'readonly'` in the JupyterLab configuration file. Because exploitation requires an authenticated account able to call the extension API, restricting extension API access to trusted accounts also reduces exposure. This issue is fixed upstream in JupyterLab 4.5.11 and 4.6.4; the fix for the affected Red Hat OpenShift AI components is deferred, so the read-only extension manager remains the available mitigation in the interim.
Common Vulnerability Scoring System (CVSS) Score Details
Info alert:Important note
CVSS scores for open source components depend on vendor-specific factors (e.g. version or build chain). Therefore, Red Hat's score and impact rating can be different from NVD and other vendors. Red Hat remains the authoritative CVE Naming Authority (CNA) source for its products and services (see Red Hat classifications).
The following CVSS metrics and score provided are preliminary and subject to review.
CVSS v3 Score Breakdown
| Red Hat | NVD | cve.org | |
|---|---|---|---|
| Base Score | 5.4 | N/A | 5.4 |
| Attack Vector | Network | N/A | Network |
| Attack Complexity | Low | N/A | Low |
| Privileges Required | Low | N/A | Low |
| User Interaction | None | N/A | None |
| Scope | Unchanged | N/A | Unchanged |
| Confidentiality | Low | N/A | Low |
| Integrity Impact | Low | N/A | Low |
| Availability Impact | None | N/A | None |
Vector
Red Hat: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
cve.org: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
Understanding the Weakness (CWE)
Confidentiality,Integrity,Availability,Other
Technical Impact: Execute Unauthorized Code or Commands; Alter Execution Logic; Read Application Data; Modify Application Data
If an attacker can provide an untrusted input that contains argument-separating delimiters, then the resulting command will have more arguments than intended by the developer, potentially changing the expected behavior of the command. Depending on the functionality supported by the extraneous arguments, this may have security-relevant consequences. The attacker could include arguments that allow unintended commands or code to be executed, allow sensitive data to be read or modified, or cause other unintended behavior.
Frequently Asked Questions
Not sure what something means? Check out our Security Glossary.
Want to get errata notifications? Sign up here.