Vulnerabilities in pkg:pypi/jupyter_server
PACKAGECVE-2026-86049 is a HIGH (CVSS 7.1) 5xx request logging leaks token-bearing vulnerability (CWE-532: Insertion of Sensitive Information into Log File) affecting Jupyter Server libraries in the PyPI ecosystem. The issue involves 5xx request logging leaks token-bearing referer header values. Remediation is available by upgrading affected packages to version 2.21.0.
pkg:pypi/jupyter_server
Vulnerability advisories affecting package pkg:pypi/jupyter_server. Select an advisory below to view technical details or fixes.
| Advisory ID | CVE / NVD | Severity | Summary |
|---|---|---|---|
| GHSA-c3mw-737p-c7g2 | CVE-2026-86049 | HIGH | Jupyter Server: 5xx request logging leaks token-bearing Referer header values |
| GHSA-hrw6-wg82-cm62 | CVE-2024-35178 | HIGH | Jupyter server on Windows discloses Windows user password hash |
CVE-2026-86049 at a Glance
Security Impact
CVSS: 7.1
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H).
How to Fix CVE-2026-86049
To remediate this vulnerability, upgrade all affected Jupyter Server dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
pip install jupyter_server>=2.21.0
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
pip show jupyter_server
How to Check if You Are Affected
To determine whether your Python environment is affected by CVE-2026-86049, inspect your installed packages using pip:
pip show jupyter_server
Analyze the terminal output to locate any version of Jupyter Server in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 2.21.0), your application is affected.
Note: The pip show jupyter_server command checks currently installed packages in your active Python environment.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-532: Insertion of Sensitive Information into Log File, where the product writes sensitive information to a log file. In Jupyter Server, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-86049 Affected Jupyter Server Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
jupyter_server
|
PyPI |
< 2.21.0
|
2.21.0
|
References
Frequently Asked Questions
What is CVE-2026-86049?
Which Jupyter Server versions are affected?
What version fixes CVE-2026-86049?
Is jupyter_server affected?
What is the CVSS score of CVE-2026-86049?
What CWE is associated with CVE-2026-86049?
How can I check PyPI dependencies for CVE-2026-86049?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-c3mw-737p-c7g2",
"modified" : "2026-09-17T20:28:55Z",
"published" : "2026-09-17T20:28:55Z",
"aliases" : [ "CVE-2026-86049" ],
"summary" : "Jupyter Server: 5xx request logging leaks token-bearing Referer header values",
"details" : "### Summary\n\nWhen a request returns a 500, `jupyter_server/log.py` logs a small JSON block of request headers. \n\nThe Referer header was copied into it as-is, so a token in the Referer URL ended up in the logs in plain text.\n\n### Impact\n\nAnyone who can read the server logs can pick tokens out of these 500 entries. Tokens end up in the Referer during normal token-based login and launch flows.\n\nAffected: all versions before 2.21.0.\n\n### PoC\n\nAny malformed request that returns a 500 works:\n\n```bash\ncurl -i -X POST \\\n -H 'Content-Type: application/json' \\\n -H 'Referer: http://127.0.0.1:8899/tree?token=REFERTOKEN' \\\n --data '{\"name\":123}' \\\n 'http://127.0.0.1:8899/api/kernels?token=VALIDTOKEN'\n```\n\nThe log shows the token twice, once raw and once redacted:\n\n```\n\"Referer\": \"http://127.0.0.1:8899/tree?token=REFERTOKEN\",\n[E ... ServerApp] 500 POST /api/kernels?token=[secret] (...) referer=http://127.0.0.1:8899/tree?token=[secret]\n```\n\n### Patches\n\nFixed in 2.21.0 by 5251352. Header values are now scrubbed before the block is logged. Upgrade to 2.21.0 or later.\n\n### Workarounds\n\nLimit who can read the server logs. If you can, avoid flows that put the token in the URL.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "PyPI",
"name" : "jupyter_server"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "2.21.0"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 2.20.0"
}
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/jupyter-server/jupyter_server/security/advisories/GHSA-c3mw-737p-c7g2"
}, {
"type" : "WEB",
"url" : "https://github.com/jupyter-server/jupyter_server/pull/1681"
}, {
"type" : "WEB",
"url" : "https://github.com/jupyter-server/jupyter_server/commit/52513529af7096e622c00911b17627b266294717"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/jupyter-server/jupyter_server"
}, {
"type" : "WEB",
"url" : "https://github.com/jupyter-server/jupyter_server/releases/tag/v2.21.0"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-532" ],
"severity" : "HIGH",
"github_reviewed" : true,
"github_reviewed_at" : "2026-09-17T20:28:55Z",
"nvd_published_at" : null
}
}