CVE-2022-42975:Phoenix 框架 Origin 检查通配符处理漏洞
概述
CVE-2022-42975 是一个影响 Phoenix 框架(基于 Erlang/Elixir 的 Web 开发框架)的安全漏洞,在 1.6.14 之前版本中存在。该漏洞源于框架的 socket/transport.ex 文件中 check_origin 配置对通配符规则的处理不当,可能被攻击者利用进行跨站请求伪造(CSRF)攻击。
受影响版本
- 受影响版本:Phoenix < 1.6.14
- 已修复版本:Phoenix 1.6.14
漏洞详情
在 Phoenix 1.6.14 之前的版本中,check_origin 配置用于验证 WebSocket 和 Channel 连接来源的合法性。当配置中使用通配符(例如 "*.example.com")来匹配多个子域名时,框架未能正确实施匹配规则,导致验证逻辑可能被绕过。这使得恶意网站有可能伪造请求,与受害者的 Phoenix 应用建立未授权的连接。
技术背景
- 漏洞文件:
socket/transport.ex - 根本原因:Origin 验证错误(CWE-346)与授权检查不正确(CWE-863)的结合。
- 默认例外:基于 LiveView 构建的应用默认不受此漏洞影响,因为 LiveView 内置了 CSRF 令牌保护机制。
修复与参考
- 修复提交:phoenixframework/phoenix 仓库的提交
6e7185b解决了此问题。 - 官方链接:
严重性评分
- CVSS v3.1 评分: 7.5(高危)
- 向量: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
- 攻击向量(AV):网络
- 攻击复杂度(AC):低
- 所需权限(PR):无
- 用户交互(UI):无
- 影响范围(S):未改变
- 机密性影响(C):无
- 完整性影响(I):高
- 可用性影响(A):无
相关标识
- CVE ID: CVE-2022-42975
- GHSA ID: GHSA-p8f7-22gq-m7j9
建议
所有使用 Phoenix 框架 1.6.14 之前版本的用户应立即升级至 1.6.14 或更高版本,以修补此安全漏洞。对于无法立即升级的环境,应审查并严格配置 check_origin 规则,避免依赖有问题的通配符匹配。