CVE-2025-30065: Apache Parquet Schema Deserialization RCE
Apache Parquet की Java लाइब्रेरी में एक अधिकतम-गंभीरता वाली रिमोट कोड एक्ज़ीक्यूशन भेद्यता हमलावरों को किसी भी ऐसे सिस्टम पर मनमाना कोड निष्पादित करने देती है जो एक दुर्भावनापूर्ण रूप से क्राफ़्टेड Parquet फ़ाइल पढ़ता है। CVSS 10.0। यह Parquet फ़ॉर्मैट का उपयोग करने वाली लगभग हर बिग-डेटा पाइपलाइन को प्रभावित करती है — Spark, Flink, Hive, और क्लाउड डेटा-वेयरहाउस।
| विशेषता | मान |
|---|---|
| CVE ID | CVE-2025-30065 |
| CVSS Vector | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-502: अविश्वसनीय डेटा का डिसीरियलाइज़ेशन |
| प्रकाशित | 1 अप्रैल 2025 |
| शोषण | कोई सक्रिय शोषण रिपोर्ट नहीं हुआ (सार्वजनिक PoC मौजूद है) |
CVE-2025-30065 क्या है?
Apache Parquet एक कॉलमर स्टोरेज फ़ॉर्मैट है जो बिग-डेटा इकोसिस्टम में व्यापक रूप से उपयोग किया जाता है। parquet-avro मॉड्यूल 1.15.0 तक के वर्ज़न में स्कीमा-पार्सिंग कोड में एक डिसीरियलाइज़ेशन भेद्यता है। जब कोई Java एप्लिकेशन एक क्राफ़्टेड Avro स्कीमा वाली Parquet फ़ाइल पढ़ता है, तो पार्सर हमलावर-नियंत्रित क्लास-रेफ़रेंस को डिसीरियलाइज़ कर देता है, जिससे पढ़ने वाले एप्लिकेशन के संदर्भ में मनमाना कोड एक्ज़ीक्यूशन होता है।
यह ख़ासतौर पर ख़तरनाक है क्योंकि डेटा-पाइपलाइन नियमित रूप से बाहरी स्रोतों से Parquet फ़ाइलें लेती हैं: S3 बकेट, डेटा-पार्टनर, यूज़र-अपलोड, ETL इंटीग्रेशन। कोई भी पाइपलाइन जो अविश्वसनीय Parquet फ़ाइलें प्रोसेस करती है, भेद्य है।
⚠ सप्लाई-चेन अटैक वेक्टर
CVE-2025-30065 एक सशक्त सप्लाई-चेन हमला-परिदृश्य बनाता है: एक हमलावर जो डेटा-पाइपलाइन में दुर्भावनापूर्ण Parquet फ़ाइलें इंजेक्ट कर सकता है (भंग किए गए डेटा-वेंडर, S3 बकेट मिसकॉन्फ़िगरेशन, या man-in-the-middle हमले के ज़रिए) डेटा-प्रोसेसिंग इन्फ़्रास्ट्रक्चर में कोड एक्ज़ीक्यूशन हासिल कर लेता है — संभवतः प्रिविलेज्ड क्लाउड क्रेडेंशियल्स के साथ चल रहे AWS EMR, Databricks, Azure HDInsight, या ऑन-प्रिमाइसेस Hadoop क्लस्टर।
प्रभावित सिस्टम
| कंपोनेंट | प्रभावित वर्ज़न | फ़िक्स्ड वर्ज़न |
|---|---|---|
| parquet-avro (Java) | <= 1.15.0 | 1.15.1+ |
| Apache Spark (uses parquet-avro) | प्रभावित लाइब्रेरी उपयोग करने वाला कोई भी | लाइब्रेरी अपडेट करें |
| Apache Flink | प्रभावित लाइब्रेरी उपयोग करने वाला कोई भी | लाइब्रेरी अपडेट करें |
| Apache Hive | प्रभावित लाइब्रेरी उपयोग करने वाला कोई भी | लाइब्रेरी अपडेट करें |
| Amazon EMR | parquet-avro <= 1.15.0 उपयोग करने वाले वर्ज़न | EMR अपग्रेड करें या JAR ओवरराइड करें |
| Databricks Runtime | प्रभावित लाइब्रेरी उपयोग करने वाले वर्ज़न | Databricks DBR वर्ज़न पैच करता है |
तकनीकी विवरण
यह भेद्यता AvroSchemaConverter क्लास में है, जो parquet-avroके भीतर है। Parquet स्कीमा को Avro स्कीमा में बदलते समय, कोड स्कीमा-मेटाडेटा प्रोसेस करता है जिसमें मनमाने क्लास-नाम हो सकते हैं। इन क्लास-नामों का उपयोग एलाउलिस्ट-वैलिडेशन के बिना रिफ़्लेक्टिव इंस्टैंशिएशन में किया जाता है।
# Conceptual representation of vulnerable code path
public Schema convert(MessageType parquetSchema) {
// Schema metadata can contain attacker-controlled strings
String javaClass = parquetSchema.getField("java_class");
// Dangerous: instantiates arbitrary class from string
Class> clazz = Class.forName(javaClass); // RCE here
return clazz.newInstance();
}
# Crafted Parquet file with malicious schema (conceptual)
{
"schema": {
"type": "record",
"name": "exploit",
"fields": [],
"java_class": "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl",
"avro.java.string": "[base64-encoded malicious bytecode]"
}
}
गैजेट-चेन शोषण
हमलावर एक Parquet फ़ाइल बनाता है जहाँ Avro स्कीमा-मेटाडेटा एक Java गैजेट-चेन का संदर्भ देता है — क्लास-इंस्टैंशिएशन का एक क्रम जो अंततः मनमाना कोड एक्ज़ीक्यूशन की ओर ले जाता है। Commons Collections, Spring Framework, और अन्य आम Java लाइब्रेरी इस हमले के लिए उपयुक्त गैजेट-चेन प्रदान करती हैं।
कौन उजागर है
कोई भी Java एप्लिकेशन जो:
- इस्तेमाल करता है
parquet-avroवर्ज़न 1.15.0 या पुराना - बाहरी या संभावित रूप से अविश्वसनीय स्रोतों से Parquet फ़ाइलें पढ़ता है
- फ़ाइल-स्रोत वैलिडेशन लागू नहीं किया है
उच्च-जोखिम वाले एनवायरनमेंट में शामिल हैं:
- डेटा लेक: पार्टनर-डेटा लेने वाली S3/GCS/ADLS बकेट
- एनालिटिक्स प्लेटफ़ॉर्म: सेल्फ़-सर्विस डेटा-अपलोड सुविधाएँ
- ETL पाइपलाइन: बाहरी डेटा-स्रोतों से पढ़ने वाली कोई भी पाइपलाइन
- डेटा मार्केटप्लेस: Parquet डेटासेट वितरित करने वाले प्लेटफ़ॉर्म
- ML ट्रेनिंग पाइपलाइन: बाहरी स्रोतों से ट्रेनिंग-डेटा लेना
सुधार
- parquet-java को 1.15.1+ में अपग्रेड करें: यह फ़िक्स स्कीमा-मेटाडेटा में क्लास-नामों के लिए एलाउलिस्ट-वैलिडेशन जोड़ता है
- Parquet फ़ाइल-स्रोतों का ऑडिट करें: उन सभी स्थानों की सूची बनाएँ जहाँ से Parquet फ़ाइलें आपके एनवायरनमेंट में प्रवेश करती हैं
- फ़ाइल-स्रोत वैलिडेशन लागू करें: केवल क्रिप्टोग्राफ़िक रूप से सत्यापित स्रोतों से Parquet फ़ाइलें प्रोसेस करें
- न्यूनतम विशेषाधिकार के साथ डेटा-पाइपलाइन चलाएँ: पाइपलाइन-निष्पादन रोल में least-privilege IAM पॉलिसी सुनिश्चित करके ब्लास्ट-रेडियस सीमित करें
- नेटवर्क एग्रेस प्रतिबंध: पोस्ट-एक्सप्लॉइटेशन प्रभाव सीमित करने के लिए डेटा-प्रोसेसिंग क्लस्टर की आउटबाउंड इंटरनेट एक्सेस प्रतिबंधित होनी चाहिए
- Java डिसीरियलाइज़ेशन सुरक्षा डिप्लॉय करें: SerialKiller जैसे टूल डिसीरियलाइज़ेशन हमलों के ख़िलाफ़ डिफ़ेंस-इन-डेप्थ प्रदान कर सकते हैं
KENSAI पहचान क्षमता
- डिपेंडेंसी स्कैनिंग: KENSAI का SCA स्कैनर
parquet-avroवर्ज़न <= 1.15.0 को Java एप्लिकेशन डिपेंडेंसी और Maven/Gradle बिल्ड फ़ाइलों में पहचानता है - कंटेनर इमेज स्कैनिंग: Docker इमेज और Kubernetes डिप्लॉयमेंट में भेद्य JAR फ़ाइलों का पता लगाता है
- पाइपलाइन एक्सपोज़र आकलन: बाहरी-फ़ेसिंग Parquet इनजेशन एंडपॉइंट वाली डेटा-पाइपलाइन की पहचान करता है
- क्लाउड एसेट इन्वेंट्री: वर्ज़न-आकलन के लिए EMR क्लस्टर, Databricks वर्कस्पेस, और अन्य डेटा-प्रोसेसिंग इन्फ़्रास्ट्रक्चर को मैप करता है
क्या आपकी डेटा-पाइपलाइन CVE-2025-30065 के प्रति भेद्य है?
KENSAI आपके Java एप्लिकेशन, कंटेनर इमेज, और क्लाउड डेटा-इन्फ़्रास्ट्रक्चर को भेद्य Parquet वर्ज़न के लिए स्कैन करता है। हमलावरों के शोषण करने से पहले अपनी डेटा-पाइपलाइन की रक्षा करें।
अपना डेटा इन्फ़्रास्ट्रक्चर स्कैन करें →