Skip to content
Heist/ feed
Back to feed
MediumFix available

JupyterLab: Command link trust prompt in JupyterLab can trust a document other than the one clicked

Type: advisorySources: OSV

## Description A Markdown file or a notebook output can carry a button that runs a JupyterLab command. Since 4.5.7 the first click on such a button opens a prompt naming the command, with Cancel, Run Once and Trust. Choosing Trust runs the command and marks the document trusted, so its later buttons run without a prompt. Which document gets marked is decided when the user answers, not when they click. Both trust commands read whichever document is current at that moment: `markdownviewer:trust` uses `tracker.currentWidget`, and `notebook:trust` uses the equivalent lookup. If another document becomes current while the prompt is open, that document is the one marked trusted, and the one the user was looking at stays untrusted. Users are affected if all of the following are true: - they run JupyterLab 4.5.7 through 4.6.3, or an application that bundles it such as Notebook 7.5+; - they open a Markdown file or notebook from someone else and click a button in it; - they answer Trust rather than Cancel or Run Once; and - a second document becomes the current one while the prompt is open, for example through a workspace restoring at startup, an extension activating a widget, or a command that opens a file ### Impact The user loses control over which document they trusted. Every button in the document that was (incorrectly) marked as trusted runs from then on without a prompt, so if that document also came from an untrusted source, its buttons fire on a single click with no confirmatio

Products
jupyterlab, jupyterlite-core, notebook
Affected versions
0.7.5, 0.7.6, 0.8.0, 0.8.0a0, 0.8.0a1, 0.8.0a2, 0.8.0b0, 0.8.0b1, 0.8.0rc0, 0.8.1, 0.8.2, 0.8.3, 4.5.10, 4.5.7, 4.5.8, 4.5.9, 4.6.0, 4.6.1, 4.6.2, 4.6.3, 7.5.6, 7.5.7, 7.5.8, 7.6.0, 7.6.0a0, 7.6.0a1, 7.6.0a2, 7.6.0a3, 7.6.0a4, 7.6.0a5, 7.6.0b0, 7.6.0b1, 7.6.0rc0, 7.6.0rc1, 7.6.1, 7.6.2
Fixed versions
0.8.4, 4.5.11, 4.6.4, 7.6.3
CVEs
CVE-2026-102832
Confirmed fixed CVEs
Not specified
Updated in this feed
30 Oct 2026, 19:14 UTC · Revision 1

Source evidence

JupyterLab: Command link trust prompt in JupyterLab can trust a document other than the one clicked

core-osv · Original source

Published 15 Oct 2026, 20:22 UTC

## Description A Markdown file or a notebook output can carry a button that runs a JupyterLab command. Since 4.5.7 the first click on such a button opens a prompt naming the command, with Cancel, Run Once and Trust. Choosing Trust runs the command and marks the document trusted, so its later buttons run without a prompt. Which document gets marked is decided when the user answers, not when they click. Both trust commands read whichever document is current at that moment: `markdownviewer:trust` uses `tracker.currentWidget`, and `notebook:trust` uses the equivalent lookup. If another document becomes current while the prompt is open, that document is the one marked trusted, and the one the user was looking at stays untrusted. Users are affected if all of the following are true: - they run JupyterLab 4.5.7 through 4.6.3, or an application that bundles it such as Notebook 7.5+; - they open a Markdown file or notebook from someone else and click a button in it; - they answer Trust rather than Cancel or Run Once; and - a second document becomes the current one while the prompt is open, for example through a workspace restoring at startup, an extension activating a widget, or a command that opens a file ### Impact The user loses control over which document they trusted. Every button in the document that was (incorrectly) marked as trusted runs from then on without a prompt, so if that document also came from an untrusted source, its buttons fire on a single click with no confirmatio

osv:GHSA-jwrc-gm9j-263p

jupyterlab

Fixed versions: 4.6.4

jupyterlab

Fixed versions: 4.5.11

notebook

Fixed versions: 7.6.3

jupyterlite-core

Fixed versions: 0.8.4

Complete source record
{
  "id": "9f52dc5280eadeea20e499cea226e4b515c45dc0807a678ce56a65277b0f32a9",
  "url": "https://osv.dev/vulnerability/GHSA-jwrc-gm9j-263p",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "JupyterLab: Command link trust prompt in JupyterLab can trust a document other than the one clicked",
    "summary": "## Description A Markdown file or a notebook output can carry a button that runs a JupyterLab command. Since 4.5.7 the first click on such a button opens a prompt naming the command, with Cancel, Run Once and Trust. Choosing Trust runs the command and marks the document trusted, so its later buttons run without a prompt. Which document gets marked is decided when the user answers, not when they click. Both trust commands read whichever document is current at that moment: `markdownviewer:trust` uses `tracker.currentWidget`, and `notebook:trust` uses the equivalent lookup. If another document becomes current while the prompt is open, that document is the one marked trusted, and the one the user was looking at stays untrusted. Users are affected if all of the following are true: - they run JupyterLab 4.5.7 through 4.6.3, or an application that bundles it such as Notebook 7.5+; - they open a Markdown file or notebook from someone else and click a button in it; - they answer Trust rather than Cancel or Run Once; and - a second document becomes the current one while the prompt is open, for example through a workspace restoring at startup, an extension activating a widget, or a command that opens a file ### Impact The user loses control over which document they trusted. Every button in the document that was (incorrectly) marked as trusted runs from then on without a prompt, so if that document also came from an untrusted source, its buttons fire on a single click with no confirmatio",
    "evidence": "osv:GHSA-jwrc-gm9j-263p",
    "products": [
      {
        "name": {
          "value": "jupyterlab",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "4.6.4",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "4.6.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "4.6.1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "4.6.2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "4.6.3",
            "evidence": "/affected/0/versions"
          }
        ]
      },
      {
        "name": {
          "value": "jupyterlab",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "4.5.11",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "4.5.10",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "4.5.7",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "4.5.8",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "4.5.9",
            "evidence": "/affected/1/versions"
          }
        ]
      },
      {
        "name": {
          "value": "notebook",
          "evidence": "/affected/2/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "7.6.3",
            "evidence": "/affected/2/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "7.5.6",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.5.7",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.5.8",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0a0",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0a1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0a2",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0a3",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0a4",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0a5",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0b0",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0b1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0rc0",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.0rc1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "7.6.2",
            "evidence": "/affected/2/versions"
          }
        ]
      },
      {
        "name": {
          "value": "jupyterlite-core",
          "evidence": "/affected/3/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "0.8.4",
            "evidence": "/affected/3/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "0.7.5",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.7.6",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.8.0",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.8.0a0",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.8.0a1",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.8.0a2",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.8.0b0",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.8.0b1",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.8.0rc0",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.8.1",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.8.2",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "0.8.3",
            "evidence": "/affected/3/versions"
          }
        ]
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "GHSA-jwrc-gm9j-263p",
      "aliases": [
        "CVE-2026-102832",
        "GHSA-jwrc-gm9j-263p"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "4.6.0"
                },
                {
                  "fixed": "4.6.4"
                }
              ]
            }
          ],
          "package": {
            "name": "jupyterlab",
            "purl": "pkg:pypi/jupyterlab",
            "ecosystem": "PyPI"
          },
          "versions": [
            "4.6.0",
            "4.6.1",
            "4.6.2",
            "4.6.3"
          ],
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-jwrc-gm9j-263p/GHSA-jwrc-gm9j-263p.json",
            "last_known_affected_version_range": "<= 4.6.3"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "4.5.7"
                },
                {
                  "fixed": "4.5.11"
                }
              ]
            }
          ],
          "package": {
            "name": "jupyterlab",
            "purl": "pkg:pypi/jupyterlab",
            "ecosystem": "PyPI"
          },
          "versions": [
            "4.5.10",
            "4.5.7",
            "4.5.8",
            "4.5.9"
          ],
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-jwrc-gm9j-263p/GHSA-jwrc-gm9j-263p.json",
            "last_known_affected_version_range": "<= 4.5.10"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "7.5.6"
                },
                {
                  "fixed": "7.6.3"
                }
              ]
            }
          ],
          "package": {
            "name": "notebook",
            "purl": "pkg:pypi/notebook",
            "ecosystem": "PyPI"
          },
          "versions": [
            "7.5.6",
            "7.5.7",
            "7.5.8",
            "7.6.0",
            "7.6.0a0",
            "7.6.0a1",
            "7.6.0a2",
            "7.6.0a3",
            "7.6.0a4",
            "7.6.0a5",
            "7.6.0b0",
            "7.6.0b1",
            "7.6.0rc0",
            "7.6.0rc1",
            "7.6.1",
            "7.6.2"
          ],
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-jwrc-gm9j-263p/GHSA-jwrc-gm9j-263p.json",
            "last_known_affected_version_range": "<= 7.6.2"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0.7.5"
                },
                {
                  "fixed": "0.8.4"
                }
              ]
            }
          ],
          "package": {
            "name": "jupyterlite-core",
            "purl": "pkg:pypi/jupyterlite-core",
            "ecosystem": "PyPI"
          },
          "versions": [
            "0.7.5",
            "0.7.6",
            "0.8.0",
            "0.8.0a0",
            "0.8.0a1",
            "0.8.0a2",
            "0.8.0b0",
            "0.8.0b1",
            "0.8.0rc0",
            "0.8.1",
            "0.8.2",
            "0.8.3"
          ],
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-jwrc-gm9j-263p/GHSA-jwrc-gm9j-263p.json",
            "last_known_affected_version_range": "<= 0.8.3"
          }
        }
      ],
      "modified": "2026-10-15T20:30:07.110246844Z",
      "provider": "osv",
      "references": [
        "https://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-jwrc-gm9j-263p",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-102832",
        "https://github.com/jupyterlab/jupyterlab/commit/0fc18ab4ef67e431a8f6560e387193baf786c70a",
        "https://github.com/jupyterlab/jupyterlab/commit/b64bc88b8ca034cf158604a5cc48ca9170ea453b",
        "https://github.com/jupyterlab/jupyterlab/commit/f7e5f9803fdf2aaaa0e9bfb9cc73386a8cc5f0b2",
        "https://github.com/jupyterlab/jupyterlab",
        "https://github.com/jupyterlab/jupyterlab/releases/tag/v4.5.11",
        "https://github.com/jupyterlab/jupyterlab/releases/tag/v4.6.4"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-367",
          "CWE-863"
        ],
        "severity": "MODERATE",
        "github_reviewed": true,
        "nvd_published_at": "2026-10-13T16:17:09Z",
        "github_reviewed_at": "2026-10-15T20:22:13Z"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-102832",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 336055,
  "published_at": "2026-10-15T20:22:13+00:00"
}