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对象。当解析此元数据时,它可能在未经适当验证的情况下被反序列化,可能导致远程代码执行。
在受影响的版本中,反序列化在没有验证或沙箱的情况下执行,如果某些类路径可用,则会导致任意代码执行。攻击链通常涉及:
- 文件 – 攻击者创建一个恶意Parquet文件,其元数据中隐藏有害代码。
- 上传 – 该文件被上传或暴露给处理数据的系统。
- 触发 – 作业或查询从文件中读取恶意元数据。
- 运行 – 嵌入的代码在系统上运行,允许攻击者取得控制。
利用需要运行时环境允许执行反序列化的对象。可以使用ysoserial等工具生成PoC。这反映了Java生态系统中类似的历史攻击,包括在Apache Commons Collections中看到的那些。
临时解决方法和缓解措施
在应用补丁之前,组织应:
- 立即升级到Apache Parquet 1.15.1
- 避免处理来自不受信任或未知来源的Parquet文件。
- 对文件摄取工作流应用严格的允许列表。
- 在处理文件时使用沙箱技术(例如,Java SecurityManager、容器)。
- 审查类路径配置以防止任意类的反序列化。
不幸的是,除了应用官方补丁外,没有快速的缓解措施能完全消除风险。
检测指南
检测策略包括:
- 监控数据摄取工作流中的异常,特别是新引入或意外的Parquet文件。
- 密切关注使用易受攻击版本Apache Parquet的未维护来源。
- 审查历史数据摄取日志以寻找先前利用的迹象。
- 使用Microsoft安全功能处理CVE-2025-30065的指南
网络融合中心的行动
已发布Tenable的漏洞插件,但目前正在开发中,并密切跟踪Qualys的漏洞扫描定义。CFC目前正在调查是否可以在环境中部署大规模威胁狩猎规则。
参考
- https://cve.org/CVERecord?id=CVE-2025-30065
- https://nvd.nist.gov/vuln/detail/CVE-2025-30065
- https://parquet.apache.org/
- https://owasp.org/www-community/vulnerabilities/Deserialization_of_untrusted_data
- https://github.com/frohoff/ysoserial
- https://www.tenable.com/cve/CVE-2025-30065/plugins
- https://techcommunity.microsoft.com/blog/microsoftdefendercloudblog/guidance-for-handling-cve-2025-30065-using-microsoft-security-capabilities/4401362