CVE-2025-48042:Ash框架中某些情况下请求被禁止前仍可能执行Hook
概述
在某些包含before_transaction钩子但不包含after_transaction钩子的批量操作调用中,当作为批量操作调用时,before_transaction钩子会在授权检查之前被调用,然后返回“禁止”错误。
影响
恶意用户即使未被授权执行整个操作,也可能导致before_action钩子运行。该before_action钩子可能执行敏感/昂贵的操作。
如果您满足以下条件,则会受到影响:
- 在某个创建、更新或销毁操作上设置了
before_transaction钩子,且该操作没有after_transaction钩子。 - 该操作通过
Ash.bulk_*回调被使用(AshJsonApi和AshGraphql为更新/销毁操作执行此操作)。
其重要性或影响程度取决于这些before_transaction回调的性质,例如它们是否具有副作用,或者是否执行诸如查找某些外部数据等操作。另外,也取决于您的API端点是否启用了身份验证以及身份验证的类型。
严重性
此漏洞的严重性很难评估。before_transaction钩子并不常用。此外,攻击者必须知道哪些操作对他们可用,并且需要通过身份验证才能发出此类请求(即,很少有针对阻止匿名查询运行的政策),因此需要一定的权限和内部知识。另外,操作将始终返回禁止错误,因此不会泄露任何信息。我们将在接下来几天根据需要进行评估并调整严重性级别。
鉴于我们并不清楚开发人员在before_transaction钩子中放置了何种逻辑,理论上可能造成严重后果,因此目前标记为“高危”。
解决方法
您应尽快更新。但如果由于某种原因无法更新,可以向这些before_transaction钩子添加逻辑,以防止它们在不应执行的时候执行其逻辑。
参考文献
- GHSA-jj4j-x5ww-cwh9
- https://nvd.nist.gov/vuln/detail/CVE-2025-48042
- ash-project/ash@5d1b6a5
受影响版本 <= 3.5.38
已修复版本 3.5.39
严重性 高危 (CVSS 4.0 总分:7.1) 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
弱点
- CWE-863:不正确的授权 当参与者尝试访问资源或执行操作时,产品执行授权检查,但未能正确执行该检查。这允许攻击者绕过预期的访问限制。
EPSS 分数 0.058%(第18个百分位数)