Reflex框架Open Redirect漏洞技术分析
漏洞详情
包管理器: pip
受影响包: reflex (pip)
受影响版本: >= 0.5.4, <= 0.8.14
已修复版本: 无
漏洞描述
缓解措施
确保在生产环境中未设置 GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN 环境变量。正确的做法如下:
|
|
漏洞概述
当在GitHub Codespaces环境中加载 GET /auth-codespace 页面时,该页面会自动将 redirect_to 查询参数值直接分配给客户端链接,而不进行任何验证,并触发自动点击。这允许攻击者将用户重定向到任意外部URL。
该路由仅在检测到Codespaces环境时注册,而检测由环境变量控制。这意味着如果设置了相应的环境变量,相同的行为可以在生产环境中被激活。
漏洞代码分析
此代码将 redirect_to 查询参数直接分配给 a.href,而不进行任何验证,并立即触发点击(自动导航),允许将用户发送到任意外部域,导致开放重定向漏洞。
执行条件仅基于 sessionStorage 标志的存在,这意味着它在首次访问或在隐身/隐私浏览窗口中立即触发,没有服务器端源/方案白名单或内部路径强制执行防御措施。
PoC验证
PoC描述
使用docker-example中的生产配置(docker-example/production-compose)。
在compose.yaml的应用容器中添加Codespaces检测环境变量以强制暴露路由:
|
|
反向代理(Caddy)需要配置为将 /auth-codespace 转发到后端(根据环境要求)。
curl示例
|
|
PoC MP4
影响
网络钓鱼/社会工程攻击
攻击者可以利用用户对受信任域的信任,立即将用户从受信任域重定向到外部恶意站点。这支持登录页面欺骗、凭据收集和重定向到恶意软件分发页面。
认证/会话流程中断
当具有相同源的有效会话/cookie的用户点击链接时,他们会被重定向到意外的外部域,这可能绕过或破坏认证/授权流程。当与基于重定向的流程(如OAuth/OIDC)结合使用时,这可能升级为安全事件。
参考链接
- GHSA-rfh5-c9h5-q8jm
- https://github.com/reflex-dev/reflex/blob/51f9f2c2f52cac4d66c07683a12bc0237311b6be/reflex/utils/codespaces.py#L18-L46
- https://nvd.nist.gov/vuln/detail/CVE-2025-62379
- reflex-dev/reflex@ade1254
安全评分
CVSS总体评分: 3.1/10 (低危)
CVSS v3基础指标:
- 攻击向量: 网络
- 攻击复杂度: 高
- 所需权限: 无
- 用户交互: 需要
- 范围: 未改变
- 机密性: 无影响
- 完整性: 低影响
- 可用性: 无影响
EPSS评分: 0.038% (第11百分位)
弱点分类
弱点: CWE-601
描述: URL重定向到不受信任的站点(‘开放重定向’)
Web应用程序接受用户控制的输入,该输入指定指向外部站点的链接,并在重定向中使用该链接。这简化了网络钓鱼攻击。