Ash框架CVE-2025-48042漏洞:在请求被禁止前可能执行hook的授权绕过风险

本文详细分析了CVE-2025-48042安全漏洞,该漏洞影响Ash框架。在某些包含before_transaction钩子但无after_transaction钩子的批量操作中,授权检查会在钩子执行之后进行,可能导致未授权用户触发敏感操作。文章涵盖漏洞影响、受影响版本、修复建议及CVSS评分。

CVE-2025-48042:Ash框架中的授权绕过漏洞

摘要

在特定情况下,即使请求被禁止,Ash框架的钩子仍可能执行。

漏洞详情

该漏洞影响了Erlang包中的ash框架。受影响的版本为小于等于3.5.38的版本,已修复的版本为3.5.39。

描述

漏洞概述 某些带有before_transaction钩子但没有after_transaction钩子的批量操作调用,在作为批量操作调用时,会在授权检查之前调用before_transaction钩子,然后返回“禁止”错误。

影响 恶意用户可能导致before_transaction钩子运行,即使他们无权执行整个操作。该before_action钩子可能运行敏感/昂贵的操作。

如果您具有满足以下条件的创建、更新或销毁操作,则会受到影响:

  1. 该操作上有一个before_transaction钩子,并且没有after_transaction钩子。
  2. 正在通过Ash.bulk_*回调使用该操作(AshJsonApi和AshGraphql为更新/销毁操作执行此操作)。

是否产生影响或影响程度取决于这些before_transaction回调的性质。如果这些before_transaction回调具有副作用,或者只是执行诸如查找某些外部数据的操作。此外,还取决于您的API端点是否位于身份验证之后以及采用何种身份验证方式。

严重性 此漏洞的严重性难以评估。before_transaction钩子并不常用。此外,任何攻击者必须知道哪些功能对他们可用,并且经过身份验证才能发出此类请求(即,您很少有针对匿名查询运行设置阻止策略),因此需要权限和内部知识。此外,该操作将始终返回禁止错误,因此不会泄露任何信息。我们将在未来几天内根据需要评估并调整严重性级别。

鉴于我们确实不了解用户在其before_transaction钩子中放置了何种逻辑,并且理论上可能非常糟糕,目前将其标记为高风险

变通方案 您应尽快更新,但如果因故无法更新,可以向这些before_transaction钩子添加逻辑,以防止它们在应该执行之前执行其逻辑。

参考信息

安全评分

严重性:高风险 CVSS总体评分:7.1 / 10

CVSS v4 基础指标

可利用性指标

  • 攻击向量:网络
  • 攻击复杂度:低
  • 攻击要求:无
  • 所需权限:低
  • 用户交互:无

脆弱系统影响指标

  • 保密性影响:无
  • 完整性影响:高
  • 可用性影响:低

后续系统影响指标

  • 保密性影响:无
  • 完整性影响:无
  • 可用性影响:无

CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N

EPSS 评分

0.058% (第18百分位) 此分数估计了该漏洞在未来30天内被利用的概率。数据由FIRST提供。

缺陷关联

弱点:CWE-863 - 不正确的授权 产品在参与者尝试访问资源或执行操作时执行授权检查,但未能正确执行检查。这允许攻击者绕过预期的访问限制。在MITRE上了解更多信息。

标识符

  • CVE ID: CVE-2025-48042
  • GHSA ID: GHSA-jj4j-x5ww-cwh9

源代码仓库: ash-project/ash

致谢

  • zachdaniel - 修复开发者
  • maennchen - 分析师

发布日期: 2025年9月6日,在 ash-project/ash 更新日期: 2025年9月15日

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计