Ash框架授权漏洞分析:未授权执行before_transaction钩子的风险

本文详细分析了CVE-2025-48042漏洞,该漏洞存在于Ash框架中,允许恶意用户在请求被禁止的情况下仍能执行before_transaction钩子,可能导致敏感操作被未授权执行。

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

漏洞概述

CVE ID: CVE-2025-48042
GHSA ID: GHSA-jj4j-x5ww-cwh9
严重程度: 高危(CVSS评分7.1)
受影响版本: Ash框架 ≤ 3.5.38
修复版本: Ash框架 3.5.39

技术细节

漏洞描述

在某些包含before_transaction钩子但不包含after_transaction钩子的批量操作调用中,当作为批量操作调用时,系统会在检查授权和返回禁止错误之前调用before_transaction钩子。

影响分析

恶意用户即使未被授权执行整个操作,仍可能触发before_transaction钩子的执行。该before_action可能运行敏感/昂贵的操作。

受影响条件

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

  • 操作上配置了before_transaction钩子,且没有配置after_transaction钩子
  • 通过Ash.bulk_*回调使用(AshJsonApi和AshGraphql对更新/销毁操作执行此操作)

严重性评估

该漏洞的严重性难以准确评估,原因如下:

  • before_transaction钩子并不常用
  • 攻击者需要了解哪些功能可用,并且需要经过身份验证才能发出此类请求
  • 操作始终返回禁止错误,不会泄露任何信息
  • 需要权限和内部知识

考虑到无法确定开发人员在before_transaction钩子中放置的逻辑内容,理论上可能非常严重,因此当前标记为高危。

修复方案

立即更新

建议尽快更新到Ash框架3.5.39版本。

临时解决方案

如果无法立即更新,可以向这些before_transaction钩子添加逻辑,防止它们在应该执行之前执行其逻辑。

技术参考

  • 漏洞类型: CWE-863 不正确的授权
  • 攻击向量: 网络
  • 攻击复杂度: 低
  • 所需权限: 低权限
  • 用户交互: 无

受影响组件

  • : erlang
  • 框架: Ash (Erlang)
  • 相关接口: AshJsonApi, AshGraphql

该漏洞突显了在授权检查之前执行事务钩子可能带来的安全风险,特别是在批量操作场景下。开发人员应及时更新框架版本或实施相应的防护措施。

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