Jupyter Server is the backend for Jupyter web applications. Prior to version 2.21.0, the 5xx request logging path in jupyter_server/log.py copies the Referer header into a JSON header block without applying the token scrubbing used for the request URI. A request that returns HTTP 500 while the...
Full CISO analysis pending enrichment.
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Jupyter | pip | <= 2.20.0 | 2.21.0 |
Do you use Jupyter? You're affected.
How severe is it?
What is the attack surface?
What should I do?
Patch available
Update Jupyter to version 2.21.0
Which compliance frameworks are affected?
Compliance analysis pending. Sign in for full compliance mapping when available.
Frequently Asked Questions
What is CVE-2026-86049?
Jupyter Server is the backend for Jupyter web applications. Prior to version 2.21.0, the 5xx request logging path in jupyter_server/log.py copies the Referer header into a JSON header block without applying the token scrubbing used for the request URI. A request that returns HTTP 500 while the Referer contains a token-bearing URL can therefore write that token to server logs in plaintext. An attacker who can read those logs can recover the token and use the affected user's Jupyter Server permissions. This issue is fixed in version 2.21.0.
Is CVE-2026-86049 actively exploited?
No confirmed active exploitation of CVE-2026-86049 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-86049?
Update to patched version: Jupyter 2.21.0.
What is the CVSS score for CVE-2026-86049?
CVE-2026-86049 has a CVSS v3.1 base score of 7.1 (HIGH). The EPSS exploitation probability is 0.24%.
What are the technical details?
Original Advisory
Jupyter Server is the backend for Jupyter web applications. Prior to version 2.21.0, the 5xx request logging path in jupyter_server/log.py copies the Referer header into a JSON header block without applying the token scrubbing used for the request URI. A request that returns HTTP 500 while the Referer contains a token-bearing URL can therefore write that token to server logs in plaintext. An attacker who can read those logs can recover the token and use the affected user's Jupyter Server permissions. This issue is fixed in version 2.21.0.
Weaknesses (CWE)
CWE-532 Insertion of Sensitive Information into Log File
Primary
CWE-532 Insertion of Sensitive Information into Log File
Primary
CWE-532 Insertion of Sensitive Information into Log File CWE-532 — Insertion of Sensitive Information into Log File: The product writes sensitive information to a log file.
- [Architecture and Design, Implementation] Consider seriously the sensitivity of the information written into log files. Do not write secrets into the log files.
- [Distribution] Remove debug log files before deploying the application into production.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H References
- github.com/advisories/GHSA-c3mw-737p-c7g2
- github.com/jupyter-server/jupyter_server/commit/52513529af7096e622c00911b17627b266294717
- github.com/jupyter-server/jupyter_server/pull/1681
- github.com/jupyter-server/jupyter_server/releases/tag/v2.21.0
- github.com/jupyter-server/jupyter_server/security/advisories/GHSA-c3mw-737p-c7g2
Timeline
Related Vulnerabilities
CVE-2023-25574 10.0 JupyterHub LTI13: JWT forgery enables full auth bypass
Same package: jupyter CVE-2026-44180 9.8 Jupyter Enterprise Gateway: root privilege bypass in Kubernetes
Same package: jupyter CVE-2026-23537 9.1 Feast: unauth file write to RCE via /save-document
Same package: jupyter CVE-2026-54527 9.0 jupyterlab-git: stored XSS escalates to full RCE
Same package: jupyter CVE-2026-44727 9.0 jupyter-server: stored XSS yields kernel RCE
Same package: jupyter