安全通告
安全研究
Safety Research
当前位置:首页>>安全研究 >> 安全通告

关于Apache Parquet Avro格式反序列漏洞安全预警通告 (CVE-2025-30065)

发布时间 2025-04-07

2025.4.7关于Apache Parquet Avro格式反序列漏洞安全预警通告

CVE-2025-30065

 

漏洞描述:

Apache Parquet Java是一个开源的工具,用于优化大规模数据处理。其中parquet-avro模块用于转换parquet格式与avro数据格式。

parquet-avro 1.15.0 及之前的版本中,AvroConverters.java中的FieldStringableConverter方法未对传入的stringableClass对象进行校验操作,导致在将parquet文件转换为avro的过程中可实例化任意类并调用构造方法,攻击者可利用该特性传入恶意parquet文件,执行任意代码。

修复版本通过checkSecurity函数来实现白名单限制,对传入的stringableClass对象进行校验,只允许受信任包下的stringableClass对象通过,限制反序列化的恶意类加载。

 

影响范围:

org.apache.parquet:parquet-avro 生态:maven

仓库类型maven受影响的版本(-∞, 1.15.1)最小修复版本1.15.1

修复方案:

1. 将组件 org.apache.parquet:parquet-avro 升级至 1.15.1 及以上版本

 

什么是反序列化

- 攻击者通过向受信任的数据序列化过程中添加恶意数据,从而在序列化和反序列化过程中执行恶意代码的攻击漏洞。这种漏洞通常存在于使用序列化 (serialization) 机制存储和传输数据的程序中。

 

反序列化常见的攻击方式

- 注入攻击:攻击者通过在序列化过程中注入恶意数据,将恶意代码注入到程序中,从而实现代码执行的目的。

- 反射攻击:攻击者使用反射机制,在序列化过程中动态生成恶意数据,并将恶意代码注入到程序中,从而实现代码执行的目的。

- 缓冲区溢出攻击:攻击者通过在序列化过程中向缓冲区输入恶意数据,导致缓冲区溢出,从而破坏程序的内存管理,实现代码执行的目的。

- 格式字符串攻击:攻击者通过在序列化过程中输入恶意数据,导致程序使用错误的格式字符串,从而实现代码执行的目的。

- 数据流攻击:攻击者通过在序列化过程中注入恶意数据,将恶意代码作为一个数据流传递给程序,从而实现代码执行的目的。

 

如何预防反序列化

- 不信任输入数据:程序应该严格检查输入数据的有效性,并避免使用不受信任的数据。

- 使用安全的序列化机制:程序应该使用安全的序列化机制,如 JSON 或 XML 序列化,而不是第三方序列化库。

- 最小特权原则:程序应该限制对受信任数据的处理权限,并避免在运行时修改数据。

- 代码审查和漏洞扫描:程序应该进行代码审查和漏洞扫描,以发现和修复潜在的安全漏洞。