CVE-2025-48042:Ash框架中的授权绕过漏洞分析
概述
国家漏洞数据库(NVD)发布的CVE-2025-48042记录了一个存在于ash-project/ash框架中的“不正确的授权”漏洞。该漏洞的CVSS 4.0基础评分为7.1(高危)。漏洞源于特定场景下授权检查的逻辑缺陷,可能允许恶意用户在未被授权执行完整操作的情况下,触发本应在事务前执行的钩子函数。
漏洞描述
这是一个不正确的授权漏洞(CWE-863)。具体来说,当Ash框架处理特定的批量操作调用时,如果该操作配置了before_transaction钩子但未配置after_transaction钩子,框架可能会在检查用户授权并返回“禁止”错误之前,就先行调用before_transaction钩子。
受影响的版本:所有版本号小于等于3.5.38的ash包(Hex包管理器标识为pkg:hex/ash)。
已修复的版本:版本3.5.39。
影响与风险
- 核心影响:恶意用户可能诱使
before_transaction钩子执行,即使他们无权执行整个操作。这可能导致敏感的或消耗大量资源的操作被未授权触发。 - 受影响的条件:您开发的
create(创建)、update(更新)或destroy(销毁)操作需要满足:- 配置了
before_transaction钩子,且未配置after_transaction钩子。 - 通过
Ash.bulk_*回调(AshJsonApi和AshGraphql在处理update/destroy操作时会使用此方式)被调用。
- 配置了
- 风险程度:实际风险取决于
before_transaction回调函数内部的具体逻辑。如果这些回调函数会产生副作用(例如修改外部状态)或执行如获取外部数据等操作,则风险较高。若API端点本身设有身份验证,风险则可部分缓解。 - 攻击限制:攻击者需要已通过身份验证(因为此类查询很少允许匿名进行),并知晓存在此类可利用的端点。最终操作仍会返回“禁止”错误,不会泄露信息。
技术细节与修复
- 涉及的文件与函数:
- 源文件:
lib/ash/actions/create/bulk.ex,lib/ash/actions/destroy/bulk.ex,lib/ash/actions/update/bulk.ex - 相关函数:
'Elixir.Ash.Actions.Create.Bulk':run/5,'Elixir.Ash.Actions.Destroy.Bulk':run/6,'Elixir.Ash.Actions.Update.Bulk:run'/6
- 源文件:
- 修复与建议:
- 首要措施:立即将ash框架升级到3.5.39或更高版本。
- 临时缓解:如果无法立即升级,可以修改受影响的
before_transaction钩子,添加逻辑以确保在正确的授权检查通过后才执行核心操作。
- 漏洞编号:
- CVE ID: CVE-2025-48042
- GHSA ID: GHSA-jj4j-x5ww-cwh9
漏洞评分(CVSS 4.0)
该漏洞的CVSS 4.0向量字符串为: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
- 攻击路径:网络(AV:N)
- 攻击复杂度:低(AC:L)
- 所需权限:低(PR:L)
- 对系统完整性的影响:高(VI:H)
- 对系统可用性的影响:低(VA:L)
- 对机密性的影响:无(VC:N)
时间线与参考
- NVD发布日期:2025年9月7日
- NVD最后修改日期:2025年9月8日
- 漏洞信息来源:EEF
- 参考链接:可通过GitHub Advisory Database等平台查询该CVE ID或GHSA ID以获取更多技术讨论和修复详情。