Ash身份验证库存在邮件链接自动点击账户确认漏洞分析

本文详细分析了CVE-2025-32782漏洞,该漏洞影响ash_authentication库的账户确认流程。由于使用GET请求进行确认,某些邮件客户端和扫描工具会自动点击链接,导致非预期的账户确认。文章介绍了影响范围、修复版本及具体的缓解步骤。

Ash身份验证库存在邮件链接自动点击账户确认漏洞(CVE-2025-32782)

漏洞描述

影响

账户创建流程中的确认环节当前使用通过邮件发送的链接触发的GET请求。某些邮件客户端和安全工具(例如Outlook、病毒扫描器和邮件预览器)可能会自动跟踪这些链接,从而无意中确认账户。这允许攻击者使用他人的电子邮件注册账户,并可能因受害者的邮件客户端而自动确认。

此漏洞不允许攻击者接管或访问现有账户或私人数据。它仅限于新账户的确认环节。

补丁

已在版本4.7.0中发布缓解措施。您还需要升级到ash_authentication_phoenix的2.6.0或更高版本,以利用自动生成的确认视图。该修复更新了确认流程,要求明确的用户交互(例如点击确认页面上的按钮),而不是通过GET请求执行确认。这确保了邮件客户端的自动链接预取或扫描不会无意中确认账户。

要缓解此漏洞,请遵循以下步骤:

  1. 升级 ash_authentication >= 4.7.0
  2. 升级 ash_authentication_phoenix >= 2.6.0(如果使用 ash_authentication_phoenix)
  3. 在您的确认策略中设置 require_interaction? true
  4. 如果您使用上述的 auth_routes,则将 confirm_route 添加到您的路由器中。

设置 require_interaction? true

按如下方式修改您的确认策略:

1
2
3
4
confirmation <strategy_name> do
  ...
  require_interaction? true
end

confirm_route 添加到您的路由器

为了使用这个新的确认流程,您需要将其添加到您的路由器中以获得期望的行为。它将为新的确认页面LiveView添加一个新路由。请注意 pathtoken_as_route_param? 选项,这些选项是保持与当前默认值向后兼容所必需的。如果您以某种方式更改了这些路由,可能需要调整。

重要提示 - 置于 auth_routes 之上 如果使用 path 选项,并且路径以 /auth 或您配置的 auth_routes_prefix 开头,请确保将其放在 auth_routes 之上。auth_routes 会贪婪地处理配置路径下的所有路由。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
confirm_route(
  MyApp.Accounts.User,
  <confirmation_strategy_name>,
  auth_routes_prefix: "/auth",
  overrides: [MyAppWeb.AuthOverrides, AshAuthentication.Phoenix.Overrides.Default],
  # 使用以下选项保持您当前发出的确认邮件的兼容性
  # 如果没有下面的选项,路由将默认为 `/<the_strategy_name>/:token`
  path: "/auth/user/<confirmation_strategy_name>",
  token_as_route_param?: false
)

用户应尽快升级到版本4.7.0,并在其确认策略中将 require_interaction? 设置为 true。这将把用于确认的GET请求更改为POST请求。

如果您升级到此版本但未将 require_interaction? 设置为 true,编译将失败,并显示一条指向此公告的消息。如果您确信自己不受影响,可以绕过此错误。

变通方案

用户在无需升级的情况下是否有方法修复或补救该漏洞? 您可以禁用确认路由并创建自己的实时视图(live view)。我们强烈建议您尽可能升级并利用内置视图。如果您不使用提供的视图,则需要添加一个确认LiveView,该视图对旧的确认URL执行POST请求而不是GET请求。您需要将令牌作为参数从链接中取出,并将其作为隐藏字段添加到表单中。该表单不应有输入项,只有一个按钮,该按钮将数据提交到确认URL。如果您使用Liveview,这将通过 phx-trigger-actionphx-action 完成。

参考

漏洞详情

  • CVE ID: CVE-2025-32782
  • GHSA ID: GHSA-3988-q8q7-p787
  • CVSS 总体评分: 5.3(中危)
  • CVSS v3 基础向量: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
  • 弱点(Weakness): CWE-306:关键功能缺失身份验证
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计