ash_authentication_phoenix 存在会话过期不足的问题 · CVE-2025-4754
平台: GitHub Advisory Database
包: erlang / ash_authentication_phoenix (Erlang)
受影响版本: <= 2.9.0
已修复版本: 2.10.0
描述
影响
用户注销后,会话令牌在服务器端仍然有效,这造成了安全漏洞,具体表现为:
- 通过 XSS、网络拦截或设备被盗而泄露的令牌,即使在用户注销后仍可继续使用(不过,数据库中存储的会话仍会过期,这限制了此漏洞可被利用的持续时间)。
- 用户在使用共享或可能已泄露的设备注销时,无法完全使其会话失效。
- 默认情况下,更改密码会使所有其他会话失效,因此将更改密码作为安全措施是有效的。
- 可能导致不符合要求完全会话失效的安全框架的合规性问题。
补丁
升级到版本 2.10.0。升级后,用户必须更新其 AuthController 实现,以使用新的 clear_session/2 函数并传入其 OTP 应用名称。您将在编译时收到错误提示,要求您进行此操作。
如果您未在令牌部分将 require_token_presence_for_authentication? 设置为 true,您将看到另一个错误:
|
|
为了在注销时撤销不直接存储在会话中的令牌对应的会话,我们必须有一个唯一的标识符来实现此操作。如果可能,您应优先启用 require_token_presence_for_authentication?,而不是将其设置为 :jti。请注意,无论您在此处进行何种操作,如果您之前没有将 require_token_presence_for_authentication? 设置为 true,那么将其设置为 true 或将 authentication.session_identifier 设置为 :jti 将会注销所有当前已认证的用户。
临时解决方案
您可以在认证控制器(auth controller)的 logout/2 处理程序中手动撤销令牌。
参考
- GHSA-f7gq-h8jv-h3cq
- team-alembic/ash_authentication_phoenix@a3253fb
- https://nvd.nist.gov/vuln/detail/CVE-2025-4754
- team-alembic/ash_authentication_phoenix#634
安全评分
严重程度: 低 CVSS 总体评分: 2.3 / 10
CVSS v4 基础指标
漏洞利用指标
- 攻击向量: 网络
- 攻击复杂度: 低
- 攻击前提条件: 存在
- 所需权限: 无
- 用户交互: 被动
受影响的系统影响指标
- 机密性: 低
- 完整性: 低
- 可用性: 无
后续系统影响指标
- 机密性: 无
- 完整性: 无
- 可用性: 无
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
EPSS 分数
0.109% (第30百分位) 此分数估计此漏洞在未来30天内被利用的概率。数据由 FIRST 提供。
弱点
弱点: CWE-613 描述: 会话过期不足 根据 WASC 的定义,当网站允许攻击者重复使用旧的会话凭据或会话 ID 进行授权时,即存在会话过期不足的问题。在 MITRE 上了解更多信息。
标识符
- CVE ID: CVE-2025-4754
- GHSA ID: GHSA-f7gq-h8jv-h3cq
源代码
team-alembic/ash_authentication_phoenix
致谢
- jimsynz: 修复方案审核者
- zachdaniel: 修复方案开发者
- mbuhot: 分析师
- maennchen: 分析师