剣 KENSAI
Crítica CVE-2025-30065 Abril de 2026 · 8 min de lectura

CVE-2025-30065: RCE mediante deserialización de esquemas de Apache Parquet

Una vulnerabilidad de ejecución remota de código de máxima gravedad en la biblioteca Java de Apache Parquet permite a los atacantes ejecutar código arbitrario en cualquier sistema que lea un archivo Parquet malicioso. CVSS 10.0. Afecta prácticamente a todas las canalizaciones de macrodatos que utilizan el formato Parquet, incluidas Spark, Flink, Hive y los almacenes de datos en la nube.


10.0
CRÍTICA (MÁX.)
AtributoValor
ID de CVECVE-2025-30065
Vector CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWECWE-502: Deserialización de datos no confiables
Publicada1 de abril de 2025
ExplotaciónNo se ha informado de explotación activa (existe una PoC pública)

¿Qué es CVE-2025-30065?

Apache Parquet es un formato de almacenamiento en columnas ampliamente utilizado en ecosistemas de macrodatos. El módulo parquet-avro de las versiones hasta la 1.15.0 contiene una vulnerabilidad de deserialización en el código de análisis de esquemas. Cuando una aplicación Java lee un archivo Parquet que contiene un esquema Avro manipulado, el analizador deserializa referencias de clases controladas por el atacante, lo que permite ejecutar código arbitrario en el contexto de la aplicación lectora.

Esto resulta especialmente peligroso porque las canalizaciones de datos ingieren habitualmente archivos Parquet procedentes de fuentes externas: buckets de S3, socios de datos, cargas de usuarios e integraciones ETL. Cualquier canalización que procese archivos Parquet no confiables es vulnerable.

⚠ Vector de ataque a la cadena de suministro

CVE-2025-30065 crea un escenario convincente de ataque a la cadena de suministro: un atacante capaz de introducir archivos Parquet maliciosos en una canalización de datos —mediante un proveedor de datos comprometido, una configuración incorrecta de un bucket de S3 o un ataque de intermediario— obtiene la capacidad de ejecutar código en la infraestructura de procesamiento de datos, que podría incluir AWS EMR, Databricks, Azure HDInsight o clústeres locales de Hadoop que operen con credenciales privilegiadas de la nube.

Sistemas afectados

ComponenteVersiones afectadasVersión corregida
parquet-avro (Java)<= 1.15.01.15.1+
Apache Spark (utiliza parquet-avro)Cualquiera que utilice la biblioteca afectadaActualizar la biblioteca
Apache FlinkCualquiera que utilice la biblioteca afectadaActualizar la biblioteca
Apache HiveCualquiera que utilice la biblioteca afectadaActualizar la biblioteca
Amazon EMRVersiones que utilicen parquet-avro <= 1.15.0Actualizar EMR o sustituir el JAR
Databricks RuntimeVersiones que utilicen la biblioteca afectadaVersiones DBR corregidas por Databricks

Detalles técnicos

La vulnerabilidad se encuentra en la clase AvroSchemaConverter de parquet-avro. Al convertir un esquema Parquet en un esquema Avro, el código procesa metadatos del esquema que pueden contener nombres de clases arbitrarios. Estos nombres de clases se utilizan para realizar instanciaciones mediante reflexión sin validarlos contra una lista de permitidos.

# Representación conceptual de la ruta de código vulnerable
public Schema convert(MessageType parquetSchema) {
    // Los metadatos del esquema pueden contener cadenas controladas por el atacante
    String javaClass = parquetSchema.getField("java_class");
    // Peligroso: instancia una clase arbitraria a partir de una cadena
    Class clazz = Class.forName(javaClass);  // RCE aquí
    return clazz.newInstance();
}
# Archivo Parquet manipulado con un esquema malicioso (conceptual)
{
  "schema": {
    "type": "record",
    "name": "exploit",
    "fields": [],
    "java_class": "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl",
    "avro.java.string": "[código de bytes malicioso codificado en base64]"
  }
}

Explotación mediante una cadena de gadgets

El atacante crea un archivo Parquet cuyos metadatos del esquema Avro hacen referencia a una cadena de gadgets de Java: una secuencia de instanciaciones de clases que termina permitiendo la ejecución de código arbitrario. Commons Collections, Spring Framework y otras bibliotecas Java habituales proporcionan cadenas de gadgets adecuadas para este ataque.

Quién está expuesto

Cualquier aplicación Java que:

Los entornos de alto riesgo incluyen:

Mitigación

  1. Actualizar parquet-java a la versión 1.15.1 o posterior: la corrección añade validación mediante una lista de permitidos para los nombres de clases incluidos en los metadatos del esquema
  2. Auditar las fuentes de archivos Parquet: inventariar todas las ubicaciones por las que los archivos Parquet entran en su entorno
  3. Implementar la validación del origen de los archivos: procesar únicamente archivos Parquet procedentes de fuentes verificadas criptográficamente
  4. Ejecutar las canalizaciones de datos con privilegios mínimos: limitar el radio de impacto garantizando que los roles de ejecución de las canalizaciones cuenten con políticas IAM de privilegio mínimo
  5. Aplicar restricciones al tráfico saliente de la red: los clústeres de procesamiento de datos deben tener restringido el acceso saliente a Internet para limitar el impacto posterior a la explotación
  6. Implementar protecciones contra la deserialización de Java: herramientas como SerialKiller pueden proporcionar defensa en profundidad frente a ataques de deserialización

Capacidad de detección de KENSAI

¿Es vulnerable su canalización de datos a CVE-2025-30065?

KENSAI analiza sus aplicaciones Java, imágenes de contenedores e infraestructura de datos en la nube para detectar versiones vulnerables de Parquet. Proteja sus canalizaciones de datos antes de que los atacantes las exploten.

Analice su infraestructura de datos →

Artículos relacionados

La Comisión Europea investiga una brecha en la nube de AWS y el Consejo impone sanciones a empresas de ciberseguridad Redirigiendo... El ransomware LeakNet adopta ClickFix y el entorno de ejecución Deno