Description
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.
Published: 2026-09-29
Score: 6.8 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Remote code execution
Action: Immediate Patch
AI Analysis

Impact

The vulnerability is a cross‑site scripting flaw in JupyterLab that occurs when a third‑party language pack contains a malformed Plural‑Forms header. The header is parsed and passes prefix‑only validation, allowing an attacker to embed JavaScript that the application executes through a new Function call. Because the code runs in the authenticated JupyterLab origin, it can call server APIs to read or modify files and execute code, effectively granting remote code execution within the user's context. This attack is limited in JupyterLite because the environment generally lacks exposed server surfaces.

Affected Systems

The flaw affects JupyterLab versions from 3.0.0 up to and including 4.5.11 and 4.6.4, as well as JupyterLite Core 0.8.3 and earlier. Users of the default English locale are not impacted because it does not load a translation catalogue. The affected products are the JupyterLab platform and JupyterLite Core, both provided by the jupyterlab organization.

Risk and Exploitability

The CVSS score of 6.8 indicates a medium severity, but the lack of an EPSS score means the probability of exploitation is not publicly quantified. The vulnerability is not listed in the CISA KEV catalog, reducing its visibility among known exploits. The attack vector is likely local, requiring a malicious language pack to be placed in a user’s environment, or a supply‑chain compromise that injects malicious code into a legitimate package. Once the pluggable language pack is loaded, the embedded JavaScript is executed, providing the attacker a foothold to use authenticated server APIs.

Generated by OpenCVE AI on September 29, 2026 at 22:06 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to JupyterLab 4.5.11 or later (or 4.6.4) and to JupyterLite Core 0.8.4 or later.
  • Remove any untrusted or custom language packages from your installation before upgrading.
  • If you cannot upgrade immediately, disable the loading of third‑party language packs or enforce strict validation of the Plural‑Forms header.

Generated by OpenCVE AI on September 29, 2026 at 22:06 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-3jqq-pw4j-pqcj JupyterLab: Cross-site scripting (XSS) in JupyterLab via crafted language package (jupyterlab.json)
History

Wed, 30 Sep 2026 20:45:00 +0000

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

Wed, 30 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Moderate


Tue, 29 Sep 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Tue, 29 Sep 2026 19:00:00 +0000

Type Values Removed Values Added
Description 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.
Title JupyterLab: Cross-site scripting (XSS) in JupyterLab via crafted language package (jupyterlab.json)
Weaknesses CWE-79
CWE-94
References
Metrics cvssV3_1

{'score': 6.8, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N'}


Subscriptions

Jupyter Jupyter Core Jupyterlab
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-29T20:00:25.547Z

Reserved: 2026-09-29T17:25:25.265Z

Link: CVE-2026-102830

cve-icon Vulnrichment

Updated: 2026-09-29T20:00:17.309Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-29T19:17:25.527

Modified: 2026-09-29T21:40:15.583

Link: CVE-2026-102830

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-29T18:53:19Z

Links: CVE-2026-102830 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-30T20:30:18Z

Weaknesses
  • CWE-79

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

  • CWE-94

    Improper Control of Generation of Code ('Code Injection')