Ash框架授权绕过漏洞:禁止请求下before_transaction钩子仍会执行

4 阅读2分钟

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

描述

概要

某些批量操作调用,当包含 before_transaction 钩子但没有 after_transaction 钩子时,在以批量操作方式调用时,会在授权检查之前执行 before_transaction 钩子,然后返回 Forbidden 错误。

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

影响范围

如果您的 createupdatedestroy 操作满足以下条件,则受影响:

  • 操作上包含 before_transaction 钩子,且没有 after_transaction 钩子
  • 该操作通过 Ash.bulk_* 回调使用(AshJsonApi 和 AshGraphql 对 update/destroy 操作正是这样使用的)

影响程度取决于这些 before_transaction 回调的性质——它们是否具有副作用,或者只是执行某些操作(如查询外部数据),以及您的 API 端点是否经过身份验证及何种身份验证方式。

严重性

该漏洞的严重性难以评估。before_transaction 钩子并不常用。此外,攻击者必须知道哪些操作可供利用,经过身份验证才能发起此类请求(即极少数情况会有策略阻止匿名查询执行),因此需要权限和内部知识。另外,该操作始终返回 Forbidden 错误,因此不会泄露任何信息。我们将在未来几天根据情况评估并调整严重性等级。

目前标记为高危,因为我们不清楚用户在其 before_transaction 钩子中放置了什么逻辑,理论上可能造成严重后果。

临时解决方案

您应尽快更新。如果因故无法更新,可以在这些 before_transaction 钩子中添加逻辑,阻止其在不应执行时执行其逻辑。

参考资料

漏洞指标

指标分值/说明
CVSS v4 基础分7.1 / 10 (高危)
EPSS 评分0.074% (第23百分位)
弱点类型CWE-863 (不正确的授权)

CVSS v4 基础指标

可利用性指标

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

受影响系统影响指标

  • 机密性:无
  • 完整性:高
  • 可用性:低

后续系统影响指标

  • 机密性:无
  • 完整性:无
  • 可用性:无

受影响版本

  • 受影响版本:≤ 3.5.38
  • 修复版本:3.5.39

软件包

  • Erlang:ash (Erlang) glyoVzOLZA9nMhz/bDHDAWzfRfZ0dSZtQUalpUyOmxcHWCcbjeeGk+yedIFbCPw7GOg3++U4eSaSJa8verq5CQ==