CVE-2026-40110

HIGH

jupyter-server CORS origin validation bypass via unanchored regex in allow_origin_pat

Title source: cna
STIX 2.1

Description

Jupyter Server is the backend for Jupyter web applications. In versions 2.17.0 and earlier, the Origin header validation uses Python's re.match() to check incoming origins against the allow_origin_pat configuration value. Because re.match() only anchors at the start of the string and does not require a full match, a pattern intended to match only a trusted domain (e.g., trusted.example.com) will also match any origin that begins with that domain followed by additional characters (e.g., trusted.example.com.evil.com). An attacker who controls such a domain can bypass the CORS origin restriction and make cross-origin requests to the Jupyter Server API from an untrusted site. This issue has been fixed in version 2.18.0.

Scores

CVSS v3 7.3
EPSS 0.0003
EPSS Percentile 8.3%
Attack Vector NETWORK
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N

CISA SSVC

Vulnrichment
Exploitation none
Automatable no
Technical Impact total

Details

CWE
CWE-777
Status published
Products (3)
jupyter/jupyter_server < 2.18.0
jupyter-server/jupyter_server <= 2.17.0
pypi/jupyter-server 0 - 2.18.0PyPI
Published May 05, 2026
Tracked Since May 06, 2026