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)引导的应用程序,并且使用了魔法链接策略、密码重置、确认功能或手动撤销令牌的用户。未使用新安装器的用户不受影响。
具体影响
- 魔法链接策略用户:魔法链接令牌在过期前(默认10分钟)可重复使用,而非立即撤销。
- 密码策略中的密码重置用户:密码重置令牌在过期前(默认3天)可重复使用,而非立即撤销。
- 确认附加组件用户:确认令牌在过期前(默认3天)可重复使用,而非立即撤销。
补丁与修复
该漏洞已在版本 4.4.9 中修复。升级时,编译器会显示警告及修复说明。4.4.9 版本附带一个升级工具。
修复方法:
- 升级到 4.4.9 版本,并运行
mix igniter.upgrade ash_authentication,升级工具会自动应用必要的补丁。 - 或者,按照错误信息中的说明手动运行升级器:
mix ash_authentication.upgrade 4.4.8 4.4.9。
代码层面修复:
需要修改令牌资源中生成的 :revoked? 通用动作。具体为:
- 移除
:jti和:token参数上的allow_nil?: false限制。 - 确保该动作返回类型为
:boolean。
修正后的动作示例:
action :revoked?, :boolean dodescription "Returns true if a revocation token is found for the provided token"argument :token, :string, sensitive?: trueargument :jti, :string, sensitive?: truerun AshAuthentication.TokenResource.IsRevoked
end
临时解决方案
如果无法立即升级,可以删除令牌资源中生成的 :revoked? 通用动作。这将使系统回退使用 AshAuthentication 内部始终正确的实现。或者,也可以手动按上述说明修改代码。
参考信息
- GitHub 安全公告:GHSA-qrm9-f75w-hg4c
- 修复提交:team-alembic/ash_authentication@2dee552
- NVD 详情:https://nvd.nist.gov/vuln/detail/CVE-2025-25202
- 社区支持:Ash Discord 的 #ash_authentication 频道
漏洞评分
- 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智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码
