Ash认证Phoenix会话过期漏洞分析

本文详细分析了ash_authentication_phoenix库中存在的会话过期不足漏洞CVE-2025-4754,该漏洞导致用户登出后会话令牌仍保持有效,存在安全风险,并提供了修复方案和应对措施。

CVE-2025-4754:ash_authentication_phoenix 会话过期不足漏洞

漏洞描述

影响

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

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

修复方案

补丁

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

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

1
2
** (Spark.Error.DslError) authentication -> session_identifier:
必须将`authentication.session_identifier`设置为`:jti`或`: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基础指标

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

脆弱系统影响指标

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

弱点分类

CWE-613:会话过期不足

根据WASC的定义,会话过期不足是指网站允许攻击者重复使用旧的会话凭据或会话ID进行授权。

标识符

  • CVE ID: CVE-2025-4754
  • GHSA ID: GHSA-f7gq-h8jv-h3cq

源代码

team-alembic/ash_authentication_phoenix

受影响版本

<= 2.9.0

已修复版本

2.10.0

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