CVE-2026-40110

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

State
Published
Severity
7.6 High
Published
May 5, 2026
Updated
Jul 22, 2026
Reserved
Apr 9, 2026

Read the record on cve.org

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

CVSSScoreVectorSource
4.07.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:L/SC:L/SI:L/SA:LGitHub_M
3.17.1 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:Nredhat-SADP

Weaknesses

  • CWE-777 Regular Expression without Anchors
  • CWE-625 Permissive Regular Expression

Affected Products

ProductVersions
jupyter_serverjupyter-server
  • <= 2.17.0Affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.