Ash Authentication 令牌吊销逻辑漏洞 CVE-2025-25202 详解

Ash Authentication 令牌吊销逻辑漏洞(CVE-2025-25202)

概述

该漏洞存在于 Ash Authentication 库中,具体问题源于由 mix ash_authentication.install 命令生成的动作中,其令牌吊销检查逻辑存在缺陷。这导致已被撤销的令牌在过期前仍能被系统验证为有效,而非立即失效。

受影响范围

  • 受影响版本:>= 4.1.0, < 4.4.9
  • 已修复版本:4.4.9
  • 影响对象:自 AshAuthentication v4.1.0 起,使用新安装器(igniter installer)引导的应用程序,并且使用了魔法链接策略、密码重置、确认功能或手动撤销令牌的用户。未使用新安装器的用户不受影响。

具体影响

  1. 魔法链接策略用户:魔法链接令牌在过期前(默认10分钟)可重复使用,而非立即撤销。
  2. 密码策略中的密码重置用户:密码重置令牌在过期前(默认3天)可重复使用,而非立即撤销。
  3. 确认附加组件用户:确认令牌在过期前(默认3天)可重复使用,而非立即撤销。

补丁与修复

该漏洞已在版本 4.4.9 中修复。升级时,编译器会显示警告及修复说明。4.4.9 版本附带一个升级工具。

修复方法

  1. 升级到 4.4.9 版本,并运行 mix igniter.upgrade ash_authentication,升级工具会自动应用必要的补丁。
  2. 或者,按照错误信息中的说明手动运行升级器:mix ash_authentication.upgrade 4.4.8 4.4.9

代码层面修复
需要修改令牌资源中生成的 :revoked? 通用动作。具体为:

  • 移除 :jti:token 参数上的 allow_nil?: false 限制。
  • 确保该动作返回类型为 :boolean

修正后的动作示例:

action :revoked?, :boolean do
  description "Returns true if a revocation token is found for the provided token"
  argument :token, :string, sensitive?: true
  argument :jti, :string, sensitive?: true

  run AshAuthentication.TokenResource.IsRevoked
end

临时解决方案

如果无法立即升级,可以删除令牌资源中生成的 :revoked? 通用动作。这将使系统回退使用 AshAuthentication 内部始终正确的实现。或者,也可以手动按上述说明修改代码。

参考信息

漏洞评分

  • CVSS 总体评分:6.3(中危)
  • CVSS v4 向量:CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

弱点归类

  • CWE-ID:CWE-269(权限管理不当)
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

posted @ 2025-12-01 19:18  qife  阅读(3)  评论(0)    收藏  举报