Jupyter Server: 5xx request logging leaks token-bearing Referer header values
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.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-86049
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 02:54 UTC · Revision 1
Source evidence
Jupyter Server: 5xx request logging leaks token-bearing Referer header values
core-osv · Original sourcePublished 17 Sept 2026, 20:28 UTC
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.
osv:CVE-2026-86049
Complete source record
{
"id": "2796f14a254eb31c40d8c99d18d4d7bfde65681607cf718f0108bc07fcd64f63",
"url": "https://osv.dev/vulnerability/CVE-2026-86049",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Jupyter Server: 5xx request logging leaks token-bearing Referer header values",
"summary": "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.",
"evidence": "osv:CVE-2026-86049",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-86049",
"aliases": [
"CVE-2026-86049",
"GHSA-c3mw-737p-c7g2",
"PYSEC-2026-4054"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/jupyter-server/jupyter_server",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "67aca0c1703b3aa42bbbcb35e05c2b5bf2304c3f"
},
{
"fixed": "52513529af7096e622c00911b17627b266294717"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "2.21.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "52513529af7096e622c00911b17627b266294717"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "67aca0c1703b3aa42bbbcb35e05c2b5bf2304c3f"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v2.21.0"
}
]
}
}
],
"versions": [
"v2.20.0",
"v2.19.0",
"v2.18.2",
"v2.18.1",
"v2.18.0",
"v2.17.0",
"v2.16.0",
"v2.15.0",
"v2.14.2",
"v2.14.1",
"v2.14.0",
"v2.13.0",
"v2.12.5",
"v2.12.4",
"v2.12.3",
"v2.12.2",
"v2.12.1",
"v2.12.0",
"v2.11.2",
"v2.11.1",
"v2.11.0",
"v2.10.1",
"v2.10.0",
"v2.9.1",
"v2.9.0",
"v2.8.0",
"v2.7.3",
"v2.7.2",
"v2.7.1",
"v2.7.0",
"v2.6.0",
"v2.5.0",
"v2.4.0",
"v2.3.0",
"v2.2.1",
"v2.2.0",
"v2.1.0",
"v2.0.7",
"v2.0.6",
"v2.0.5",
"v2.0.4",
"v2.0.3",
"v2.0.2",
"v2.0.1",
"v2.0.0",
"v2.0.0rc8",
"v2.0.0rc7",
"v2.0.0rc6",
"v2.0.0rc5",
"v2.0.0rc4",
"v2.0.0rc3",
"v2.0.0rc2",
"v2.0.0rc1",
"v2.0.0rc0",
"v2.0.0b1",
"v2.0.0b0",
"v2.0.0a2",
"v2.0.0a1",
"v2.0.0a0",
"v1.16.0",
"v1.15.6",
"v1.15.5",
"v1.15.4",
"v1.15.3",
"v1.15.2",
"v1.15.1",
"v1.15.0",
"v1.13.5",
"v1.13.4",
"v1.13.3",
"v1.13.2",
"v1.13.1",
"v1.13.0",
"v1.12.1",
"v1.12.0",
"v1.11.2",
"v1.11.1",
"v1.11.0",
"v1.10.2",
"v1.10.1",
"v1.10.0",
"v1.9.0",
"v1.8.0",
"v1.7.0",
"v1.7.0a2",
"v1.7.0a1",
"v1.7.0a0",
"v1.6.4",
"v1.6.3",
"v1.6.2",
"1.6.1",
"1.6.0",
"1.5.1",
"1.5.0",
"1.4.1",
"1.4.0",
"1.3.0",
"1.2.3",
"1.2.2",
"1.2.1",
"1.2.0",
"1.1.4",
"1.1.3",
"1.1.2",
"1.1.1",
"1.1.0",
"1.0.5",
"1.0.4",
"1.0.3",
"1.0.2",
"1.0.1",
"1.0.0",
"1.0.0rc16",
"1.0.0rc15",
"1.0.0rc14",
"1.0.0rc13",
"1.0.0rc12",
"1.0.0rc11",
"1.0.0rc10",
"1.0.0rc9",
"1.0.0rc8",
"1.0.0rc7",
"1.0.0rc6",
"1.0.0rc5",
"1.0.0rc4",
"1.0.0rc3",
"1.0.0rc2",
"1.0.0rc1",
"0.3.0",
"0.2.0",
"0.1.1",
"0.1.0",
"0.0.5",
"0.0.4",
"0.0.3",
"0.0.2",
"0.0.1"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-86049.json"
}
}
],
"modified": "2026-10-28T02:30:49.137142160Z",
"provider": "osv",
"references": [
"https://github.com/jupyter-server/jupyter_server/releases/tag/v2.21.0",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/86xxx/CVE-2026-86049.json",
"https://github.com/jupyter-server/jupyter_server/security/advisories/GHSA-c3mw-737p-c7g2",
"https://nvd.nist.gov/vuln/detail/CVE-2026-86049",
"https://github.com/jupyter-server/jupyter_server/commit/52513529af7096e622c00911b17627b266294717",
"https://github.com/jupyter-server/jupyter_server/pull/1681"
],
"provider_metadata": {
"cwe_ids": [
"CWE-532"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/86xxx/CVE-2026-86049.json"
}
},
"related_cves": [
{
"value": "CVE-2026-86049",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 517534,
"published_at": "2026-09-17T20:28:52.154+00:00"
}