CVE-2026-102831
validatedZero produced an exploit or a check.GHSA-6966-vjj6-99xv ↗EUVD-2026-89338 ↗
description
JupyterLab 4.5.0 through 4.6.3 can run attacker-supplied script in the current user's JupyterLab session when a malicious code-cell representation is pasted from the system clipboard. This requires attacker-controlled clipboard content and a cell paste action; on 4.5.2 and later, system clipboard support must be enabled and pasted code-cell outputs must be retained. Applications bundling the affected component, including Notebook 7.5 and later, may also be exposed.
mitigation
Upgrade JupyterLab to 4.6.4 or 4.5.11, Notebook to 7.6.3, and jupyterlite-core to 0.8.4 as applicable. Until upgraded, disable system clipboard use for cells where supported, or configure code-cell pastes to discard outputs.
fixed in 4.6.4, 4.5.11, 7.6.3, 0.8.4
outcome
Check only, differential: the check fires on the vulnerable build and is silent on the patched one.
source signals
Public signals that triggered or updated the pipeline. These are inputs for the deltas above.
- 2026-09-29 18:58Zghsa: trigger signal, started the run
- 2026-09-29 18:58Zcve.org record for CVE-2026-102831
this entry in the feed
GET /api/v1/feed/CVE-2026-102831
{ "etk_id": "ETK-2026-137", "cve_id": "CVE-2026-102831", "display_id": "CVE-2026-102831", "ghsa_id": "GHSA-6966-vjj6-99xv", "euvd_id": "EUVD-2026-89338", "status": "published", "anchor_state": "anchored", "title": "Clipboard trusted-output XSS in JupyterLab", "summary": "JupyterLab 4.5.0 through 4.6.3 can run attacker-supplied script in the current user's JupyterLab session when a malicious code-cell representation is pasted from the system clipboard. This requires attacker-controlled clipboard content and a cell paste action; on 4.5.2 and later, system clipboard support must be enabled and pasted code-cell outputs must be retained. Applications bundling the affected component, including Notebook 7.5 and later, may also be exposed.", "mitigation": "Upgrade JupyterLab to 4.6.4 or 4.5.11, Notebook to 7.6.3, and jupyterlite-core to 0.8.4 as applicable. Until upgraded, disable system clipboard use for cells where supported, or configure code-cell pastes to discard outputs.", "vendor": "pip", "product": "pip:jupyterlab", "affected": [ { "affected_notes": [], "affected_ranges": [ ">=4.6.0, <=4.6.3" ], "ecosystem": "pip", "fixed_versions": [ "4.6.4" ], "package_name": "jupyterlab", "purl": "pkg:pypi/jupyterlab" }, { "affected_notes": [], "affected_ranges": [ ">=4.5.0, <=4.5.10" ], "ecosystem": "pip", "fixed_versions": [ "4.5.11" ], "package_name": "jupyterlab", "purl": "pkg:pypi/jupyterlab" }, { "affected_notes": [], "affected_ranges": [ ">=7.5.0, <=7.6.2" ], "ecosystem": "pip", "fixed_versions": [ "7.6.3" ], "package_name": "notebook", "purl": "pkg:pypi/notebook" }, { "affected_notes": [], "affected_ranges": [ ">=0.7.0, <=0.8.3" ], "ecosystem": "pip", "fixed_versions": [ "0.8.4" ], "package_name": "jupyterlite-core", "purl": "pkg:pypi/jupyterlite-core" } ], "cwes": [ 79 ], "cvss_score": 8.1, "cvss_src": "cna_vendor", "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N", "epss_score": 0.002, "epss_percentile": 0.0875, "epss_asof": "2026-10-20", "automation": "deterministic", "check": true, "check_confidence_basis": "differential", "exploit": false, "pipeline_minutes": 20.440558316666667, "t0_at": "2026-09-29T18:58:03.634000+00:00", "signals": { "check": { "at": "2026-09-30T18:34:56.162438+00:00", "days": 0.9839413013657408, "is_lower_bound": false, "measured_at": "2026-09-29T18:58:03.634000+00:00", "url": null }, "trigger_signal": { "at": "2026-09-29T18:58:03.634000+00:00", "days": 0, "is_lower_bound": false, "measured_at": "2026-09-29T18:58:03.634000+00:00", "url": "https://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-6966-vjj6-99xv" } } }
published 2026-09-30 18:12Z
last change 2026-10-21 04:45Z
Need the technical details behind an entry?
Every entry here shows what we attempted and when. The technical details, the generated exploit that fired it and the evidence behind the verdict are not public. Tell us about your use case and we’ll get back to you about extended API access.