CVE-2026-40110 jupyter-server CORS origin validation bypass via unanchored regex in allow_origin_pat
Attackers can bypass CORS restrictions in Jupyter Server by exploiting unanchored regex patterns, allowing cross-origin requests from malicious domains.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2026-40110?
CVE-2026-40110 is a high-severity vulnerability in jupyter-server jupyter_server, published on 5 May 2026. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Official 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.
Which versions are affected by CVE-2026-40110?
3 open source packages ship an affected version, including jupyter-server. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
jupyter-server PyPI | All versions | 2.18.0 |
jupyter-server PyPI | All versions | 2.18.0 |
jupyter-server PyPI | All versions | 2.18.0 |
Products include Jupyter Jupyter Server.
How do I fix CVE-2026-40110?
Upgrade jupyter-server to 2.18.0 or later.
Is CVE-2026-40110 being exploited?
There is no known exploitation of CVE-2026-40110 in the wild and no public exploit code.
Other vulnerabilities in jupyter-server jupyter_server
- CVE-2026-44727 Jupyter Server: Stored XSS in `NbconvertFileHandler` / `NbconvertPostHandler` via missing `sandbox` CSP
- CVE-2026-35397 jupyter-server path traversal allows access to sibling directories sharing root_dir name prefix
- CVE-2026-40934 jupyter-server authentication cookies remain valid after password reset due to static cookie secret
- CVE-2024-35178 Jupyter server on Windows discloses Windows user password hash
- CVE-2022-24757 Sensitive Auth & Cookie data stored in Jupyter server logs
Sources
Also known as CLEANSTART-2026-HL28418, CLEANSTART-2026-QY94388, DEBIAN-CVE-2026-40110, GHSA-24qx-w28j-9m6p, PYSEC-2026-2187, UBUNTU-CVE-2026-40110.