JupyterHub has cross-origin form POSTs bypass XSRF (CWE-352)
Moderate severity
GitHub Reviewed
Published
May 5, 2026
in
jupyterhub/jupyterhub
•
Updated May 5, 2026
Description
Published to the GitHub Advisory Database
May 5, 2026
Reviewed
May 5, 2026
Last updated
May 5, 2026
Summary
JupyterHub's XSRF protection (updated in 4.1.0) inappropriately treated requests with
Sec-Fetch-Mode: no-corsas same-origin requests, which they are not, bypassing XSRF checks. The JSON API is not affected, only HTTP form endpoints, such as/hub/spawnand/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.References