CVE-2026-102830
published 2026-09-29CVE-2026-102830: JupyterLab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook Architecture. From JupyterLab 3.0.0 until…
PriorityP337medium6.8CVSS 3.1
AVNACHPRNUIRSUCHIHAN
EPSS
0.26%
17.4th percentile
JupyterLab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook Architecture. From JupyterLab 3.0.0 until 4.5.11 and 4.6.4, and in JupyterLite Core 0.8.3 and earlier, the Plural-Forms header in a selected third-party language pack can append JavaScript after a valid plural rule because prefix-only regular-expression validation accepts a matching prefix without requiring the entire header to match. JupyterLab passes the accepted expression to new Function, so loading the catalogue and translating a plural string executes the appended code in the authenticated JupyterLab origin. Where Jupyter Server kernels, terminals, and APIs are exposed, the code can use authenticated server APIs to read or modify files and run code. Impact is much more limited in JupyterLite because it typically lacks most exposed Jupyter Server surfaces. The default English locale is unaffected because it does not load a translation catalogue. This issue is fixed in JupyterLab 4.5.11 and 4.6.4 and JupyterLite Core 0.8.4.
Affected
27 ranges· showing 25
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| jupyterlab | jupyterlab | — | — |
| jupyterlab | jupyterlab | — | — |
| jupyterlab | jupyterlab | >= 3.0.0 < 4.5.11 | 4.5.11 |
| jupyterlab | jupyterlab | >= 4.6.0 < 4.6.4 | 4.6.4 |
| jupyterlab | jupyterlite-core | < 0.8.4 | 0.8.4 |
| jupyterlab | jupyterlite-core | >= 0 < 0.8.4 | 0.8.4 |
| mta | mta-solution-server-rhel9 | — | — |
| rhoai | odh-feature-server-rhel9 | — | — |
| rhoai | odh-th-torch-cpu-py312-rhel9 | — | — |
| rhoai | odh-th-torch-cuda-py312-rhel9 | — | — |
| rhoai | odh-th-torch-rocm-py312-rhel9 | — | — |
| rhoai | odh-th06-cpu-torch210-py312-rhel9 | — | — |
| rhoai | odh-th06-cpu-torch291-py312-rhel9 | — | — |
| rhoai | odh-th06-cuda130-torch210-py312-rhel9 | — | — |
| rhoai | odh-th06-cuda130-torch291-py312-rhel9 | — | — |
| rhoai | odh-th06-rocm64-torch291-py312-rhel9 | — | — |
| rhoai | odh-workbench-codeserver-datascience-cpu-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-datascience-cpu-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-minimal-cpu-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-minimal-cuda-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-minimal-rocm-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-pytorch-cuda-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-pytorch-rocm-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-tensorflow-cuda-py312-rhel9 | — | — |
CVSS provenance
nvdv3.16.8MEDIUMCVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N
vendor_redhat6.8MEDIUM
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
GHSA
JupyterLab: Cross-site scripting (XSS) in JupyterLab via crafted language package (jupyterlab.json)
ghsa·2026-10-01
CVE-2026-102830 [MEDIUM] CWE-625 JupyterLab: Cross-site scripting (XSS) in JupyterLab via crafted language package (jupyterlab.json)
JupyterLab: Cross-site scripting (XSS) in JupyterLab via crafted language package (jupyterlab.json)
## Description
A language pack ships a `Plural-Forms` header saying how the language counts, for example `nplurals=2; plural=(n != 1);`. JupyterLab turns that string into a function with `new Function`, so the header gets executed. The check that meant to keep it safe was a regular expression. The regex was anchored at the start but not at the end, so it accepted any string that began with a valid plural rule and ignored everything after it.
A header such as the following passed the check, and the part after the plural rule ran in the JupyterLab page as soon as the first plural string was translated:
```
nplurals=2; plural=(n > 1);
```
Users are affected if all of the following are true
Red Hat
jupyterlab: jupyterlite-core: JupyterLab: Arbitrary code execution via crafted language pack
vendor_redhat·2026-09-29·CVSS 6.8
CVE-2026-102830 [MEDIUM] CWE-94 jupyterlab: jupyterlite-core: JupyterLab: Arbitrary code execution via crafted language pack
jupyterlab: jupyterlite-core: JupyterLab: Arbitrary code execution via crafted language pack
A flaw was found in JupyterLab. Incomplete validation of language pack headers allows arbitrary JavaScript code to be injected and executed during string translation. An attacker could exploit this flaw by enticing a user to load a malicious third-party language pack, resulting in code execution within the authenticated user's session. This allows an attacker to interact with exposed server application programming interfaces (APIs) to read or modify files and execute commands.
Package: mta/mta-solution-server-rhel9 (Migration Toolkit for Applications 8) - Out of support scope
Package: rhoai/odh-feature-server-rhel9 (Red Hat OpenShift AI (RHOAI)) - Fix deferred
Package: rhoai/odh-th06-cpu-torch2
No detection rules found.
No public exploits indexed.
https://github.com/jupyterlab/jupyterlab/commit/985a3223cd77fd4f991cd90066342a90711d70f6https://github.com/jupyterlab/jupyterlab/commit/de324ae91346c713c4f5e5485f97b6e914e0f774https://github.com/jupyterlab/jupyterlab/commit/f9de43dc565a1118120d466117f877a189a4ce90https://github.com/jupyterlab/jupyterlab/releases/tag/v4.5.11https://github.com/jupyterlab/jupyterlab/releases/tag/v4.6.4https://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-3jqq-pw4j-pqcj
2026-09-29
Published