Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/c0gnit00/cve-2026-59827
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेपर और शोधलर्निंग और शिक्षाबाइनरी शोषण
GitHubc0gnit00/cve-2026-59827

CVE-2026-59827

CVE-2026-59827 पर ब्लॉग, असुरक्षित H2 क्वेरी आउटपुट डिसीरियलाइज़ेशन

रिपॉजिटरी देखें
142 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-59827 — Metabase में H2 क्वेरी परिणामों का असुरक्षित डीसीरियलाइज़ेशन

GHSA-w95f-x9v9-wv36 | CVSS 9.9 गंभीर | CWE-502: अविश्वसनीय डेटा का डीसीरियलाइज़ेशन

छवि लोड करने में त्रुटि

अवलोकन

CVE-2026-59827 एक गंभीर रिमोट कोड एक्ज़ीक्यूशन कमज़ोरी है, जो लोकप्रिय ओपन-सोर्स बिज़नेस इंटेलिजेंस और डेटा एनालिटिक्स प्लेटफ़ॉर्म Metabase में पाई गई है। यह दोष इस बात से उत्पन्न होता है कि Metabase H2 डेटाबेस कनेक्शन द्वारा लौटाए गए क्वेरी परिणामों को कैसे संभालता है। जब किसी H2 स्रोत के विरुद्ध एक नेटिव SQL क्वेरी OTHER टाइप के एक कॉलम को लौटाती है, तो Metabase बिना कोई सत्यापन किए उस कॉलम के कच्चे बाइट्स को एक जावा ऑब्जेक्ट में डीसीरियलाइज़ कर देता है। इसलिए एक प्रमाणित उपयोगकर्ता जो नेटिव क्वेरी चला सकता है, परिणाम सेट में एक दुर्भावनापूर्ण सीरियलाइज़्ड पेलोड को तस्करी कर सकता है और Metabase को होस्ट करने वाले सर्वर पर मनमाना कोड निष्पादन कर सकता है।

इस कमज़ोरी को 9.9 का CVSS स्कोर दिया गया था, जो आवश्यक न्यूनतम पूर्व शर्तों और सफल शोषण से होने वाले पूर्ण सर्वर-साइड कोड निष्पादन को दर्शाता है।


Metabase संस्करण योजना

Metabase एक ही रिलीज़ चक्र से दो समानांतर संस्करण ट्रैक जारी करता है। ओपन-सोर्स संस्करण में 0 उपसर्ग वाले संस्करण संख्याएँ होती हैं — उदाहरण के लिए, v0.61.1। एंटरप्राइज़ (वाणिज्यिक) संस्करण में 1 उपसर्ग वाले संस्करण संख्याएँ होती हैं — उदाहरण के लिए, v1.61.1। दोनों संस्करण एक ही अंतर्निहित कोडबेस साझा करते हैं और एक साथ जारी किए जाते हैं, इसलिए एक कमज़ोरी जो v1.61.0 को प्रभावित करती है, वह v0.61.0 को भी समान रूप से प्रभावित करती है। इस पूरे लेखन में, संस्करण संख्याएँ एंटरप्राइज़ 1.xx उपसर्ग का उपयोग करके लिखी गई हैं, लेकिन प्रत्येक प्रभावित संस्करण सीधे अपने 0.xx ओपन-सोर्स समकक्ष से मैप करता है, जिसमें प्रमुख 1 को 0 से बदल दिया जाता है।


प्रभावित संस्करण

CVE-2026-59826 और CVE-2026-59827 दोनों को जुलाई 2026 में एक साथ खुलासा किया गया था। वे ओवरलैपिंग संस्करण श्रेणियाँ साझा करते हैं लेकिन अलग-अलग पैच पॉइंट हैं।

CVE-2026-59827 — असुरक्षित डीसीरियलाइज़ेशन (यह ब्लॉग)

कमज़ोर एंटरप्राइज़ रिलीज़ 1.58.0 से 1.58.14, 1.59.0 से 1.59.11, 1.60.0 से 1.60.6.2, और 1.61.0 से 1.61.1.3 हैं। संबंधित ओपन-सोर्स रिलीज़ 0.58.0 से 0.58.14, 0.59.0 से 0.59.11, 0.60.0 से 0.60.6.2, और 0.61.0 से 0.61.1.3 हैं।

एक आंतरिक पैच पहले 1.61.1.4 (एंटरप्राइज़) और 0.61.1.4 (ओपन-सोर्स) के रूप में जारी किया गया था। 1.61 लाइन में पहली सार्वजनिक रूप से उपलब्ध निश्चित रिलीज़ 1.61.2 (v1.61.2.x / v0.61.2.x) है। Metabase Cloud उदाहरणों को प्रदाता द्वारा स्वचालित रूप से पैच किया गया था।

CVE-2026-59826 — असुरक्षित H2 कनेक्शन गुण (संबंधित)

कमज़ोर एंटरप्राइज़ रिलीज़ 1.55.0 से 1.58.15.0, 1.59.0 से 1.59.11, 1.60.0 से 1.60.6.2, और 1.61.0 से पूरी 1.61.1.x लाइन हैं। पहली पूरी तरह से पैच की गई सार्वजनिक रिलीज़ 1.61.2 (v1.61.2.x / v0.61.2.x) है। CVE-2026-59826 का दायरा व्यापक है, जो 1.55 रिलीज़ लाइन तक वापस जाता है, जो अपर्याप्त रूप से सत्यापित डेटाबेस-निर्माण कोड पथ के लंबे समय से मौजूद होने को दर्शाता है।


पृष्ठभूमि: जावा डीसीरियलाइज़ेशन

जावा का सीरियलाइज़ेशन तंत्र एक ऑब्जेक्ट को मेमोरी में बाइट्स की एक फ्लैट स्ट्रीम में बदलने, संग्रहीत करने या प्रेषित करने, और फिर ObjectInputStream.readObject() को कॉल करके बाद में पुनर्निर्माण करने की अनुमति देता है। इस तंत्र का महत्वपूर्ण गुण यह है कि पुनर्निर्माण कोड को निष्पादित करता है। क्लास कंस्ट्रक्टर, readObject ओवरराइड और फ़ाइनलाइज़र सभी डीसीरियलाइज़ेशन के दौरान चलते हैं। यदि पढ़े जा रहे बाइट्स किसी अविश्वसनीय स्रोत से आते हैं, तो एक हमलावर JVM में पहले से लोड मौजूदा, वैध क्लासेस के अनुक्रम के माध्यम से मनमानी विधि कॉल को ट्रिगर करने के लिए उन्हें तैयार कर सकता है। इन अनुक्रमों को गैजेट चेन के रूप में जाना जाता है।

गैजेट चेन को एप्लिकेशन में कोई नया कोड पेश करने की आवश्यकता नहीं होती है। वे मौजूदा लाइब्रेरी क्लासेस के वायरिंग का शोषण करते हैं जिनकी सामान्य विधियाँ, जब डीसीरियलाइज़ेशन के दौरान सही क्रम में बुलाई जाती हैं, अंततः Runtime.exec() जैसे सिंक तक पहुँचती हैं। ysoserial जैसे टूल विशेष रूप से Apache Commons Collections, Spring Framework और अन्य जैसी व्यापक रूप से तैनात लाइब्रेरियों के लिए इन पेलोड को उत्पन्न करने के लिए मौजूद हैं।


पृष्ठभूमि: H2 का OTHER प्रकार

H2 एक शुद्ध-जावा एम्बेडेड रिलेशनल डेटाबेस है। यह OTHER नामक एक विशेष SQL कॉलम प्रकार को परिभाषित करता है जो मनमाने जावा ऑब्जेक्ट्स के लिए पास-थ्रू के रूप में कार्य करता है। जब H2 किसी मान को OTHER कॉलम में संग्रहीत करता है, तो वह जावा के ObjectOutputStream द्वारा उत्पन्न बाइट्स लिखता है। जब वह मान वापस पढ़ता है, तो वह ऑब्जेक्ट को पुनर्निर्माण करने के लिए ObjectInputStream.readObject() को कॉल करता है। कच्चे सीरियलाइज़्ड बाइट्स को H2 के हेक्साडेसिमल लिटरल सिंटैक्स का उपयोग करके सीधे क्वेरी में भी आपूर्ति किया जा सकता है:

SELECT CAST(X'ACED0005...' AS OTHER); 
-- or 
SELECT X'ACED0005...'::OTHER;

ACED के बाद 0005 उपसर्ग जावा सीरियलाइज़ेशन स्ट्रीम मैजिक नंबर और प्रोटोकॉल संस्करण है। ACED0005 से शुरू होने वाली कोई भी हेक्स स्ट्रिंग एक जावा सीरियलाइज़्ड ऑब्जेक्ट स्ट्रीम है।

जब H2 इस क्वेरी को संसाधित करता है, तो वह डेटाबेस पक्ष पर हेक्स बाइट्स को डीसीरियलाइज़ करता है। परिणामी ऑब्जेक्ट तब JDBC ResultSet के माध्यम से कॉलिंग एप्लिकेशन को वापस भेज दिया जाता है। यदि एप्लिकेशन कॉलम मान का निरीक्षण करता है — उदाहरण के लिए, इसे प्रदर्शन के लिए फ़ॉर्मेट करने हेतु — तो यह अतिरिक्त प्रसंस्करण को ट्रिगर कर सकता है। कमज़ोर कोड पथ में Metabase बिल्कुल ऐसा ही करता है।


कमज़ोरी कैसे काम करती है

कमज़ोर कोड पथ

Metabase H2 ड्राइवर से JDBC ResultSet प्राप्त करता है और प्रत्येक मान को उपयोगकर्ता के लिए कैसे प्रस्तुत करना है, यह तय करने के लिए कॉलम मेटाडेटा का निरीक्षण करता है। जब यह JDBC प्रकार Types.OTHER (जिसे JAVA_OBJECT के रूप में भी रिपोर्ट किया जाता है) वाले कॉलम का सामना करता है, तो Metabase के कमज़ोर संस्करण एक प्रदर्शन योग्य प्रतिनिधित्व उत्पन्न करने के लिए कच्चे बाइट्स को डीसीरियलाइज़ करने का प्रयास करते हैं। यह डीसीरियलाइज़ेशन कॉल, ObjectInputStream.readObject(), बिना किसी व्हाइटलिस्ट फ़िल्टरिंग या क्लास सत्यापन के निष्पादित होता है।

घटनाओं का क्रम इस प्रकार है:

  1. प्रमाणित हमलावर Metabase SQL क्वेरी संपादक खोलता है और एक कनेक्टेड H2 डेटाबेस को लक्षित करता है। नमूना डेटाबेस पर्याप्त है।
  2. हमलावर एक नेटिव SQL क्वेरी प्रस्तुत करता है जो OTHER प्रकार का एक कॉलम लौटाती है जिसमें एक तैयार किया गया सीरियलाइज़्ड पेलोड होता है।
  3. H2 क्वेरी को संसाधित करता है और ResultSet में JAVA_OBJECT कॉलम के रूप में कच्चे बाइट्स लौटाता है।
  4. Metabase का परिणाम-प्रसंस्करण पाइपलाइन OTHER कॉलम प्रकार का सामना करता है और बाइट्स पर readObject() को कॉल करता है।
  5. पेलोड में एम्बेडेड गैजेट चेन फायर होती है, Runtime.exec() तक पहुँचती है और Metabase प्रक्रिया चलाने वाले OS उपयोगकर्ता के रूप में हमलावर के कमांड को निष्पादित करती है।

सुधार

पैच किए गए संस्करण किसी भी डीसीरियलाइज़ेशन का प्रयास करने से पहले JDBC परिणाम मेटाडेटा का निरीक्षण करके समस्या का समाधान करते हैं। यदि कोई कॉलम JAVA_OBJECT के रूप में टाइप किया गया है, तो Metabase इसे पार्स करने का प्रयास करने के बजाय सीधे अस्वीकार कर देता है।


बाधाएँ और हमले की सतह

क्या पहुंच आवश्यक है

शोषण के लिए प्रमाणीकरण आवश्यक है। हमलावर के पास H2-समर्थित डेटाबेस पर नेटिव क्वेरी निष्पादन अनुमति वाला Metabase खाता होना चाहिए। व्यवस्थापक खाते डिफ़ॉल्ट रूप से इसे संतुष्ट करते हैं। नियमित उपयोगकर्ता खाते भी इस आवश्यकता को संतुष्ट कर सकते हैं यदि किसी व्यवस्थापक ने उन्हें संबंधित डेटाबेस के लिए नेटिव क्वेरी डेटा अनुमति प्रदान की हो।

H2 को डेटा वेयरहाउस के रूप में पहले ही हटा दिया गया था

Metabase ने 2023 में जारी संस्करण 0.46.6.4 में नए डेटा वेयरहाउस कनेक्शन के रूप में H2 जोड़ने के समर्थन को हटा दिया था। व्यवस्थापक इंटरफ़ेस के माध्यम से एक नया H2 कनेक्शन पंजीकृत करने का प्रयास करने पर "H2 is not supported as a data warehouse" त्रुटि लौटती है। यह निष्कासन पहले की H2-संबंधित कमज़ोरियों की प्रतिक्रिया थी और इसका उद्देश्य हमलावर-नियंत्रित H2 उदाहरणों से जुड़ने के जोखिम को समाप्त करना था।

टूल डाउनलोड करें