CVE-2026-21883 json
Bokeh server applications have Incomplete Origin Validation in WebSockets
published 2026-01-06 10 mo ago modified 2026-09-10 1 mo ago also GHSA-793v-589g-574v , PYSEC-2026-1223 , EUVD-2026-1036
- cvss
- 5.4
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 7%
- public exploits
- 0
- none known
Summary
Bokeh is an interactive visualization library written in Python. In versions 3.8.1 and below, if a server is configured with an allowlist (e.g., dashboard.corp), an attacker can register a domain like dashboard.corp.attacker.com (or use a subdomain if applicable) and lure a victim to visit it. The malicious site can then initiate a WebSocket connection to the vulnerable Bokeh server. Since the Origin header (e.g., http://dashboard.corp.attacker.com/) matches the allowlist according to the flawed logic, the connection is accepted. Once connected, the attacker can interact with the Bokeh server on behalf of the victim, potentially accessing sensitive data, or modifying visualizations. This issue is fixed in version 3.8.2.
Patch / fix
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-21883 updated cvss 5.4
Bokeh: Bokeh: Information disclosure and unauthorized actions via flawed WebSocket origin validation
-
Red Hat OpenShift AI (RHOAI) rhoai/odh-workbench-jupyter-pytorch-cuda-py312-rhel9, rhoai/odh-workbench-jupyter-pytorch-rocm-py312-rhel9, rhoai/odh-workbench-jupyter-trustyai-cpu-py312-rhel9, rhoai/odh-workbench-jupyter-datascience-cpu-py312-rhel9, rhoai/odh-workbench-jupyter-tensorflow-cuda-py312-rhel9, rhoai/odh-workbench-jupyter-tensorflow-rocm-py312-rhel9, +1 moreaffected: workaround, no fix available “Fix deferred”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- total
- Assessed
- 10 mo ago
Exploit prediction
0.18% chance of exploitation in the next 30 days, higher than 7% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/bokeh/bokeh/security/advisories/GHSA-793v-589g-574v referenced PoC, tagged "exploit" by a source, unverified
- aydinnyunus.github.io https://aydinnyunus.github.io/2026/01/24/bokeh-websocket-hijacking-cve-2026-21883/ referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 4.5 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:U |
| CNA | 4.0 | 4.5 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:U/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| NVD | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | bokeh | <3.8.2 |
3.8.2 |
Affected products
- bokeh bokeh
Classification
- Weakness
-
- CWE-1385 Missing Origin Validation in WebSockets
References
-
github.com
/bokeh/bokeh/commit/cedd113b0e271b439dce768671685cf5f861812e
web, patch
-
github.com
/bokeh/bokeh/security/advisories/GHSA-793v-589g-574v
web, exploit, vendor-advisory
-
aydinnyunus.github.io
/2026/01/24/bokeh-websocket-hijacking-cve-2026-21883/
exploit, mitigation, third-party-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-21883
advisory
-
aydinnyunus.github.io
/2026/01/24/bokeh-websocket-hijacking-cve-2026-21883
web
-
github.com
/bokeh/bokeh
package
-
pypi.org
/project/bokeh
package
-
github.com
/advisories/GHSA-793v-589g-574v
advisory
Sources
- CVE List CVE-2026-21883
- GitHub Advisory GHSA-793v-589g-574v
- NVD CVE-2026-21883
- OSV PYSEC-2026-1223
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.