
Генерирует вредоносные файлы Apache Parquet для проверки уязвимости RCE CVE-2025-30065 через обратный вызов SSRF. Предназначен для авторизованного тестирования безопасности систем обработки Parquet-avro.
(`-. ('-.
_(OO )_ _( OO)
.-----,--(_/ ,. (,------. .-----. .----. .-----..------. .-----. .----. .----. ,--. .------.
' .--.\ \ /(__/| .---' .-')/ ,-. \/ .. \/ ,-. | ___| .-') / -. \/ .. \ / .. \ / .' | ___|
| |('-.\ \ / / | | _( OO'-' | . / \ '-' | | '--. _( OO)'-' _' . / \ . / \ . / -. | '--.
/_) |OO )\ ' /,(| '--(,------. .' /| | ' | .' /`---. '(,------. |_ <| | ' | | ' | .-. '`---. '.
|| |`-'| \ /__)| .--''------.' /__' \ / '.' /__.- | |'------.-. | ' \ / ' \ / ' \ | .- | |
(_' '--'\ \ / | `---. | |\ `' /| | `-' / \ `-' /\ `' / \ `' /\ `' /| `-' /
`-----' `-' `------' `-------' `---'' `-------'`----'' `----'' `---'' `---'' `----' `----''
Canary Exploit Generator - https://github.com/F5-Labs/parquet-canary-exploit-rce-poc-CVE-2025-30065
The bare minimum (skip the README instructions at your own risk):
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
Специалисты по соответствию? AppSec? Управление уязвимостями? F5 Labs создала это для вас. Этот CVE имеет оценку CVSS 10, что обычно означает необходимость быстрых сроков выполнения. Мы упаковали инструмент в jar-файл, который может сгенерировать для вас parquet-файл. Вы можете скормить его своим системам, чтобы определить, уязвимы ли они — это полезно как до, так и после исправления.
Авторство внутренностей этого PoC принадлежит Mouad Kondah. В их статье от 2025-04-07 обсуждается этот CVE и их PoC.
Parquet-файл злоупотребляет поведением в parquet-avro, которое позволяет передавать непроверенную Java String конструктору произвольного Java-класса. Вы предоставляете URL обратного вызова, и когда ваша система читает parquet-файл, это приводит к тому, что объект javax.swing.JEditorPane пытается достичь этого URL. Это безвредно.
Хотите быстро ознакомиться с канареечным эксплойт-инструментом? Посмотрите это двухминутное YouTube Short для живой демонстрации: [демо-видео].
Обратите внимание, что существует два сценария уязвимости, о которых известно F5 Labs для модуля parquet-avro:
String к другим типам.org.apache.parquet.avro.SERIALIZABLE_PACKAGES установлен во что-то разрешительное, например *.Вы можете использовать это с чем угодно, к чему ваша система может иметь исходящий доступ (DNS и/или HTTP(S)). Если у вас нет исходящего доступа любого рода в интернет, то рассмотрите что-то, что достижимо внутри вашего дата-центра, для чего вы можете получить логи доступа DNS или HTTP. Имейте в виду, что неправильная настройка приведет к ложноотрицательному результату. Весьма нетипичные настройки org.apache.parquet.avro.SERIALIZABLE_PACKAGES также могут привести к ложноотрицательному результату, см. предыдущий раздел.
Мы рекомендуем вам прочитать и понять код и собрать его самостоятельно. Для вашего удобства мы предоставляем дистрибутивную сборку кода в виде jar-файла в этом репозитории.
Вам потребуется JDK 21 или новее для сборки или запуска генератора (поисковые запросы типа «установка OpenJDK21» могут помочь). Если вы знакомы с установкой JDK, вот краткие инструкции:
brew install openjdk@21sudo apt install openjdk-21-jdksudo yum install java-21-openjdkВы можете либо скачать jar, либо клонировать репозиторий.
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
Ожидаемый вывод:
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
Ожидаемый вывод:

Сначала определите, каким должен быть YOUR_CALLBACK_URL. Вам нужно иметь возможность обнаружить, когда ваш бэкенд, обрабатывающий parquet, либо разрешает доменное имя URL, либо запрашивает URL с веб-сервера. Вы можете рассмотреть canarytokens.org «Web bug» или «DNS» для этого. Подробнее см. в разделе «Подводные камни» выше.
Выполните эту команду:
java -jar build/libs/parquet_canary_exploit-fat.jar --mode=generate YOUR_CALLBACK_URL
Это создаст poc.parquet. Проверьте следующим образом:
file poc.parquet
Должен быть вывод:
poc.parquet: Apache Parquet
Теперь этот файл можно скормить вашей системе. Если ваша система уязвима, вы получите обратный вызов. Также см. раздел «Подводные камни».
Для удобства это также создаст файл, если его еще нет.
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
Смотрите CanaryExploitGenerator.testParquetFile() о том, как читается parquet-файл. Вот как будет выглядеть код в глубине вашей системы:
ParquetReader reader = AvroParquetReader.builder(inputFile).build();
// enough to trigger the construction of javax.swing.JEditorPane
Object object = reader.read();
Этот инструмент предназначен только для использования в авторизованных условиях тестирования безопасности. Ознакомьтесь с законами применимой юрисдикции. Подробнее о юридических аспектах см. в LICENSE.md.