← Back to CVE Explorer

CVE-2026-40171

Full vulnerability record from the local CVENow database.

Description

In Jupyter Notebook versions 7.0.0 through 7.5.5, JupyterLab versions 4.5.6 and earlier, and the corresponding @jupyter-notebook/help-extension and @jupyterlab/help-extension packages before 7.5.6 and 4.5.7, a stored cross-site scripting issue in the help command linker can be chained with attacker-controlled notebook content to steal authentication tokens with a single click. An attacker can craft a malicious notebook file containing elements that appear indistinguishable from legitimate controls and trigger execution when a user interacts with them. Successful exploitation allows theft of the user's authentication token and complete takeover of the Jupyter session through the REST API, including reading files, creating or modifying files, accessing kernels to execute arbitrary code, and creating terminals for shell access. This issue has been fixed in Notebook 7.5.6, JupyterLab 4.5.7, @jupyter-notebook/help-extension 7.5.6, and @jupyterlab/help-extension 4.5.7. As a workaround, disable the affected help extensions or set allowCommandLinker to false in the sanitizer configuration.

Severity
HIGH
CVSS score
8.4 (v4.0)
Vulnerability status
Awaiting Analysis
Source identifier
Published
2026-05-06 20:16:31.857000
Last modified
2026-10-26 19:10:00.163000
View original CVE JSON
{
  "id": "CVE-2026-40171",
  "sourceIdentifier": "[email protected]",
  "published": "2026-05-06T20:16:31.857",
  "lastModified": "2026-10-26T19:10:00.163",
  "vulnStatus": "Awaiting Analysis",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In Jupyter Notebook versions 7.0.0 through 7.5.5, JupyterLab versions 4.5.6 and earlier, and the corresponding @jupyter-notebook/help-extension and @jupyterlab/help-extension packages before 7.5.6 and 4.5.7, a stored cross-site scripting issue in the help command linker can be chained with attacker-controlled notebook content to steal authentication tokens with a single click.\n\nAn attacker can craft a malicious notebook file containing elements that appear indistinguishable from legitimate controls and trigger execution when a user interacts with them. Successful exploitation allows theft of the user's authentication token and complete takeover of the Jupyter session through the REST API, including reading files, creating or modifying files, accessing kernels to execute arbitrary code, and creating terminals for shell access. This issue has been fixed in Notebook 7.5.6, JupyterLab 4.5.7, @jupyter-notebook/help-extension 7.5.6, and @jupyterlab/help-extension 4.5.7. As a workaround, disable the affected help extensions or set allowCommandLinker to false in the sanitizer configuration."
    },
    {
      "lang": "es",
      "value": "En las versiones de Jupyter Notebook 7.0.0 a 7.5.5, las versiones de JupyterLab 4.5.6 y anteriores, y los paquetes correspondientes @jupyter-notebook/help-extension y @jupyterlab/help-extension anteriores a 7.5.6 y 4.5.7, un problema de cross-site scripting almacenado en el enlazador de comandos de ayuda puede encadenarse con contenido de notebook controlado por el atacante para robar tokens de autenticación con un solo clic.\n\nUn atacante puede crear un archivo de notebook malicioso que contenga elementos que parezcan indistinguibles de los controles legítimos y activar la ejecución cuando un usuario interactúa con ellos. La explotación exitosa permite el robo del token de autenticación del usuario y la toma de control completa de la sesión de Jupyter a través de la API REST, incluyendo la lectura de archivos, la creación o modificación de archivos, el acceso a kernels para ejecutar código arbitrario y la creación de terminales para acceso a la shell. Este problema ha sido solucionado en Notebook 7.5.6, JupyterLab 4.5.7, @jupyter-notebook/help-extension 7.5.6 y @jupyterlab/help-extension 4.5.7. Como solución alternativa, deshabilite las extensiones de ayuda afectadas o establezca allowCommandLinker en false en la configuración del saneador."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "jupyter",
          "product": "notebook",
          "versions": [
            {
              "version": ">=7.0.0, <= 7.5.5",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "jupyterlab",
          "product": "help-extension",
          "versions": [
            {
              "version": "<=4.5.6",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "jupyterlab",
          "product": "jupyterlab",
          "versions": [
            {
              "version": "<= 4.5.6",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "jupyter-notebook",
          "product": "help-extension",
          "versions": [
            {
              "version": ">=7.0.0,<= 7.5.5",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV40": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "4.0",
          "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
          "baseScore": 8.4,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "attackRequirements": "NONE",
          "privilegesRequired": "HIGH",
          "userInteraction": "ACTIVE",
          "vulnConfidentialityImpact": "HIGH",
          "vulnIntegrityImpact": "HIGH",
          "vulnAvailabilityImpact": "HIGH",
          "subConfidentialityImpact": "NONE",
          "subIntegrityImpact": "NONE",
          "subAvailabilityImpact": "NONE",
          "exploitMaturity": "NOT_DEFINED",
          "confidentialityRequirement": "NOT_DEFINED",
          "integrityRequirement": "NOT_DEFINED",
          "availabilityRequirement": "NOT_DEFINED",
          "modifiedAttackVector": "NOT_DEFINED",
          "modifiedAttackComplexity": "NOT_DEFINED",
          "modifiedAttackRequirements": "NOT_DEFINED",
          "modifiedPrivilegesRequired": "NOT_DEFINED",
          "modifiedUserInteraction": "NOT_DEFINED",
          "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
          "modifiedVulnIntegrityImpact": "NOT_DEFINED",
          "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
          "modifiedSubConfidentialityImpact": "NOT_DEFINED",
          "modifiedSubIntegrityImpact": "NOT_DEFINED",
          "modifiedSubAvailabilityImpact": "NOT_DEFINED",
          "Safety": "NOT_DEFINED",
          "Automatable": "NOT_DEFINED",
          "Recovery": "NOT_DEFINED",
          "valueDensity": "NOT_DEFINED",
          "vulnerabilityResponseEffort": "NOT_DEFINED",
          "providerUrgency": "NOT_DEFINED"
        }
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-05-07T00:00:00+00:00",
          "id": "CVE-2026-40171",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-79"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/jupyter/notebook/security/advisories/GHSA-rch3-82jr-f9w9",
      "source": "[email protected]"
    }
  ]
}