Ash认证Phoenix会话过期漏洞分析与修复指南

本文详细分析CVE-2025-4754漏洞,该漏洞存在于ash_authentication_phoenix库中,由于会话令牌在用户登出后仍保持有效,可能导致安全风险。文章包含影响分析、修复方案和工作区解决方法。

CVE-2025-4754:Ash认证Phoenix会话过期不足漏洞

漏洞描述

影响

会话令牌在用户登出后仍在服务器端保持有效,造成以下安全漏洞:

  • 被泄露的令牌(通过XSS、网络拦截或设备盗窃获取)在用户登出后仍可继续使用
  • 数据库中存储的会话仍会过期,这限制了漏洞被利用的时间窗口
  • 用户无法在共享或可能被入侵的设备上完全使其会话失效
  • 默认情况下,更改密码会使所有其他会话失效,因此更改密码作为安全措施是有效的
  • 可能导致不符合要求完全会话失效的安全框架合规性问题

修复方案

补丁

升级到版本2.10.0。升级后,用户必须更新其AuthController实现,使用新的clear_session/2函数及其OTP应用名称。您将通过编译时错误提示完成此操作。

如果您在tokens部分没有将require_token_presence_for_authentication?设置为true,您将看到单独的错误:

1
2
** (Spark.Error.DslError) authentication -> session_identifier:
Must set `authentication.session_identifier` to either `:jti` or `:unsafe`.

为了在登出时撤销不直接存储在会话中的令牌,我们必须有唯一的标识符来完成此操作。如果可能,您应该优先启用require_token_presence_for_authentication?,而不是将其设置为:jti。请注意,无论您在此处做什么,如果您之前没有将require_token_presence_for_authentication?设置为true,将其设置为true或将authentication.session_identifier设置为:jti将使所有当前认证的用户登出。

工作区解决方法

您可以在auth控制器中的logout/2处理程序中手动撤销令牌。

参考信息

安全评分

CVSS总体评分:2.3/10(低危)

CVSS v4基础指标

可利用性指标:

  • 攻击向量:网络
  • 攻击复杂度:低
  • 攻击要求:存在
  • 所需权限:无
  • 用户交互:被动

脆弱系统影响指标:

  • 机密性:低
  • 完整性:低
  • 可用性:无

后续系统影响指标:

  • 机密性:无
  • 完整性:无
  • 可用性:无

EPSS评分:0.142%(第35百分位)

弱点分类

CWE-613:会话过期不足

根据WASC的定义,当网站允许攻击者重复使用旧的会话凭据或会话ID进行授权时,就会发生会话过期不足的情况。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计