CVE-2026-21883CVE-2026-21883是Bokeh交互式可视化库中的一个WebSocket Origin验证绕过漏洞。Bokeh是一个流行的Python交互式可视化库,广泛用于创建Web图表和仪表板。在3.8.1及以下版本中,当服务器配置了域名白名单(allowlist)时,存在严重的安全缺陷。攻击者可以通过注册包含白名单域名的子域名(如dashboard.corp.attacker.com)来绕过Origin验证机制。该漏洞允许恶意网站代表合法用户与Bokeh服务器建立WebSocket连接,从而可能导致敏感数据泄露或可视化内容被篡改。攻击成功的前提是用户访问攻击者控制的恶意网站,且Bokeh服务器配置了特定的白名单规则。漏洞已在版本3.8.2中得到修复。
该漏洞源于Bokeh服务器对WebSocket连接的Origin头验证存在逻辑缺陷。当服务器配置了域名白名单(如dashboard.corp)时,验证逻辑仅检查Origin头是否包含白名单中的字符串,而非进行完整的域名匹配。攻击者可以利用这一缺陷,注册如dashboard.corp.attacker.com的域名,由于该域名包含dashboard.corp字符串,验证会被错误地通过。攻击流程如下:1)攻击者注册包含目标白名单域名的子域名;2)构建包含恶意JavaScript的网页;3)诱使已登录目标Bokeh服务器的用户访问该恶意页面;4)恶意脚本发起WebSocket连接请求,Origin头设置为http://dashboard.corp.attacker.com/;5)服务器验证Origin包含dashboard.corp,通过验证;6)攻击者成功建立WebSocket连接,可代表用户执行操作。修复方案应使用完整的域名匹配或域名后缀验证,而非简单的字符串包含检查。