CVE-2026-40110 json
jupyter-server CORS origin validation bypass via unanchored regex in allow_origin_pat
published 2026-05-05 6 mo ago modified 2026-09-10 1 mo ago also EUVD-2026-27510 , GHSA-24qx-w28j-9m6p , PYSEC-2026-2187
- cvss
- 7.1
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 24%
- public exploits
- 0
- none known
Summary
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.
Patch / fix
- pypi jupyter-server 2.18.0
- Red Hat Red Hat Migration Toolkit for Applications 8.2 1784109883
- jupyter-server Debian 14 2.20.0-1
debian advisories DEBIAN-CVE-2026-40110
- python-jupyter-server openSUSE Tumbleweed 2.18.1-1.1
opensuse advisories openSUSE-SU-2026:10710-1
- jupyter-server Alpine 3.24 2.18.2-r0
alpine advisories ALPINE-CVE-2026-40110
Alpine secdb © Alpine Linux, from https://secdb.alpinelinux.org via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-40110 updated cvss 7.1
jupyter-server: Jupyter Server: Cross-Origin Resource Sharing (CORS) bypass via improper Origin header validation
-
Red Hat Migration Toolkit for Applications 8.2 mta/mta-solution-server-rhel9 1784109883fixed: vendor fix RHSA-2026:43038
-
Red Hat OpenShift AI 3.3 rhoai/odh-workbench-jupyter-minimal-cpu-py312-rhel9 1790260954, rhoai/odh-workbench-jupyter-minimal-cuda-py312-rhel9 1790072130, rhoai/odh-workbench-jupyter-minimal-rocm-py312-rhel9 1790072109, rhoai/odh-workbench-jupyter-pytorch-cuda-py312-rhel9 1789651387, rhoai/odh-workbench-jupyter-pytorch-rocm-py312-rhel9 1789651385, rhoai/odh-workbench-jupyter-trustyai-cpu-py312-rhel9 1790260954, +4 morefixed: vendor fix RHSA-2026:73987
-
Red Hat Migration Toolkit for Applications 8.2 mta/mta-ui-rhel9 1783962515, mta/mta-cli-rhel9 1784211378, mta/mta-hub-rhel9 1784059743, mta/mta-rhel9-operator 1784219586, mta/mta-operator-bundle 1784220119, mta/mta-analyzer-addon-rhel9 1784163267, +7 more Red Hat OpenShift AI 3.3 rhoai/odh-cli-rhel9 1790070206, rhoai/rhai-cli-rhel9 1790070206, rhoai/odh-mlflow-rhel9 1789653606, rhoai/odh-trainer-rhel9 1790136369, rhoai/odh-maas-api-rhel9 1790131842, rhoai/odh-mlserver-rhel9 1789121365, +67 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- total
- Assessed
- 6 mo ago
Exploit prediction
0.31% chance of exploitation in the next 30 days, higher than 24% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 7.6 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:L/SC:L/SI:L/SA:L |
| CISA ADP | 3.1 | 7.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N |
| CNA | 4.0 | 7.6 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:L/SC:L/SI:L/SA:L/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 |
| NVD | 3.1 | 7.3 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N |
| CNA | 3.1 | 7.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N |
| OSV | 3.1 | 7.3 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | jupyter-server | <2.18.0 |
2.18.0 |
Affected products
- jupyter-server jupyter_server
- Red Hat Red Hat Migration Toolkit for Applications 8.2
- Red Hat Red Hat OpenShift AI (RHOAI)
Classification
References
-
github.com
/jupyter-server/jupyter_server/pull/603
web, issue-tracking, report
-
github.com
/jupyter-server/jupyter_server/commit/057869a327c46730afede3eab0ca2d2e3e74acea
web, patch
-
github.com
/jupyter-server/jupyter_server/commit/49b34392feaa97735b3b777e3baf8f22f2a14ed8
web, patch
-
github.com
/jupyter-server/jupyter_server/security/advisories/GHSA-24qx-w28j-9m6p
web, mitigation, patch, vendor-advisory
-
access.redhat.com
/errata/RHSA-2026:43038
vendor-advisory, web
-
access.redhat.com
/security/cve/CVE-2026-40110
vdb-entry, web
-
bugzilla.redhat.com
/show_bug.cgi?id=2466912
issue-tracking, web, report
-
security.access.redhat.com
/data/csaf/v2/vex/2026/cve-2026-40110.json
web
-
nvd.nist.gov
/vuln/detail/CVE-2026-40110
advisory
-
github.com
/jupyter-server/jupyter_server
package
-
github.com
/pypa/advisory-database/tree/main/vulns/jupyter-server/PYSEC-2026-2187.yaml
web
Sources
- CVE List CVE-2026-40110
- GitHub Advisory GHSA-24qx-w28j-9m6p
- NVD CVE-2026-40110
- OSV PYSEC-2026-2187
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.