Ash身份验证库存在邮件链接自动点击账户确认漏洞(CVE-2025-32782)
漏洞描述
影响
账户创建流程中的确认环节当前使用通过邮件发送的链接触发的GET请求。某些邮件客户端和安全工具(例如Outlook、病毒扫描器和邮件预览器)可能会自动跟踪这些链接,从而无意中确认账户。这允许攻击者使用他人的电子邮件注册账户,并可能因受害者的邮件客户端而自动确认。
此漏洞不允许攻击者接管或访问现有账户或私人数据。它仅限于新账户的确认环节。
补丁
已在版本4.7.0中发布缓解措施。您还需要升级到ash_authentication_phoenix的2.6.0或更高版本,以利用自动生成的确认视图。该修复更新了确认流程,要求明确的用户交互(例如点击确认页面上的按钮),而不是通过GET请求执行确认。这确保了邮件客户端的自动链接预取或扫描不会无意中确认账户。
要缓解此漏洞,请遵循以下步骤:
- 升级 ash_authentication >= 4.7.0
- 升级 ash_authentication_phoenix >= 2.6.0(如果使用 ash_authentication_phoenix)
- 在您的确认策略中设置
require_interaction? true。 - 如果您使用上述的
auth_routes,则将confirm_route添加到您的路由器中。
设置 require_interaction? true
按如下方式修改您的确认策略:
|
|
将 confirm_route 添加到您的路由器
为了使用这个新的确认流程,您需要将其添加到您的路由器中以获得期望的行为。它将为新的确认页面LiveView添加一个新路由。请注意 path 和 token_as_route_param? 选项,这些选项是保持与当前默认值向后兼容所必需的。如果您以某种方式更改了这些路由,可能需要调整。
重要提示 - 置于 auth_routes 之上
如果使用 path 选项,并且路径以 /auth 或您配置的 auth_routes_prefix 开头,请确保将其放在 auth_routes 之上。auth_routes 会贪婪地处理配置路径下的所有路由。
|
|
用户应尽快升级到版本4.7.0,并在其确认策略中将 require_interaction? 设置为 true。这将把用于确认的GET请求更改为POST请求。
如果您升级到此版本但未将 require_interaction? 设置为 true,编译将失败,并显示一条指向此公告的消息。如果您确信自己不受影响,可以绕过此错误。
变通方案
用户在无需升级的情况下是否有方法修复或补救该漏洞?
您可以禁用确认路由并创建自己的实时视图(live view)。我们强烈建议您尽可能升级并利用内置视图。如果您不使用提供的视图,则需要添加一个确认LiveView,该视图对旧的确认URL执行POST请求而不是GET请求。您需要将令牌作为参数从链接中取出,并将其作为隐藏字段添加到表单中。该表单不应有输入项,只有一个按钮,该按钮将数据提交到确认URL。如果您使用Liveview,这将通过 phx-trigger-action 和 phx-action 完成。
参考
- GHSA-3988-q8q7-p787
- team-alembic/ash_authentication@99ea389
- https://nvd.nist.gov/vuln/detail/CVE-2025-32782
漏洞详情
- 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:关键功能缺失身份验证