Ash框架CVE-2025-48042安全漏洞详解:授权绕过导致钩子函数异常执行

本文详细介绍了Ash框架中编号为CVE-2025-48042的高危安全漏洞。该漏洞存在于特定批量操作场景下,会导致`before_transaction`钩子在授权检查失败前被执行,可能被恶意用户利用以执行未授权的敏感或高开销操作。

概述

CVE-2025-48042 是 Ash(一个 Erlang 框架)中的一个安全漏洞。在特定场景下,当请求被禁止时,Ash 的钩子仍可能执行。

漏洞详情

摘要 某些带有 before_transaction 钩子但没有 after_transaction 钩子的批量操作调用,在以批量操作方式调用时,会在授权检查之前、并返回“禁止”错误之前,调用 before_transaction 钩子。

影响 恶意用户即使未被授权执行整个操作,也可能导致 before_transaction 钩子运行。该 before_action 可能执行敏感或高开销的操作。

如果您满足以下条件,则您会受到影响:

  • 您有一个创建、更新或销毁操作。
  • 该操作上配置了 before_transaction 钩子,并且没有配置 after_transaction 钩子。
  • 该操作正通过 Ash.bulk_* 回调被使用(AshJsonApi 和 AshGraphql 在更新/销毁操作时会这样做)。

其是否重要以及重要程度取决于这些 before_transaction 回调的性质。如果这些回调具有副作用,或者只是执行诸如查找某些外部数据之类的操作。这还取决于您的 API 端点是否在身份验证之后以及身份验证的类型。

严重性 此漏洞的严重性难以评估。before_transaction 钩子并不常用。此外,任何攻击者必须知道哪些此类操作对他们可用,并且需要通过身份验证才能发起此类请求(即,您很少会有策略阻止匿名查询的运行),因此需要具备权限和内部知识。另外,该操作将始终返回“禁止”错误,因此不会泄露信息。我们将在未来几天内根据需要进行评估并调整严重性等级。 目前标记为高危,因为我们确实不知道用户在他们的 before_transaction 钩子中放置了什么逻辑,理论上可能会非常糟糕。

受影响的版本 <= 3.5.38

已修复的版本 3.5.39

解决方案 您应尽快更新。但如果因故无法更新,可以在那些 before_transaction 钩子中添加逻辑,以防止它们在不应运行时执行其逻辑。

技术指标

  • CVSS 总体评分: 7.1 (高危)
  • 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百分位)
  • CWE: CWE-863 - 不正确的授权

参考信息

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