概述
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 - 不正确的授权
参考信息
- GHSA ID: GHSA-jj4j-x5ww-cwh9
- NVD 详情页: https://nvd.nist.gov/vuln/detail/CVE-2025-48042
- 修复提交: ash-project/ash@5d1b6a5