JupyterGHSA-m68r-v472-jgq9
JupyterHub has cross-origin form POSTs bypass XSRF (CWE-352)
Fix: upgrade to 5.4.5 or later
Summary
JupyterHub's XSRF protection (updated in 4.1.0) inappropriately treated requests with Sec-Fetch-Mode: no-cors as same-origin requests, which they are not, 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.
Patches
Upgrade to JupyterHub 5.4.5.
Mitigations
If a reverse proxy is in use, drop requests to JupyterHub with Sec-Fetch-Mode: no-cors.
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| jupyterhub PyPI | >= 4.1.0, < 5.4.5 | 5.4.5 |
Details and references
- CVSS 3.1
- CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L
- Severity from
- GitHub (reviewed advisory)
- Weakness
- CWE-352
- Also known as
- BIT-jupyterhub-2026-40864, CVE-2026-40864, PYSEC-2026-2189