Update dependency bokeh to v3 [SECURITY] #1046
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==2.4.3→==3.8.2GitHub Vulnerability Alerts
CVE-2026-21883
This vulnerability allows for Cross-Site WebSocket Hijacking (CSWSH) of a deployed Bokeh server instance.
Scope
This vulnerability is only relevant to deployed Bokeh server instances. There is no impact on static HTML output, standalone embedded plots, or Jupyter notebook usage.
This vulnerability does not prevent any requirements for up-front authentication on Bokeh servers that have authentication hooks in place, and cannot be used to make Bokeh servers deployed on private, internal networks accessible outside those networks.
Impact
If a Bokeh server is configured with an allowlist (e.g.,
dashboard.corp), an attacker can register a domain likedashboard.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.
Patches
Patched in versions 3.8.2 and later.
Workarounds
None
Technical description
The
match_hostfunction insrc/bokeh/server/util.pycontains a flaw in how it compares hostnames against the allowlist patterns. The function uses Python'szip()function to iterate over the parts of the hostname and the pattern simultaneously. However,zip()stops iteration when the shortest iterable is exhausted.Because the code only checks if the pattern is longer than the host (lines 232-233), but fails to check if the host is longer than the pattern, a host that starts with the pattern (but has additional segments) will successfully match.
For example, if the allowlist is configured to
['[example.com](http://example.com/)'], the function will incorrectly validate[example.com.bad.com](http://example.com.evil.com/)as a match:hostparts:['example', 'com', 'bad', 'com']patternparts:['example', 'com']zipcomparesexample==example(OK) andcom==com(OK).True.Release Notes
bokeh/bokeh (bokeh)
v3.8.2Compare Source
v3.8.1Compare Source
v3.8.0Compare Source
v3.7.3Compare Source
v3.7.2Compare Source
v3.7.1Compare Source
v3.7.0Compare Source
v3.6.3Compare Source
v3.6.2Compare Source
v3.6.1Compare Source
v3.6.0Compare Source
v3.5.2Compare Source
v3.5.1Compare Source
v3.5.0Compare Source
v3.4.3Compare Source
v3.4.2Compare Source
v3.4.1Compare Source
v3.4.0Compare Source
v3.3.4Compare Source
v3.3.3Compare Source
v3.3.2Compare Source
v3.3.1Compare Source
v3.3.0Compare Source
v3.2.2Compare Source
v3.2.1Compare Source
v3.2.0Compare Source
v3.1.1Compare Source
v3.1.0Compare Source
v3.0.3Compare Source
v3.0.2Compare Source
v3.0.1Compare Source
v3.0.0Compare Source
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.