
يولّد ملفات Apache Parquet خبيثة لاختبار ثغرة CVE-2025-30065 من نوع RCE عبر استدعاء SSRF. مصمم لاختبارات الأمان المصرح بها لأنظمة معالجة Parquet-avro.
(`-. ('-.
_(OO )_ _( OO)
.-----,--(_/ ,. (,------. .-----. .----. .-----..------. .-----. .----. .----. ,--. .------.
' .--.\ \ /(__/| .---' .-')/ ,-. \/ .. \/ ,-. | ___| .-') / -. \/ .. \ / .. \ / .' | ___|
| |('-.\ \ / / | | _( OO'-' | . / \ '-' | | '--. _( OO)'-' _' . / \ . / \ . / -. | '--.
/_) |OO )\ ' /,(| '--(,------. .' /| | ' | .' /`---. '(,------. |_ <| | ' | | ' | .-. '`---. '.
|| |`-'| \ /__)| .--''------.' /__' \ / '.' /__.- | |'------.-. | ' \ / ' \ / ' \ | .- | |
(_' '--'\ \ / | `---. | |\ `' /| | `-' / \ `-' /\ `' / \ `' /\ `' /| `-' /
`-----' `-' `------' `-------' `---'' `-------'`----'' `----'' `---'' `---'' `----' `----''
Canary Exploit Generator - https://github.com/F5-Labs/parquet-canary-exploit-rce-poc-CVE-2025-30065
الحد الأدنى (تخطّي تعليمات README على مسؤوليتك الخاصة):
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
هل أنت من فريق الامتثال؟ من فريق أمن التطبيقات؟ من فريق إدارة الثغرات؟ صنعت F5 Labs هذه الأداة من أجلك. تحمل هذه الثغرة درجة CVSS تبلغ 10، وهو ما يعني عادةً الحاجة إلى أوقات تسليم ضيقة. قمنا بتجميع الأداة كملف jar يمكنه توليد ملف parquet لك. يمكنك إدخاله إلى أنظمتك الخاصة لتحديد ما إذا كانت عرضة للثغرة - وهو أمر مفيد قبل الإصلاح وبعده.
يعود الفضل في الأجزاء الداخلية لإثبات المفهوم هذا إلى Mouad Kondah. ويناقش تقريرهم المؤرخ في 2025-04-07 هذه الثغرة وإثباتات المفهوم الخاصة بهم.
يستغل ملف parquet السلوك في parquet-avro الذي يسمح بتمرير String جافا غير موثوق إلى مُنشئ فئة جافا عشوائية. أنت توفّر عنوان URL للاستدعاء (callback)، وعندما يقرأ نظامك ملف parquet، سيؤدي ذلك إلى محاولة كائن javax.swing.JEditorPane الوصول إلى ذلك العنوان. هذا الأمر غير ضار.
هل تريد نظرة سريعة على أداة استغلال الكناري؟ شاهد فيديو YouTube القصير هذا الذي يستغرق دقيقتين لتجربة حية: [فيديو توضيحي].
لاحظ أن 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 install" هنا). إذا كنت معتادًا على تثبيت 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
يمكن الآن إدخال هذا الملف في نظامك. إذا كان نظامك عرضة للثغرة، فستتلقى استدعاءً (callback). راجع أيضًا قسم المحاذير.
لراحتك، سيؤدي هذا إلى توليد الملف أيضًا إذا لم يكن موجودًا بالفعل.
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 للحصول على التفاصيل القانونية.