नियंत्रण प्रवाह अखंडता के बारे में तकनीकी विवरण
"कर्नेल में बड़ी संख्या में फ़ंक्शन पॉइंटर्स की उपलब्धता इस हमले पैटर्न की लोकप्रियता में सहायता करती है। भले ही हमलावर अपने स्वयं के निष्पादन योग्य कोड को इंजेक्ट नहीं कर सकते हैं, मौजूदा कर्नेल कोड के मनमाने हिस्सों को उनके शोषण को पूरा करने के लिए निष्पादित किया जा सकता है।
एलएलवीएमसीएफआई वैध कॉल लक्ष्यों को प्रतिबंधित करके और सीएफआई उल्लंघन का पता लगाने पर कर्नेल पैनिक को मजबूर करके इन हमलों को कम करने का प्रयास करता है। यह पुष्टि करने के लिए प्रत्येक अप्रत्यक्ष शाखा से पहले एक चेक जोड़ा जाता है कि लक्ष्य पता सही हस्ताक्षर के साथ एक वैध फ़ंक्शन की ओर इशारा करता है। यह एक अप्रत्यक्ष शाखा को एक मनमाना कोड स्थान पर जाने से रोकता है और यहां तक कि उन कार्यों को भी सीमित करता है जिन्हें बुलाया जा सकता है। यदि कोई बग पहुंच की अनुमति देता है, तो एक हमलावर अभी भी फ़ंक्शन पॉइंटर को बदलने में सक्षम होगा। लेकिन एलएलवीएम का सीएफआई 55% अप्रत्यक्ष कॉल को अधिकतम 5 संभावित लक्ष्यों तक और 80% को अधिकतम 20 लक्ष्यों तक सीमित करता है। प्रत्येक अप्रत्यक्ष शाखा के लिए सभी वैध कॉल लक्ष्य निर्धारित करने के लिए, कंपाइलर को एक ही बार में सभी कर्नेल कोड देखने की आवश्यकता होती है।
एलटीओ का उपयोग (लिंक समय अनुकूलन) इसे संभव बनाता है। एलएलवीएम के सीएफआई को एलटीओ के उपयोग की आवश्यकता होती है, जहां कंपाइलर सभी सी के लिए एलएलवीएम-विशिष्ट बिटकोड तैयार करता है संकलन इकाइयां, और एक एलटीओ-जागरूक लिंकर बिटकोड को संयोजित करने और इसे संकलित करने के लिए एलएलवीएम बैकएंड का उपयोग करता है देसी कोड।
सीएफआई के उपयोग की अनुमति के पूरक, एलटीओ पूरे कार्यक्रम विश्लेषण और क्रॉस-मॉड्यूल अनुकूलन के माध्यम से बेहतर रनटाइम प्रदर्शन प्राप्त करता है।
ThinLTO एलटीओ के प्रदर्शन में सुधार लगभग हो चुका है। थिनएलटीओ मोड में, नियमित एलटीओ की तरह, बजना संकलन चरण के बाद एलएलवीएम बिटकोड उत्सर्जित करता है। ThinLTO बिटकोड को मॉड्यूल के एक संक्षिप्त सारांश के साथ संवर्धित किया गया है। लिंक चरण के दौरान, केवल सारांश पढ़े जाते हैं और एक संयुक्त सारांश सूचकांक में विलय कर दिए जाते हैं, जिसमें बाद में क्रॉस-मॉड्यूल फ़ंक्शन आयात के लिए फ़ंक्शन स्थानों का एक सूचकांक शामिल होता है। बाद में संयुक्त सारांश सूचकांक पर तेज़ और कुशल संपूर्ण-कार्यक्रम विश्लेषण किया जाता है। ThinLTO एक बहु-थ्रेडेड लिंकिंग प्रक्रिया की अनुमति देता है, जिसके परिणामस्वरूप संकलन समय कम हो जाता है।
सीएफआई के कारण कुछ बग वर्गों को हिट करते समय प्रोग्राम निष्पादन में बाधा उत्पन्न होती है, जैसा कि पहले उल्लेख किया गया है, यह बग ढूंढने वाले टूल के रूप में भी वर्गीकृत होता है, जब अनुमेय मोड में उपयोग किया जाता है। अनुमेय सीएफआई कर्नेल लॉग में सीएफआई उल्लंघन दिखाएगा, बिना कर्नेल घबराहट के। कोर 4.9 (पिक्सेल 3 पीढ़ी के उपकरण) और 4.14 (पिक्सेल 4 पीढ़ी के उपकरण) कर्नेल में कई फ़ंक्शन प्रकार थे बेमेल के परिणामस्वरूप सीएफआई उल्लंघन हुआ, जिसे Google द्वारा कर्नेल/कॉमन पर उपलब्ध पैचसेट में संबोधित किया गया था रेपो.
हालाँकि, एंड्रॉइड इकोसिस्टम की प्रकृति के कारण, ये बेमेल SoC निर्माता (इस मामले में, क्वालकॉम) या OEM (वनप्लस) विशिष्ट कोड में भी पाए जाने की संभावना है। 4.19 कर्नेल से भिन्न क्वालकॉम-कोड में कई सीएफआई उल्लंघन वनप्लस 8 प्रो के लिए किरिसाकुरा कर्नेल पर तय किए गए थे (उदाहरण: 1, 2, 3).
अनुमेय सीएफआई में कर्नेल चलाने से वनप्लस ड्राइवरों से संबंधित कोड में सीएफआई उल्लंघन का भी पता चला (प्रासंगिक प्रतिबद्धताएं पाई जा सकती हैं) यहाँ और यहाँ). वनप्लस 8 प्रो के लिए किरीसाकुरा कर्नेल सीएफआई लागू के साथ चलता है, जो अपने उपयोगकर्ताओं को इस तरह के कोड पुन: उपयोग के हमलों से बचाता है।"
और पढ़ें
DIY उत्साही (यानी पुराने पीसी भागों का उद्धारकर्ता)। एक्लेयर दिनों से ही एंड्रॉइड का शौकीन उपयोगकर्ता, स्कंदा सिंगल-बोर्ड कंप्यूटिंग की दुनिया में हाल के विकास रुझानों का अनुसरण करना भी पसंद करता है।