当前位置: 首页 > news >正文

AshPostgres 政策绕过漏洞:空原子更新操作可能触发副作用

CVE-2024-49756:AshPostgres 中空、原子、非批量操作的副作用策略绕过漏洞

概述

在特定且非常具体的情况下,更新操作的策略可能会被跳过。这种情况仅发生在“空”更新操作(无更改字段)上,并且会导致其钩子(副作用)在不应执行时被执行。请注意,这不允许读取用户本不应有权访问的新数据,仅允许触发用户本不应能够触发的副作用。

受影响条件

您的更新操作必须满足以下所有条件:

  1. 位于一个不包含具有“更新默认值”属性(例如 updated_at 时间戳)的资源上。
  2. 可以原子方式执行。
  3. 没有设置 require_atomic? false
  4. 至少有一个授权器(通常是 Ash.Policy.Authorizer)。
  5. 至少有一个变更(在资源的变更块中或在操作本身中)。此处是副作用本不应执行却得以执行的地方。

如何判断是否受影响

是否存在您手动调用此操作的情况,即使用 Ash.update
请注意,AshGraphqlAshJsonApi 的操作调用不受影响,因为它们使用 Ash.bulk_update

如果是,是否存在您以零输入调用该操作,并且它产生零更改字段的情况。
如果是,它是否会产生副作用?这意味着您有一个 after_action 钩子来调用其他资源。
如果是,该副作用是否会绕过另一个资源的策略?例如,使用 authorize?: false,或未提供相同的参与者(actor)。

分隔线以上的内容可以使用提供的脚本检查。分隔线以下的内容必须手动检查。用于检查此问题的脚本可在“我可能受影响吗”部分获取。
该脚本可能存在误报,但不会有任何漏报。因此,如果您运行脚本,并且它显示“未发现潜在漏洞”,那么您只需更新 ash_postgres 即可。

受影响的版本

  • 受影响版本>= 2.0.0, < 2.4.10
  • 已修复版本2.4.10

补丁

此问题已在 ash_postgres 的 2.4.10 版本中修复。

变通方案

您可以:

  1. 使用脚本确定您的任何操作都不易受攻击。
  2. 为任何可能受影响的更新操作添加 require_atomic? false
  3. 将受影响操作的任何 Ash.update 用法替换为 Ash.bulk_update
  4. 为您的操作添加一个更新时间戳。

我可能受影响吗?

此 Gist 提供了一个您可以运行的脚本来检测是否存在潜在漏洞:
https://gist.github.com/zachdaniel/e49166b765978c48dfaf998d06df436e

参考资料

  • 原始报告/发现:https://elixirforum.com/t/empty-update-action-with-policies/66954
  • 修复提交:ash-project/ash_postgres@1228fcd
  • 参考链接:
    • GHSA-hf59-7rwq-785m
    • ash-project/ash_postgres@1228fcd
    • https://elixirforum.com/t/empty-update-action-with-policies/66954
    • https://gist.github.com/zachdaniel/e49166b765978c48dfaf998d06df436e
    • https://nvd.nist.gov/vuln/detail/CVE-2024-49756

安全详情

  • 严重等级:中危(Moderate)
  • CVSS 总分:5.3
  • CVSS v3 向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
  • 弱点类型:CWE-552 - 外部各方可访问的文件或目录
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

http://www.jsqmd.com/news/71385/

相关文章:

  • [Git] [GitHub] 如何在将本地代码推送到github
  • 2025 最新水泥基渗透结晶型防水涂料厂家 TOP5 评测!技术创新 + 工程实证专业榜单发布,构筑混凝土长效防护屏障 - 全局中转站
  • Supabase 实战指南:从零开始搭建数据库、配置 Auth 并接入 Resend 邮件服务
  • 借助 AI Ping 的 Kimi-K2-Thinking 与 ClaudeCode 的加解密工具开发
  • python: 用os库判断进程是否在运行中?
  • 2025.12.10总结
  • 2025最新AWHFVC防腐厂家TOP5评测!混凝土防腐品牌年度榜单,技术创新+长效防护,守护工业基建安全防线 - 全局中转站
  • 嵌入式原理图设计基础:电源/复位/时钟/IO接口电路全解析
  • Enhance European/American Repairs with OTOFIX D1 Plus 1-Year Update Subscription
  • Yarn vs npm:现代前端包管理器的深度对比
  • CAD技巧
  • 2025 最新玻璃钢防腐厂家 TOP5 评测!技术创新 + 工程实证权威榜单发布,赋能工业设施长效防护生态 - 全局中转站
  • 散修带你入门鸿蒙应用开发基础第六节:变量的作用域与生命周期 - 鸿蒙
  • 2025医疗器械全球法规注册咨询辅导选择评测报告 - 优质品牌商家
  • keil5下载安装教程详细步骤(附安装包)Keil MDK v5.40下载安装详细教程
  • 2025氢力守护!富氢水灌装水处理设备TOP5:高浓稳定促灌装 - 极欧测评
  • One Year AUTEL MK808S Update Service: Enhance Diagnostics Repairs for EU/American Vehicles
  • 在 RTX 5070 + WSL 上使用 VGGT 替代 COLMAP 加速 3DGS 训练 - 天马行空
  • Unity 场景切换
  • 散修带你入门鸿蒙应用开发基础第五节:函数的定义与使用 - 鸿蒙
  • 《Ai元人文构想:黑箱之渡,白箱之锚——大行为模型践行意义行为原生》及其相关的分析稿与研究稿的阐述
  • 2025最新防腐涂料及工程厂家TOP5评测!技术创新+工程实证权威榜单发布,守护工业设施长效安全 - 全局中转站
  • 移动端_设计师值得收藏的10个Mobile端UI组件库10个WEB端UI框架[转]
  • 用 ssldump 跟踪 tls 障碍
  • 12-10午夜盘思
  • Maven介绍安装与IDEA应用(JavaWeb)
  • 提升视频语义分割标注效率的新方法
  • 实用指南:Python + uiautomator2 手机自动化控制教程
  • 实用指南:Python + uiautomator2 手机自动化控制教程
  • Buuctf-babyheap_0ctf_2017