Apache Parquet反序列化漏洞导致严重RCE风险(CVE-2025-30065)

本文详细分析了Apache Parquet中存在的严重反序列化漏洞(CVE-2025-30065),该漏洞允许攻击者通过特制Parquet文件实现远程代码执行,影响包括Apache Spark、Hive等大数据处理框架,并提供了缓解措施和检测建议。

Apache Parquet – 通过反序列化实现的关键RCE(CVE-2025-30065)

摘要

2025年4月5日,披露了影响Apache Parquet的关键反序列化漏洞(CVE-2025-30065)。Apache Parquet是一种开源的列式数据文件格式,专为高效数据存储和检索而设计。它在大数据环境中广泛使用,并受到许多编程语言和分析工具的支持。此漏洞可在特定条件下被利用以实现远程代码执行(RCE),使其成为使用受影响版本的组织的高度优先问题。

该漏洞由独立安全研究人员发现,他们指出Parquet引擎中的不安全反序列化路径可以通过特制的输入文件触发。在Parquet文件被自动摄取和处理而没有严格验证的场景中,此漏洞尤其危险。虽然反序列化问题是众所周知的漏洞,但由于Parquet在数据处理工具中的广泛集成,这种情况代表了现代的利用机会。

受影响系统和应用

CVE-2025-30065影响Apache Parquet库以及任何使用它们来摄取或处理不受信任Parquet文件的系统。这包括:

  • Apache Parquet <= 1.15.0
  • 框架和应用程序,如Apache Spark、Apache Hive、Presto/Trino以及各种Python数据库(例如,PyArrow、具有Parquet集成的Pandas),当它们依赖于易受攻击的版本时。
  • 潜在的Delta Lake,如果构建在受影响的Parquet版本之上。
  • 任何自动从不受维护和/或不受信任来源消费Parquet文件的管道都面临更高的风险。

技术细节/攻击概述

此漏洞源于Apache Parquet文件解析机制中不安全的Java对象反序列化逻辑。攻击者可以制作一个Parquet文件,其元数据字段包含序列化的Java对象。当解析此元数据时,它可能在未经适当验证的情况下被反序列化,可能导致远程代码执行。

在受影响的版本中,反序列化在没有验证或沙箱的情况下执行,如果某些类路径可用,则会导致任意代码执行。攻击链通常涉及:

  1. 文件 – 攻击者创建一个恶意Parquet文件,其元数据中隐藏有害代码。
  2. 上传 – 该文件被上传或暴露给处理数据的系统。
  3. 触发 – 作业或查询从文件中读取恶意元数据。
  4. 运行 – 嵌入的代码在系统上运行,允许攻击者取得控制。

利用需要运行时环境允许执行反序列化的对象。可以使用ysoserial等工具生成PoC。这反映了Java生态系统中类似的历史攻击,包括在Apache Commons Collections中看到的那些。

临时解决方法和缓解措施

在应用补丁之前,组织应:

  • 立即升级到Apache Parquet 1.15.1
  • 避免处理来自不受信任或未知来源的Parquet文件。
  • 对文件摄取工作流应用严格的允许列表。
  • 在处理文件时使用沙箱技术(例如,Java SecurityManager、容器)。
  • 审查类路径配置以防止任意类的反序列化。

不幸的是,除了应用官方补丁外,没有快速的缓解措施能完全消除风险。

检测指南

检测策略包括:

  • 监控数据摄取工作流中的异常,特别是新引入或意外的Parquet文件。
  • 密切关注使用易受攻击版本Apache Parquet的未维护来源。
  • 审查历史数据摄取日志以寻找先前利用的迹象。
  • 使用Microsoft安全功能处理CVE-2025-30065的指南

网络融合中心的行动

已发布Tenable的漏洞插件,但目前正在开发中,并密切跟踪Qualys的漏洞扫描定义。CFC目前正在调查是否可以在环境中部署大规模威胁狩猎规则。

参考

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