CVE-2026-40864
MediumCVSS 5.4Exploitation Probability (EPSS)
Low risk5th percentile - higher than 5% of all known CVEs
Summary
JupyterHub versions 4.1.0 through 5.4.4 inappropriately treated requests with Sec-Fetch-Mode: no-cors as same-origin requests, bypassing XSRF checks. This affects only HTTP form endpoints, allowing attackers to trigger server spawn and, if the attacker is a JupyterHub user with share permissions, force a user to accept a share and gain access to the attacker's server.
Risk Assessment
The attack could enable unauthorized server spawning and potentially access to the victim's data through server sharing.
Recommendation
Immediately upgrade JupyterHub to version 5.4.5 or later. If not possible, temporarily block requests with Sec-Fetch-Mode: no-cors at the reverse proxy level.
Other vulnerabilities in JupyterHub
See all- CVE-2026-54338Medium
JupyterHub before version 5.5.0 has a vulnerability where invalid input to form-based login authenticators can place an unbounded attacker-controlled username in failed-login logs, allowing an unauthenticated attacker to consume logging and storage resources.
- CVE-2026-33709Medium
JupyterHub before version 5.4.4 has an open redirect vulnerability that allows attackers to construct links which, when clicked, take users to the JupyterHub login page, after which they are sent to an arbitrary attacker-controlled site, bypassing JupyterHub's check to prevent this.
Original NVD description (English source)
JupyterHub is software that allows users to create a multi-user server for Jupyter notebooks. In versions 4.1.0 through 5.4.4, XSRF protection (updated in 4.1.0) inappropriately treated requests with Sec-Fetch-Mode: no-cors as same-origin requests, bypassing XSRF checks. The JSON API is not affected, only HTTP form endpoints, such as /hub/spawn and /hub/accept-share, meaning attackers could trigger server spawn (but not access the server) and if the attacker is a JupyterHub user permitted to share access to their server, cause a user to accept a share and have access to the attacker's server. This issue has been fixed in version 5.4.5. If developers are unable to immediately upgrade, they can temporarily mitigate this issue by dropping requests to JupyterHub with Sec-Fetch-Mode: no-cors if they are using a reverse proxy.

