CVE-2025-30065: Apache Parquet Schema Deserialisierung RCE
Eine Sicherheitslücke mit maximalem Schweregrad in der Java-Bibliothek von Apache Parquet ermöglicht es Angreifern, beliebigen Code auf jedem System auszuführen, das eine in böser Absicht erstellte Parquet-Datei liest. CVSS 10.0. Betrifft praktisch jede Big-Data-Pipeline, die das Parquet-Format verwendet – Spark, Flink, Hive und Cloud-Data-Warehouses.
CVE-2025-30065AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HWas ist CVE-2025-30065?
Apache Parquet ist ein säulenförmiges Speicherformat, das in Big-Data-Ökosystemen weit verbreitet ist. Das parquet-avro-Modul in Versionen bis 1.15.0 enthält eine Deserialisierungsschwachstelle im Schema-Parsing-Code. Wenn eine Java-Anwendung eine Parquet-Datei liest, die ein manipuliertes Avro-Schema enthält, deserialisiert der Parser vom Angreifer kontrollierte Klassenverweise, was zur Ausführung willkürlichen Codes im Kontext der lesenden Anwendung führt.
Dies ist besonders gefährlich, da Datenpipelines routinemäßig Parquet-Dateien aus externen Quellen aufnehmen: S3-Buckets, Datenpartner, Benutzer-Uploads, ETL-Integrationen. Jede Pipeline, die nicht vertrauenswürdige Parquet-Dateien verarbeitet, ist anfällig.
⚠ Supply-Chain-Angriffsvektor
CVE-2025-30065 schafft ein überzeugendes Angriffsszenario für die Lieferkette: Ein Angreifer, der bösartige Parquet-Dateien in eine Datenpipeline einschleusen kann (über einen kompromittierten Datenanbieter, eine S3-Bucket-Fehlkonfiguration oder einen Man-in-the-Middle-Angriff), erhält Codeausführung in der Datenverarbeitungsinfrastruktur – möglicherweise AWS EMR, Databricks, Azure HDInsight oder lokale Hadoop-Cluster, die mit privilegierten Cloud-Anmeldeinformationen ausgeführt werden.
Betroffene Systeme
Technische Details
Die Sicherheitslücke liegt in der Klasse AvroSchemaConverter innerhalb von parquet-avro. Beim Konvertieren des Parquet-Schemas in das Avro-Schema verarbeitet der Code Schema-Metadaten, die beliebige Klassennamen enthalten können. Diese Klassennamen werden bei der reflektierenden Instanziierung ohne Zulassungslistenvalidierung verwendet.
# Conceptual representation of vulnerable code path
public Schema convert(MessageType parquetSchema) {
// Schema metadata can contain attacker-controlled strings
String javaClass = parquetSchema.getField("java_class");
// Dangerous: instantiates arbitrary class from string
Class> clazz = Class.forName(javaClass); // RCE here
return clazz.newInstance();
}
# Crafted Parquet file with malicious schema (conceptual)
{
"schema": {
"type": "record",
"name": "exploit",
"fields": [],
"java_class": "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl",
"avro.java.string": "[base64-encoded malicious bytecode]"
}
}
Ausnutzung der Gadget-Kette
Der Angreifer erstellt eine Parquet-Datei, in der die Metadaten des Avro-Schemas auf eine Java-Gadget-Kette verweisen – eine Folge von Klasseninstanziierungen, die letztendlich zur Ausführung willkürlichen Codes führt. Commons Collections, Spring Framework und andere gängige Java-Bibliotheken bieten geeignete Gadget-Ketten für diesen Angriff.
Wer wird entlarvt
Jede Java-Anwendung, die:
- Verwendet
parquet-avroVersion 1.15.0 oder früher - Liest Parquet-Dateien aus externen oder potenziell nicht vertrauenswürdigen Quellen
- Hat die Dateiquellenvalidierung nicht implementiert
Zu den Umgebungen mit hohem Risiko gehören:
- Data Lakes: S3/GCS/ADLS-Buckets nehmen Partnerdaten auf
- Analyseplattformen: Self-Service-Funktionen zum Hochladen von Daten
- ETL-Pipelines: Alle Pipelines, die aus externen Datenquellen lesen
- Datenmarktplätze: Plattformen, die Parquet-Datensätze verteilen
- ML-Trainingspipelines: Aufnahme von Trainingsdaten aus externen Quellen
Abhilfe
- Aktualisieren Sie parquet-java auf 1.15.1+: Der Fix fügt eine Zulassungslistenvalidierung für Klassennamen in Schemametadaten hinzu
- Parquet-Dateiquellen prüfen: Inventarisieren Sie alle Speicherorte, an denen Parquet-Dateien in Ihre Umgebung gelangen
- Dateiquellenvalidierung implementieren: Nur Parquet-Dateien aus kryptografisch verifizierten Quellen verarbeiten
- Datenpipelines mit minimalen Berechtigungen ausführen: Begrenzen Sie den Blast-Radius, indem Sie sicherstellen, dass Pipeline-Ausführungsrollen über IAM-Richtlinien mit den geringsten Berechtigungen verfügen
- Einschränkungen für ausgehenden Netzwerkverkehr: Datenverarbeitungscluster sollten über einen eingeschränkten ausgehenden Internetzugriff verfügen, um die Auswirkungen nach der Ausnutzung zu begrenzen
- Stellen Sie Java-Deserialisierungsschutz bereit: Tools wie SerialKiller können einen umfassenden Schutz gegen Deserialisierungsangriffe bieten
KENSAI-Erkennungsfähigkeit
- Abhängigkeitsscan: Der SCA-Scanner von KENSAI identifiziert
parquet-avro-Versionen <= 1.15.0 in Java-Anwendungsabhängigkeiten und Maven/Gradle-Build-Dateien - Container-Image-Scanning: Erkennt anfällige JAR-Dateien in Docker-Images und Kubernetes-Bereitstellungen
- Pipeline-Expositionsbewertung: Identifiziert Datenpipelines mit nach außen gerichteten Parquet-Aufnahmeendpunkten
- Cloud-Asset-Inventar: Ordnet EMR-Cluster, Databricks-Arbeitsbereiche und andere Datenverarbeitungsinfrastrukturen für die Versionsbewertung zu.
Ist Ihre Datenpipeline anfällig für CVE-2025-30065?
KENSAI scannt Ihre Java-Anwendungen, Container-Images und Cloud-Dateninfrastruktur auf anfällige Parquet-Versionen. Schützen Sie Ihre Datenpipelines, bevor Angreifer sie ausnutzen.
Scannen Sie Ihre Dateninfrastruktur →