मैगलन की गलती: SQLite FTS का उपयोग करके बफर ओवररन या राउंड-द-वर्ल्ड अभियान

मैंने किसी तरह हबेरा पर हाल ही में मैगलन त्रुटि और इसके साथ जुड़ी कमजोरियों को दरकिनार किया, मैं इस चूक को ठीक करने की कोशिश करूंगा।


थोड़ा सा इतिहास


  • 1 नवंबर, 2018 को, एक बग रिपोर्ट संख्या 900910 ने क्रोमियम में उड़ान भरी: "वेबलाइट के माध्यम से SQLite में कई मुद्दे।" त्रुटि की सूचना Tencent ब्लेड टीम के वेनज़ियांग कियान ने दी है।
  • 5 नवंबर, 2018 को, त्रुटि SQLite लाइब्रेरी (FTS3) के मूल में बंद है, जहां यह वास्तव में उस समय से लगभग रहता है जब मॉड्यूल बनाया गया था, अर्थात। नवंबर 2009 से।
  • 28 नवंबर, 2018 को यह क्रोमियम में विलीन हो गया
  • थोड़ी देर बाद, Tencent ब्लेड टीम ने एक त्रुटि संदेश प्रकाशित किया , इसे मैगेलन नाम दिया, विशेष रूप से विवरण का खुलासा किए बिना, और यह दर्शाता है कि अभी तक तैयार किए गए कारनामों और पीओसी के प्रकाशन की योजना नहीं है।
  • एक हफ्ते बाद, इंटरनेट पीओसी से भरा है, क्रोम, इलेक्ट्रॉन देव-फ्रेमवर्क आदि को क्रैश कर रहा है। साक्ष्य और किसी भी अन्य जानकारी कि दुर्भावनापूर्ण उद्देश्यों के लिए भेद्यता का उपयोग किया गया था, अभी भी नहीं है।
  • DRH , Hacker News पर संदेह की पुष्टि करता है कि भेद्यता मौजूद है (कम से कम यदि "विदेशी" SQL क्वेरी के निष्पादन की अनुमति दी जाती है, या समान परिदृश्य के SQL इंजेक्शन)।

क्या कमजोर हो सकता है?


संभावित रूप से, सभी उपकरण और प्रोग्राम SQLite (FTS सक्षम के साथ) का उपयोग करके या इसके आधार पर आधारित अनुप्रयोगों (जैसे क्रोमियम) का उपयोग कर रहे हैं। किस हद तक वे प्रभावित हो सकते हैं और एक संभावित "हानि" का प्रभाव इस बात पर निर्भर करता है कि क्या एक उपयुक्त हमला वेक्टर पाया जाता है।


Magellan SQLite BUG के बारे में थोड़ा और अधिक


त्रुटि पूर्णांक उर्फ पूर्णांक अतिप्रवाह के योग के अतिप्रवाह के साथ जुड़ा हुआ है, जो तालिका के एफटीएस सूचकांक को बदलकर एफटीएस 3/4 उपतंत्र में हो सकता है, जो बदले में एक अपवाद के साथ स्मृति या समाप्ति का पुनर्लेखन हो सकता है।


इस पूर्णांक अतिप्रवाह के लक्षित कृत्रिम अनुप्रयोग, लेखन बफ़र्स के सक्षम "ट्रिमिंग" के माध्यम से, मेमोरी अतिप्रवाह की ओर जाता है, और भविष्य में इसका उपयोग विशेष रूप से निर्मित एसक्यूएल प्रश्नों द्वारा किया जा सकता है।


परिणामस्वरूप, सिद्धांत रूप में, कई एप्लिकेशन जो SQLite (वर्चुअल FTS तालिकाओं के साथ) का उपयोग करते हैं और, विशेष रूप से, लोकप्रिय ब्राउज़र जो SQLite पर आधारित FTS के साथ SQLite का समर्थन करते हैं (उदाहरण के लिए, Google Chrome, Chromium, Opera, Slimjet Browser, SRHare Iron, Torch, असुरक्षित हो सकते हैं)। कोमोडो ड्रैगन, कूलनोवो, यैंडेक्स ब्राउज़र, विवाल्डी, आदि)।


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


उदाहरण के लिए, एक ही जीवाश्म एससीएम , संशोधन इतिहास को संग्रहीत करने के लिए SQLite डेटाबेस का उपयोग करता है और आपको FTS के माध्यम से पूर्ण-पाठ अनुक्रमण का उपयोग करने की अनुमति देता है (और UI / वेब थूथन से इस तक पहुंच प्रदान करता है, जहां उदाहरण के लिए आपके स्वयं के SQL प्रश्न बनाने की संभावना है, उदाहरण के लिए कस्टम टिकट रिपोर्ट आदि)।


अद्यतन: DRH, भाग-सह लेखक और जीवाश्म के विकासकर्ता होने के नाते, जाहिरा तौर पर एक ही बात सोचा, और पहले से ही " छेद को बंद कर दिया " SQLite को 3.26.0 में अपडेट करके


इस तरह की "अनुमानित" अतिप्रवाह अपने आप में एक बहुत ही सुखद बात नहीं है, लेकिन अगर आपको याद है कि वास्तव में बैंक में खुद को कैसे संग्रहीत किया जा सकता है (पत्रिकाओं की सामग्री से लेकर तालिकाओं तक) ...
इसलिए, आलसी कामरेड न बनें ... और अपडेटेड, अपडेटेड हैं।


कहां से करें फिक्स?


पैच [940f2adc8541a838] को SQLite 3.25.3 अपडेट के हिस्से के रूप में प्रदान किया गया है (जिस पर क्रोमियम और सह। भी अपडेट किया गया है, उदाहरण के लिए, संस्करण 71.0.3578.80 में क्रोम)।


SQLite संस्करण 3.26 भी FTS कंटेनरों के लिए अतिरिक्त सुरक्षा सुविधाएँ प्रदान करता है, उदाहरण के लिए:

SQLITE_DBCONFIG_DEFENSIVE विकल्प सक्षम होने पर केवल-छाया तालिका के लिए समर्थन

इस भेद्यता का खतरा क्या है?


क्रिटिकल। दूरस्थ कोड निष्पादन की अनुमति देता है। एक मेमोरी लीक और प्रोग्राम क्रैश की भी संभावना है।


क्या भेद्यता का फायदा उठाने के लिए तैयार किए गए कारनामों के कोई उदाहरण हैं?


हां।


विशेष रूप से, Tencent ब्लेड टीम का दावा है कि उन्होंने इस भेद्यता का उपयोग करके Google होम पर एक हमले को सफलतापूर्वक अंजाम दिया (Google बग ट्रैकर पर समस्या का वर्णन बंद है), और जैसा कि ऊपर उल्लेख किया गया है, इस समय शोषण कोड का खुलासा करने की कोई योजना नहीं है।


भेद्यता के उपयोग की शर्तें?


वल्नरेबिलिटी को दूरस्थ रूप से निष्पादित किया जा सकता है, उदाहरण के लिए, जब एक निश्चित वेब पेज को ब्राउज़र में या किसी भी समान परिदृश्य में कहा जाता है, उदाहरण के लिए, एसक्यूएल स्टेटमेंट्स को निष्पादित करने की अनुमति (यदि एफटीएस अक्षम नहीं है, तो एक संभावित हमले वेक्टर का पता चलता है और / या कुछ अन्य कारकों की उपस्थिति या घटना शोषण के लिए अनुकूल है। जोखिम)।


यह संयोगवश, विशेष रूप से और विशेष रूप से FTS मॉड्यूल में (विशेष रूप से [56be976859294027] ) SQLite में ओवरफ्लो और बफर ओवररन के प्रकार की पहली गलती नहीं है, लेकिन यह संभव अनुप्रयोग और परिणामों के मूल्यांकन के तरीकों में संभवतः महत्व, सैद्धांतिक प्रभाव और सापेक्ष "पैमाने" में अपनी तरह का सबसे बड़ा है। इस का।

Source: https://habr.com/ru/post/hi433596/


All Articles