CVE-2026-86049
published 2026-09-17CVE-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…
PriorityP339high7.1CVSS 3.1
AVNACHPRLUIRSUCHIHAH
EPSS
0.42%
34.8th percentile
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.
Affected
23 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| jupyter-server | jupyter_server | < 2.21.0 | 2.21.0 |
| jupyter | jupyter_server | >= 0 < 2.21.0 | 2.21.0 |
| mta | mta-solution-server-rhel9 | — | — |
| rhoai | odh-feature-server-rhel9 | — | — |
| rhoai | odh-th-torch-cpu-py312-rhel9 | — | — |
| rhoai | odh-th-torch-cuda-py312-rhel9 | — | — |
| rhoai | odh-th-torch-rocm-py312-rhel9 | — | — |
| rhoai | odh-th06-cpu-torch210-py312-rhel9 | — | — |
| rhoai | odh-th06-cpu-torch291-py312-rhel9 | — | — |
| rhoai | odh-th06-cuda130-torch210-py312-rhel9 | — | — |
| rhoai | odh-th06-cuda130-torch291-py312-rhel9 | — | — |
| rhoai | odh-th06-rocm64-torch291-py312-rhel9 | — | — |
| rhoai | odh-workbench-codeserver-datascience-cpu-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-datascience-cpu-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-minimal-cpu-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-minimal-cuda-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-minimal-rocm-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-pytorch-cuda-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-pytorch-rocm-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-tensorflow-cuda-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-tensorflow-rocm-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-trustyai-cpu-py312-rhel9 | — | — |
CVSS provenance
nvdv3.17.1HIGHCVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H
vendor_redhat7.1HIGH
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
Red Hat
jupyter-server: Jupyter Server: Information disclosure via 5xx request logging
vendor_redhat·2026-09-17·CVSS 7.1
CVE-2026-86049 [HIGH] CWE-117 jupyter-server: Jupyter Server: Information disclosure via 5xx request logging
jupyter-server: Jupyter Server: Information disclosure via 5xx request logging
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.
A flaw was found in Jupyter Server. The server's logging mechanism for HTTP 500 errors fails to properly redact sensitive information. When a request results in an HTTP 500 e
GHSA
Jupyter Server: 5xx request logging leaks token-bearing Referer header values
ghsa·2026-09-17
CVE-2026-86049 [HIGH] CWE-532 Jupyter Server: 5xx request logging leaks token-bearing Referer header values
Jupyter Server: 5xx request logging leaks token-bearing Referer header values
### Summary
When a request returns a 500, `jupyter_server/log.py` logs a small JSON block of request headers.
The Referer header was copied into it as-is, so a token in the Referer URL ended up in the logs in plain text.
### Impact
Anyone 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.
Affected: all versions before 2.21.0.
### PoC
Any malformed request that returns a 500 works:
```bash
curl -i -X POST \
-H 'Content-Type: application/json' \
-H 'Referer: http://127.0.0.1:8899/tree?token=REFERTOKEN' \
--data '{"name":123}' \
'http://127.0.0.1:8899/api/kernels?token=VALIDTOKEN'
```
The log shows the token
No detection rules found.
No public exploits indexed.
https://github.com/jupyter-server/jupyter_server/commit/52513529af7096e622c00911b17627b266294717https://github.com/jupyter-server/jupyter_server/pull/1681https://github.com/jupyter-server/jupyter_server/releases/tag/v2.21.0https://github.com/jupyter-server/jupyter_server/security/advisories/GHSA-c3mw-737p-c7g2
2026-09-17
Published