id: PYSEC-2026-2187 published: "2026-05-05T22:16:00.663Z" modified: "2026-07-13T05:49:16.941897Z" aliases: - CVE-2026-40110 - GHSA-24qx-w28j-9m6p details: 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. affected: - package: name: jupyter-server ecosystem: PyPI purl: pkg:pypi/jupyter-server ranges: - type: ECOSYSTEM events: - introduced: "0" - fixed: 2.18.0 versions: - 0.0.0 - 0.0.1 - 0.0.2 - 0.0.3 - 0.0.4 - 0.0.5 - 0.1.0 - 0.1.1 - 0.2.0 - 0.2.1 - 0.3.0 - 1.0.0 - 1.0.0rc0 - 1.0.0rc1 - 1.0.0rc10 - 1.0.0rc11 - 1.0.0rc12 - 1.0.0rc13 - 1.0.0rc14 - 1.0.0rc15 - 1.0.0rc16 - 1.0.0rc2 - 1.0.0rc3 - 1.0.0rc4 - 1.0.0rc5 - 1.0.0rc6 - 1.0.0rc7 - 1.0.0rc8 - 1.0.0rc9 - 1.0.1 - 1.0.10 - 1.0.11 - 1.0.2 - 1.0.3 - 1.0.4 - 1.0.5 - 1.0.6 - 1.0.7 - 1.0.8 - 1.0.9 - 1.1.0 - 1.1.1 - 1.1.2 - 1.1.3 - 1.1.4 - 1.10.0 - 1.10.1 - 1.10.2 - 1.11.0 - 1.11.1 - 1.11.2 - 1.12.0 - 1.12.1 - 1.13.0 - 1.13.1 - 1.13.2 - 1.13.3 - 1.13.4 - 1.13.5 - 1.15.0 - 1.15.1 - 1.15.2 - 1.15.3 - 1.15.4 - 1.15.5 - 1.15.6 - 1.16.0 - 1.17.0 - 1.17.1 - 1.18.0 - 1.18.1 - 1.19.0 - 1.19.1 - 1.2.0 - 1.2.1 - 1.2.2 - 1.2.3 - 1.21.0 - 1.23.0 - 1.23.1 - 1.23.2 - 1.23.3 - 1.23.4 - 1.23.5 - 1.23.6 - 1.24.0 - 1.3.0 - 1.4.0 - 1.4.1 - 1.5.0 - 1.5.1 - 1.6.0 - 1.6.1 - 1.6.2 - 1.6.3 - 1.6.4 - 1.7.0 - 1.7.0a1 - 1.7.0a2 - 1.8.0 - 1.9.0 - 2.0.0 - 2.0.0a0 - 2.0.0a1 - 2.0.0a2 - 2.0.0b0 - 2.0.0b1 - 2.0.0rc0 - 2.0.0rc1 - 2.0.0rc2 - 2.0.0rc3 - 2.0.0rc4 - 2.0.0rc5 - 2.0.0rc6 - 2.0.0rc7 - 2.0.0rc8 - 2.0.1 - 2.0.2 - 2.0.3 - 2.0.4 - 2.0.5 - 2.0.6 - 2.0.7 - 2.1.0 - 2.10.0 - 2.10.1 - 2.11.0 - 2.11.1 - 2.11.2 - 2.12.0 - 2.12.1 - 2.12.2 - 2.12.3 - 2.12.4 - 2.12.5 - 2.13.0 - 2.14.0 - 2.14.1 - 2.14.2 - 2.15.0 - 2.16.0 - 2.17.0 - 2.2.0 - 2.2.1 - 2.3.0 - 2.4.0 - 2.5.0 - 2.6.0 - 2.7.0 - 2.7.1 - 2.7.2 - 2.7.3 - 2.8.0 - 2.9.0 - 2.9.1 ecosystem_specific: {} references: - type: WEB url: https://access.redhat.com/security/cve/CVE-2026-40110 - type: WEB url: https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-40110.json - type: REPORT url: https://bugzilla.redhat.com/show_bug.cgi?id=2466912 - type: REPORT url: https://github.com/jupyter-server/jupyter_server/pull/603 - type: FIX url: https://github.com/jupyter-server/jupyter_server/commit/057869a327c46730afede3eab0ca2d2e3e74acea - type: FIX url: https://github.com/jupyter-server/jupyter_server/commit/49b34392feaa97735b3b777e3baf8f22f2a14ed8 - type: FIX url: https://github.com/jupyter-server/jupyter_server/security/advisories/GHSA-24qx-w28j-9m6p severity: - type: CVSS_V3 score: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N