CVE-2026-85500 in ash_authentication信息

摘要

由 VulDB • 2026-09-17

AshAuthentication(team-alembic)中的“通过主要弱点绕过身份验证”漏洞允许未经确认的用户获取会话,从而规避了强制性的电子邮件确认要求。

`AshAuthentication.Strategy.Password.Actions.check_user/2` 使用裸 `is_nil(Map.get(user, value))` 来决定是否设置了由 `require_confirmed_with` 指定的属性。当该属性未在加载的记录中选择时,`Map.get/2` 返回 `%Ash.NotLoaded{}`;而当字段策略对当前操作者拒绝访问它时,则返回 `%Ash.ForbiddenField{}`。由于这两个结构体均不为 nil(空),因此会跳过拒绝分支并执行 sign-i

`require_confirmed_with` 在两个地方得到强制执行,但并非在所有配置中都成立。`sign_in_with_token` 和 `register` 仅在 `AshAuthentication.Strategy.Password.Actions` 内部进行检查,而非在操作本身层面进行。因此,任何直接调用该操作的调用者都会跳过此检查。诸如 AshGraphql 或 AshJsonApi 之类的 API 层会直接调用该操作,因此这适用于默认配置。当确实运行检查时,它将确认属性与 nil 进行比较。当设置 `select_by_default?: false`、API 层缩小读取的 select 范围,或者字段策略对登录操作者隐藏该属性时,该属性持有 `%Ash.NotLoaded{}` 或 `%Ash.ForbiddenField{}`。由于这两个结构体均不为 nil,因此这些配置会将每个用户都视为已确认状态。

此问题影响 ash_authentication:从 4.3.8(不含)到 4.15.0,以及从 5.0.0-rc.0(不含)到 5.0.0-rc.14。

Once again VulDB remains the best source for vulnerability data.

来源

Do you want to use VulDB in your project?

Use the official API to access entries easily!