एलएलवीएम डेवलपर्स सी ++ में सुरक्षित बफर हैंडलिंग का प्रस्ताव देते हैं

एलएलवीएम लोगो

एलएलवीएम कंपाइलर विकसित करने के साथ-साथ नई प्रोग्रामिंग भाषाओं के निर्माण और मौजूदा भाषाओं में सुधार करने में मदद करने के लिए एक ढांचा है।

L एलएलवीएम परियोजना के डेवलपर्स ने सुरक्षा को मजबूत करने के उद्देश्य से कई बदलाव प्रस्तावित किए हैं प्रॉयक्ट्स का सी + + मिशन महत्वपूर्ण है और बफर ओवररन के कारण होने वाली त्रुटियों को खत्म करने का एक साधन प्रदान करता है।

जैसे, उन्होंने जो प्रस्ताव जारी किया वह विशेष रूप से दो क्षेत्रों में काम पर केंद्रित है: एक विकास मॉडल प्रदान करना जो बफर के साथ सुरक्षित रूप से काम करने की अनुमति देता है और libc++ मानक फ़ंक्शन लाइब्रेरी की सुरक्षा को मजबूत करने के लिए काम करता है।

यह उल्लेख किया गया है कि C++ के लिए प्रस्तावित सुरक्षित प्रोग्रामिंग मॉडल «कच्चे पॉइंटर्स में हेरफेर करने के बजाय बफर के साथ काम करते समय मानक पुस्तकालय द्वारा प्रदान की गई कक्षाओं का उपयोग करना है». उदाहरण के लिए, std::array, std::vector, और std::span कक्षाओं का उपयोग करने का प्रस्ताव है, जो आउट-ऑफ-बाउंड आवंटित मेमोरी के लिए रनटाइम चेक के साथ जोड़ा जाएगा।

हमारा लक्ष्य महत्वपूर्ण C++ कोड बेस की सुरक्षा में सुधार करना है। इसके लिए हम दो विचारों पर काम करने की योजना बना रहे हैं।

कठोर सी ++ मानक पुस्तकालय
सी++ सेफ बफर प्रोग्रामिंग मॉडल और एडॉप्शन टूल्स
कठोर libc++ का उद्देश्य C++ मानक पुस्तकालय इंटरफेस को सामान्य रूप से अधिक सुरक्षित बनाना है।

कठोर libc++ के साथ C++ का सुरक्षित बफर प्रोग्रामिंग मॉडल आउट-ऑफ-बाउंड मेमोरी एक्सेस के रनटाइम शमन प्रदान करता है। एडॉप्शन टूल इस नए प्रोग्रामिंग मॉडल में कोड के माइग्रेशन को स्वचालित करेंगे।

इसके अलावा, इसमें यह भी उल्लेख है कि "खतरनाक" प्रोग्रामिंग प्रथाओं का मुकाबला करने के लिए बजना में, अगर सभी सूचक अंकगणितीय परिचालनों के लिए संकलक चेतावनी जारी करने का प्रस्ताव करता है, "cppcoreguidelines-pro-bounds-pointer-arithmetic" ध्वज का उपयोग करते समय क्लैंग-टिडी लिटर चेतावनियों के समान, जिसके लिए समर्थन LLVM 16 में दिखाई देगा। ऐसी चेतावनियों को सक्षम करने के लिए, डिफ़ॉल्ट रूप से निष्क्रिय, क्लैंग में एक अलग ध्वज जोड़ा जाएगा .

यह libc++ में एक वैकल्पिक सुरक्षा मोड को लागू करने की योजना है, जो, सक्षम होने पर, कुछ स्थितियों का पता लगाएगा जो रनटाइम पर अपरिभाषित व्यवहार की ओर ले जाती हैं। उदाहरण के लिए, कक्षाओं में एसटीडी::स्पैन और एसटीडी::वेक्टर, एक आउट-ऑफ-बाउंड एक्सेस की निगरानी की जाएगी, जिस स्थिति में प्रोग्राम विफल हो जाएगा।

इन अतिरिक्त रनटाइम जाँचों को कई श्रेणियों में समूहीकृत किया जाएगा जिन्हें अलग से नियंत्रित किया जा सकता है। आशय यह है कि एक विक्रेता अपने प्लेटफॉर्म पर libc++ शिपिंग करता है, यह तय कर सकता है कि शिपिंग लाइब्रेरी (यदि कोई हो) में कौन से चेक को सक्षम करना है, यह वांछित सुरक्षा के स्तर पर निर्भर करता है।

डेवलपर्स का मानना ​​है कि इस तरह के परिवर्तन जोड़ने से libc++ C++ मानकों के अनुरूप रहेगा, क्योंकि अपरिभाषित व्यवहार के मामलों को संभालने का विकल्प लाइब्रेरी डेवलपर्स के पास है, जो अन्य बातों के अलावा, अपरिभाषित व्यवहार को लॉक के रूप में मान सकते हैं जिसके लिए प्रोग्राम की आवश्यकता होती है बाहर निकलना।

लास libc++ में रनटाइम जाँच को श्रेणियों में विभाजित करने की योजना है जिसे व्यक्तिगत रूप से शामिल किया जा सकता है। कुछ सुझाए गए चेक जिनके परिणामस्वरूप अधिक जटिल संचालन या ABI परिवर्तन नहीं होते हैं, पहले से ही libc++ के सुरक्षित मोड (सुरक्षित मोड) में लागू किए गए हैं।

दोहराने के लिए, अंतिम लक्ष्य शिप किए गए पुस्तकालय के लिए उत्पादन में इन चेकों को सक्षम करना है; यह "केवल डीबग" सुविधा नहीं है, हालांकि यह अंततः लंबे टूटे हुए "डीबग मोड" को बदल देगा।

इसके अलावा, कोड सुधार उपकरणों का एक सेट तैयार करने की योजना है जो कंटेनर में कच्चे पॉइंटर्स के साथ चर को बदलने की अनुमति देगा और उन परिस्थितियों में वैकल्पिक हैंडलर लागू करने की अनुमति देगा जहां कंटेनर सीधे पॉइंटर को प्रतिस्थापित नहीं कर सकता है (उदाहरण के लिए, "if(array_pointer)" निर्माण को "if(span.data (span.data) में परिवर्तित किया जा सकता है। )»)। सेटिंग्स को न केवल स्थानीय चर पर लागू किया जा सकता है, बल्कि पॉइंटर्स के साथ पैरामीटर टाइप करने के लिए भी लागू किया जा सकता है।

यह भी उल्लेख है कि "क्लैंग स्टैटिक एनालाइज़र चेकर" पर विचार कर रहे हैं संवेदनशील मार्ग जो चेतावनी देता है अगर एसटीडी::स्पैन एक कंटेनर से बनाया गया है जो स्पैन के कंस्ट्रक्टर में निर्दिष्ट आकार से छोटा है। उक्त चेकर स्व-निहित और अपने आप में उपयोगी है, यदि सब कुछ ठीक रहा तो यह सभी उपयोगकर्ताओं के लिए डिफ़ॉल्ट रूप से सक्षम हो जाएगा

अंत में यदि आप इसके बारे में अधिक जानने में रुचि रखते हैं, आप में विवरण देख सकते हैं निम्नलिखित लिंक।


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: एबी इंटरनेट नेटवर्क 2008 SL
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।