एड्रेस स्पेस लेआउट रैंडमाइजेशन: Difference between revisions

From Vigyanwiki
No edit summary
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Computer security technique}}
{{Short description|Computer security technique}}
{{Use dmy dates|date=May 2019|cs1-dates=y}}
{{More citations needed|date=January 2018}}


एड्रेस स्पेस लेआउट रैंडमाइजेशन (एएसएलआर) एक [[कंप्यूटर सुरक्षा]] तकनीक है जो [[स्मृति भ्रष्टाचार]] [[भेद्यता (कंप्यूटिंग)]] के [[शोषण (कंप्यूटर सुरक्षा)]] को रोकने में शामिल है।<ref>{{Cite journal |last1=Marco-Gisbert |first1=Hector |last2=Ripoll Ripoll |first2=Ismael |date=2019-07-22 |title=एड्रेस स्पेस लेआउट रेंडमाइजेशन नेक्स्ट जेनरेशन|journal=Applied Sciences |language=en |volume=9 |issue=14 |pages=2928 |doi=10.3390/app9142928 |issn=2076-3417|doi-access=free }}</ref> उदाहरण के लिए, स्मृति में एक विशेष शोषित कार्य करने के लिए एक हमलावर को मज़बूती से कूदने से रोकने के लिए, ASLR एक [[प्रक्रिया (कंप्यूटर विज्ञान)]] के प्रमुख डेटा क्षेत्रों के [[पता स्थान]] की स्थिति को बेतरतीब ढंग से व्यवस्थित करता है, जिसमें [[निष्पादन]] योग्य का आधार और स्थिति शामिल है। ढेर आधारित स्मृति आवंटन, [[गतिशील स्मृति आवंटन]] और [[पुस्तकालय (कंप्यूटर विज्ञान)]]
एड्रेस स्पेस लेआउट रैंडमाइजेशन (एएसएलआर) एक [[कंप्यूटर सुरक्षा]] विधि है जो [[स्मृति भ्रष्टाचार]] [[भेद्यता (कंप्यूटिंग)]] के [[शोषण (कंप्यूटर सुरक्षा)]] को रोकने में सम्मिलित है।<ref>{{Cite journal |last1=Marco-Gisbert |first1=Hector |last2=Ripoll Ripoll |first2=Ismael |date=2019-07-22 |title=एड्रेस स्पेस लेआउट रेंडमाइजेशन नेक्स्ट जेनरेशन|journal=Applied Sciences |language=en |volume=9 |issue=14 |pages=2928 |doi=10.3390/app9142928 |issn=2076-3417|doi-access=free }}</ref> उदाहरण के लिए, स्मृति में एक विशेष शोषित कार्य करने के लिए एक हमलावर को शक्ति से कूदने से रोकने के लिए, एएसएलआर एक [[प्रक्रिया (कंप्यूटर विज्ञान)]] के प्रमुख डेटा क्षेत्रों के [[पता स्थान]] की स्थिति को निरुद्देश्यता से व्यवस्थित करता है, जिसमें [[निष्पादन]] योग्य का आधार और स्थिति सम्मिलित है। ढेर आधारित स्मृति आवंटन, [[गतिशील स्मृति आवंटन]] और [[पुस्तकालय (कंप्यूटर विज्ञान)]] है|


== इतिहास ==
== इतिहास ==
Linux [[PaX]] प्रोजेक्ट ने सबसे पहले ASLR शब्द गढ़ा, और जुलाई 2001 में #KASLR के लिए [[पैच (कंप्यूटिंग)]] के रूप में पहला डिज़ाइन और PaX#History प्रकाशित किया। इसे एक पूर्ण कार्यान्वयन के रूप में देखा जाता है, जो अक्टूबर 2002 से कर्नेल स्टैक रेंडमाइजेशन के लिए एक पैच भी प्रदान करता है।<ref>{{cite web |title=PaX: The Guaranteed End of Arbitrary Code Execution |url=https://grsecurity.net/PaX-presentation.pdf |at=Slides 22 through 35 |author=Brad Spengler |date=October 2003 |access-date=20 August 2015 |website=grsecurity.net}}</ref>
लिनक्स [[PaX|पैक्स]] प्रोजेक्ट ने सबसे पहले "एएसएलआर " शब्द गढ़ा, और जुलाई 2001 में लिनक्स कर्नेल के लिए एक पैच के रूप में एएसएलआर का पहला डिज़ाइन और कार्यान्वयन प्रकाशित किया। इसे एक पूर्ण कार्यान्वयन के रूप में देखा जाता है, जो अक्टूबर 2002 से कर्नेल स्टैक रेंडमाइजेशन के लिए एक पैच भी प्रदान करता है।
डिफ़ॉल्ट रूप से ASLR का समर्थन करने वाला पहला मेनस्ट्रीम ऑपरेटिंग सिस्टम 2003 में OpenBSD|3.4 का #OpenBSD संस्करण टाइमलाइन था,<ref name="OpenBSD-firstASLR"/><ref name="OpenBSD_Innovations-ASLR-PIE">{{cite web|title=ओपनबीएसडी नवाचार|url=https://www.openbsd.org/innovations.html|publisher=The OpenBSD project|access-date=12 September 2016}</ref> के बाद 2005 में Linux आया।
 
डिफ़ॉल्ट रूप से एएसएलआर को सहायता करने वाला पहला मुख्यधारा संचालन प्रणाली 2003 में ओपन बीएसडी वर्जन 3.4 था,,<ref name="OpenBSD-firstASLR" /><ref name="OpenBSD_Innovations-ASLR-PIE"><nowiki>{{cite web|title=ओपनबीएसडी नवाचार|url=</nowiki>https://www.openbsd.org/innovations.html|publisher=The OpenBSD project|access-date=12 September 2016}</ref> जिसके बाद 2005 में लिनक्स आया।


== लाभ ==
== लाभ ==
एड्रेस स्पेस रेंडमाइजेशन कुछ प्रकार के सुरक्षा हमलों में बाधा डालता है, जिससे हमलावर के लिए लक्षित पतों की भविष्यवाणी करना अधिक कठिन हो जाता है। उदाहरण के लिए, रिटर्न-टू-लिबक हमलों को अंजाम देने की कोशिश करने वाले हमलावरों को निष्पादित किए जाने वाले कोड का पता लगाना चाहिए, जबकि स्टैक पर इंजेक्ट किए गए [[ app ]] को निष्पादित करने की कोशिश करने वाले अन्य हमलावरों को पहले स्टैक को ढूंढना होगा। दोनों ही मामलों में, सिस्टम हमलावरों से संबंधित मेमोरी-एड्रेस को अस्पष्ट कर देता है। इन मूल्यों का अनुमान लगाया जाना है, और एक गलत अनुमान आमतौर पर एप्लिकेशन क्रैश होने के कारण पुनर्प्राप्त करने योग्य नहीं होता है।
एड्रेस स्पेस रेंडमाइजेशन कुछ प्रकार के सुरक्षा हमलों में बाधा डालता है, जिससे हमलावर के लिए लक्षित पतों की भविष्यवाणी करना अधिक कठिन हो जाता है। उदाहरण के लिए, रिटर्न-टू-लिबक हमलों को अंजाम देने की प्रयाश करने वाले हमलावरों को निष्पादित किए जाने वाले कोड का पता लगाना चाहिए, जबकि स्टैक पर इंजेक्ट किए गए [[ app |ऐप]] को निष्पादित करने की प्रयाश करने वाले अन्य हमलावरों को पहले स्टैक को ढूंढना होगा। दोनों ही स्थिति में, प्रणाली हमलावरों से संबंधित मेमोरी-एड्रेस को अस्पष्ट कर देता है। इन मानो का अनुमान लगाया जाना है, और एक गलत अनुमान सामान्यतः एप्लिकेशन क्रैश होने के कारण पुनर्प्राप्त करने योग्य नहीं होता है।


=== प्रभावशीलता ===
=== प्रभावशीलता ===
एड्रेस स्पेस लेआउट रेंडमाइजेशन एक हमलावर की कम संभावना पर आधारित है जो बेतरतीब ढंग से रखे गए क्षेत्रों के स्थानों का अनुमान लगाता है। सर्च स्पेस बढ़ाकर सुरक्षा बढ़ाई जाती है। इस प्रकार, रैंडम ऑफसेट में अधिक जानकारी एंट्रॉपी मौजूद होने पर पता स्थान यादृच्छिककरण अधिक प्रभावी होता है। एन्ट्रापी को या तो [[ आभासी मेमोरी ]] एरिया स्पेस की मात्रा बढ़ाकर बढ़ाया जाता है, जिस पर रैंडमाइजेशन होता है या उस अवधि को कम करता है जिस पर रैंडमाइजेशन होता है। अवधि को आम तौर पर जितना संभव हो उतना छोटा लागू किया जाता है, इसलिए अधिकांश प्रणालियों को वीएमए स्पेस रेंडमाइजेशन में वृद्धि करनी चाहिए।
एड्रेस स्पेस लेआउट रेंडमाइजेशन एक हमलावर की कम संभावना पर आधारित है जो व्यवस्थित ढंग से रखे गए क्षेत्रों के स्थानों का अनुमान लगाता है। सर्च स्पेस बढ़ाकर सुरक्षा बढ़ाई जाती है। इस प्रकार, रैंडम ऑफसेट में अधिक जानकारी एंट्रॉपी उपस्थित होने पर पता स्थान यादृच्छिककरण अधिक प्रभावी होता है। एन्ट्रापी को या तो [[ आभासी मेमोरी |आभासी मेमोरी]] एरिया स्पेस की मात्रा बढ़ाकर बढ़ाया जाता है, जिस पर रैंडमाइजेशन होता है या उस अवधि को कम करता है जिस पर रैंडमाइजेशन होता है। अवधि को सामान्यतः जितना संभव हो उतना छोटा प्रयुक्त किया जाता है, इसलिए अधिकांश प्रणालियों को वीएमए स्पेस रेंडमाइजेशन में वृद्धि करनी चाहिए।


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


निम्नलिखित चर घोषित किए जा सकते हैं:
निम्नलिखित चर घोषित किए जा सकते हैं:
* <math>E_s</math> (स्टैक टॉप के एंट्रॉपी बिट्स)
* <math>E_s</math> (स्टैक टॉप के एंट्रॉपी बिट्स)
* <math>E_m</math> (एन्ट्रॉपी बिट्स <code>mmap()</code> आधार)
* <math>E_m</math> (एन्ट्रॉपी बिट्स <code>एममैप ()</code> आधार)
* <math>E_x</math> (मुख्य निष्पादन योग्य आधार के एंट्रॉपी बिट्स)
* <math>E_x</math> (मुख्य निष्पादन योग्य आधार के एंट्रॉपी बिट्स)
* <math>E_h</math> (ढेर आधार के एंट्रॉपी बिट्स)
* <math>E_h</math> (ढेर आधार के एंट्रॉपी बिट्स)
* <math>A_s</math> (स्टैक एंट्रॉपी के प्रति प्रयास पर हमला किया गया बिट्स)
* <math>A_s</math> (स्टैक एंट्रॉपी के प्रति प्रयास पर हमला किया गया बिट्स)
* <math>A_m</math> (प्रति प्रयास बिट्स पर हमला किया <code>mmap()</code> बेस एंट्रॉपी)
* <math>A_m</math> (प्रति प्रयास बिट्स पर हमला किया <code>एममैप ()</code> बेस एंट्रॉपी)
* <math>A_x</math> (मुख्य निष्पादन योग्य एंट्रॉपी के प्रति प्रयास पर हमला किया गया बिट्स)
* <math>A_x</math> (मुख्य निष्पादन योग्य एंट्रॉपी के प्रति प्रयास पर हमला किया गया बिट्स)
* <math>A_h</math> (ढेर आधार एंट्रॉपी के प्रति प्रयास पर हमला किया गया बिट्स)
* <math>A_h</math> (ढेर आधार एंट्रॉपी के प्रति प्रयास पर हमला किया गया बिट्स)
Line 29: Line 28:
* <math>N</math> (एन्ट्रापी की कुल राशि: <math>N = (E_s-A_s) + (E_m-A_m) + (E_x-A_x) + (E_h-A_h)\,</math>)
* <math>N</math> (एन्ट्रापी की कुल राशि: <math>N = (E_s-A_s) + (E_m-A_m) + (E_x-A_x) + (E_h-A_h)\,</math>)


किसी हमलावर के सफल होने की संभावना की गणना करने के लिए, हमें कई प्रयास करने होंगे {{mvar|&alpha;}} हस्ताक्षर-आधारित IPS, कानून प्रवर्तन, या अन्य कारक द्वारा बाधित किए बिना किया गया; ब्रूट फ़ोर्सिंग के मामले में, डेमन को फिर से शुरू नहीं किया जा सकता है। हमें यह भी पता लगाना होगा कि कितने बिट्स प्रासंगिक हैं और प्रत्येक प्रयास में कितने पर हमला किया जा रहा है, हमलावर को कितने बिट्स को छोड़ना है।
किसी हमलावर के सफल होने की संभावना की गणना करने के लिए, हमें कई प्रयास करने होंगे {{mvar|&alpha;}} हस्ताक्षर-आधारित आईपीएस, नियम प्रवर्तन, या अन्य कारक द्वारा बाधित किए बिना किया गया; ब्रूट फ़ोर्सिंग के स्थिति में, डेमन को फिर से प्रारंभ नहीं किया जा सकता है। हमें यह भी पता लगाना होगा कि कितने बिट्स प्रासंगिक हैं और प्रत्येक प्रयास में कितने पर हमला किया जा रहा है, हमलावर को कितने बिट्स को छोड़ना है।


निम्नलिखित सूत्र दिए गए सेट के लिए सफलता की संभावना का प्रतिनिधित्व करते हैं {{mvar|&alpha;}} प्रयास करता है {{mvar|N}} एंट्रॉपी के बिट्स।
निम्नलिखित सूत्र एंट्रॉपी के {{mvar|N}} बिट्स पर {{mvar|&alpha;}} प्रयासों के दिए गए सेट के लिए सफलता की संभावना का प्रतिनिधित्व करते हैं।


* <math>g \left ( \alpha\, \right ) = 1 - { \left ( 1 - {2^{-N}} \right ) ^ \alpha\,} \,\text{ if } 0 \le \, \alpha\,</math> (पृथक अनुमान; प्रत्येक प्रयास के बाद पता स्थान को फिर से यादृच्छिक किया जाता है)
* <math>g \left ( \alpha\, \right ) = 1 - { \left ( 1 - {2^{-N}} \right ) ^ \alpha\,} \,\text{ if } 0 \le \, \alpha\,</math> (पृथक अनुमान; प्रत्येक प्रयास के बाद पता स्थान को फिर से यादृच्छिक किया जाता है)
* <math>b \left ( \alpha\, \right ) = \frac{\alpha\,}{{2^N}} \,\text{ if } 0 \le \, \alpha\, \le \, {2^N}</math> (समान पता स्थान के साथ कार्यक्रम की प्रतियों पर व्यवस्थित क्रूर बल)
* <math>b \left ( \alpha\, \right ) = \frac{\alpha\,}{{2^N}} \,\text{ if } 0 \le \, \alpha\, \le \, {2^N}</math> (समान पता स्थान के साथ कार्यक्रम की प्रतियों पर व्यवस्थित क्रूर बल)


कई प्रणालियों में, <math>2^N</math> हजारों या लाखों में हो सकता है; पर {{as of | 2009 | alt = modern}} [[64-बिट]] सिस्टम, ये संख्याएं आम तौर पर कम से कम लाखों तक पहुंचती हैं, हेक्टर मार्को-गिस्बर्ट और इस्माइल रिपोल ने 2014 में दिखाया कि कुछ परिस्थितियों में एक सेकंड से भी कम समय में 64-बिट सिस्टम में ASLR को कैसे बायपास किया जाए।<ref>{{cite web|last1=Marco-Gisbert|first1=Hector|first2=Ismael|last2=Ripoll|url=http://cybersecurity.upv.es/attacks/offset2lib/offset2lib-paper.pdf|title=On the Effectiveness of Full-ASLR on 64-bit Linux|date=20 November 2014}}</ref> 2004 की कंप्यूटर गति पर 32-बिट सिस्टम के लिए जिसमें एड्रेस रेंडमाइजेशन के लिए 16 बिट्स हैं, शचम और सहकर्मी राज्य ... 16 बिट्स एड्रेस रैंडमाइजेशन को मिनटों के भीतर एक क्रूर बल के हमले से हराया जा सकता है।<ref>{{cite conference|title=एड्रेस-स्पेस रेंडमाइजेशन की प्रभावशीलता पर|last1=Shacham|first1=H.|last2=Page|first2=M.|last3=Pfaff|first3=B.|last4=Goh|first4=E.J.|last5=Modadugu|first5=N.|last6=Boneh|first6=D|conference=11th ACM conference on Computer and communications security|pages=298–307|year=2004}}</ref> लेखकों का बयान बिना किसी देरी के एक ही एप्लिकेशन पर कई बार हमला करने की क्षमता पर निर्भर करता है। एएसएलआर के उचित कार्यान्वयन, जैसे कि जीआर सुरक्षा में शामिल, ऐसे क्रूर बल के हमलों को अक्षम्य बनाने के लिए कई तरीके प्रदान करते हैं। एक विधि में एक निश्चित समय के लिए एक निष्पादन योग्य को निष्पादित करने से रोकना शामिल है यदि यह एक निश्चित संख्या में दुर्घटनाग्रस्त हो गया है।
कई प्रणालियों में, <math>2^N</math> हजारों या लाखों में हो सकता है; पर {{as of | 2009 | alt = आधुनिक}} [[64-बिट]] प्रणाली , ये संख्याएं सामान्यतः कम से कम लाखों तक पहुंचती हैं, हेक्टर मार्को-गिस्बर्ट और इस्माइल रिपोल ने 2014 में दिखाया कि कुछ परिस्थितियों में एक सेकंड से भी कम समय में 64-बिट प्रणाली में एएसएलआर को कैसे बायपास किया जाए।<ref>{{cite web|last1=Marco-Gisbert|first1=Hector|first2=Ismael|last2=Ripoll|url=http://cybersecurity.upv.es/attacks/offset2lib/offset2lib-paper.pdf|title=On the Effectiveness of Full-ASLR on 64-bit Linux|date=20 November 2014}}</ref> 2004 की कंप्यूटर गति पर 32-बिट प्रणाली के लिए जिसमें एड्रेस रेंडमाइजेशन के लिए 16 बिट्स हैं, शचम और सहकर्मी स्थिति ... 16 बिट्स एड्रेस रैंडमाइजेशन को मिनटों के अंदर एक क्रूर बल के हमले से हराया जा सकता है।<ref>{{cite conference|title=एड्रेस-स्पेस रेंडमाइजेशन की प्रभावशीलता पर|last1=Shacham|first1=H.|last2=Page|first2=M.|last3=Pfaff|first3=B.|last4=Goh|first4=E.J.|last5=Modadugu|first5=N.|last6=Boneh|first6=D|conference=11th ACM conference on Computer and communications security|pages=298–307|year=2004}}</ref> लेखकों का कथन बिना किसी देरी के एक ही एप्लिकेशन पर कई बार हमला करने की क्षमता पर निर्भर करता है। एएसएलआर के उचित कार्यान्वयन, जैसे कि जीआर सुरक्षा में सम्मिलित, ऐसे क्रूर बल के हमलों को अक्षम्य बनाने के लिए कई विधि प्रदान करते हैं। एक विधि में एक निश्चित समय के लिए एक निष्पादन योग्य को निष्पादित करने से रोकना सम्मिलित है यदि यह एक निश्चित संख्या में दुर्घटनाग्रस्त हो गया है।


एंड्रॉयड,<ref name=android-llor>{{cite web|title=लाइब्रेरी लोड ऑर्डर रैंडमाइजेशन लागू करें|url=https://android-review.googlesource.com/178130 |access-date=26 June 2017}}</ref>{{Primary source inline|date=March 2016}} और संभवतः अन्य प्रणालियाँ,{{which|date=October 2015}} लाइब्रेरी लोड ऑर्डर रेंडमाइजेशन को लागू करें, ASLR का एक रूप जो उस ऑर्डर को रैंडमाइज करता है जिसमें लाइब्रेरी लोड की जाती हैं। यह बहुत कम एन्ट्रॉपी प्रदान करता है। प्रति आवश्यक पुस्तकालय में आपूर्ति की गई एंट्रॉपी के बिट्स की संख्या का अनुमान नीचे दिखाई देता है; यह अभी तक विभिन्न पुस्तकालय आकारों के लिए खाता नहीं है, इसलिए प्राप्त वास्तविक एन्ट्रापी वास्तव में कुछ अधिक है। ध्यान दें कि हमलावरों को आमतौर पर केवल एक पुस्तकालय की आवश्यकता होती है; गणित कई पुस्तकालयों के साथ अधिक जटिल है, और नीचे भी दिखाया गया है। ध्यान दें कि केवल एक पुस्तकालय का उपयोग करने वाले हमलावर का मामला अधिक जटिल सूत्र का सरलीकरण है <math>l = 1</math>.
एंड्रॉयड,<ref name=android-llor>{{cite web|title=लाइब्रेरी लोड ऑर्डर रैंडमाइजेशन लागू करें|url=https://android-review.googlesource.com/178130 |access-date=26 June 2017}}</ref> और संभवतः अन्य प्रणालियाँ, पुस्तकालय लोड ऑर्डर रेंडमाइजेशन को प्रयुक्त करें, एएसएलआर का एक रूप जो उस ऑर्डर को रैंडमाइज करता है जिसमें पुस्तकालय लोड की जाती हैं। यह बहुत कम एन्ट्रॉपी प्रदान करता है। प्रति आवश्यक पुस्तकालय में आपूर्ति की गई एंट्रॉपी के बिट्स की संख्या का अनुमान नीचे दिखाई देता है; यह अभी तक विभिन्न पुस्तकालय आकारों के लिए खाता नहीं है, इसलिए प्राप्त वास्तविक एन्ट्रापी वास्तव में कुछ अधिक है। ध्यान दें कि हमलावरों को सामान्यतः केवल एक पुस्तकालय की आवश्यकता होती है; गणित कई पुस्तकालयों के साथ अधिक जटिल है, और नीचे भी दिखाया गया है। ध्यान दें कि केवल एक पुस्तकालय का उपयोग करने वाले हमलावर की स्थति <math>l = 1</math> अधिक जटिल सूत्र का सरलीकरण है .


* {{mvar|l}} (लोडेड पुस्तकालयों की संख्या)
* {{mvar|l}} (लोडेड पुस्तकालयों की संख्या)
Line 47: Line 46:
\end{cases}
\end{cases}
</math>
</math>
के बड़े मूल्यों के लिए भी ये मान कम होते हैं {{mvar|l}}, सबसे महत्वपूर्ण बात यह है कि हमलावर आमतौर पर केवल [[सी मानक पुस्तकालय]] का उपयोग कर सकते हैं और इस प्रकार कोई भी अक्सर यह मान सकता है <math>\beta\, = 1</math>. हालाँकि, यहां तक ​​​​कि पुस्तकालयों की एक छोटी संख्या के लिए भी यहाँ एन्ट्रापी के कुछ अंश प्राप्त हुए हैं; इस प्रकार एंट्रॉपी के कुछ अतिरिक्त बिट्स प्राप्त करने के लिए VMA एड्रेस रैंडमाइजेशन के साथ लाइब्रेरी लोड ऑर्डर रैंडमाइजेशन को संयोजित करना संभावित रूप से दिलचस्प है। ध्यान दें कि एंट्रॉपी के ये अतिरिक्त बिट अन्य mmap() सेगमेंट पर लागू नहीं होंगे, केवल लाइब्रेरीज़।
ये मान {{mvar|l}} के बड़े मानों के लिए भी कम होते हैं, सबसे महत्वपूर्ण बात यह है कि हमलावर सामान्यतः केवल C मानक पुस्तकालय का उपयोग कर सकते हैं और इस प्रकार कोई भी अक्सर यह मान सकता है कि <math>\beta\, = 1</math> चूंकि , यहां तक ​​कि पुस्तकालयों की एक छोटी संख्या के लिए भी यहाँ एन्ट्रापी के कुछ अंश प्राप्त हुए हैं; इस प्रकार एंट्रॉपी के कुछ अतिरिक्त बिट्स प्राप्त करने के लिए वीएमए एड्रेस रैंडमाइजेशन के साथ पुस्तकालय लोड ऑर्डर रैंडमाइजेशन को संयोजित करना संभावित रूप से रौचक है। ध्यान दें कि एंट्रॉपी के ये अतिरिक्त बिट अन्य एममैप () सेगमेंट पर प्रयुक्त नहीं होंगे, केवल पुस्तकालय है ।


==== एंट्रॉपी कम करना ====
==== एंट्रॉपी कम करना ====
हमलावर एक यादृच्छिक पता स्थान में मौजूद एन्ट्रापी को कम करने के लिए कई तरीकों का उपयोग कर सकते हैं, जिसमें साधारण सूचना लीक से लेकर एंट्रॉपी प्रति हमले के कई बिट्स पर हमला करना (जैसे हीप छिड़काव द्वारा) शामिल है। इस बारे में बहुत कम किया जा सकता है।
हमलावर एक यादृच्छिक पता स्थान में उपस्थित एन्ट्रापी को कम करने के लिए कई विधि का उपयोग कर सकते हैं, जिसमें साधारण सूचना लीक से लेकर एंट्रॉपी प्रति हमले के कई बिट्स पर हमला करना (जैसे हीप छिड़काव द्वारा) सम्मिलित है। इस बारे में बहुत कम किया जा सकता है।


[[प्रारूप स्ट्रिंग भेद्यता]] का उपयोग करके मेमोरी लेआउट के बारे में जानकारी लीक करना संभव है। स्वरूप स्ट्रिंग फ़ंक्शन जैसे कि [[ printf ]] अपना काम करने के लिए एक चर तर्क सूची का उपयोग करते हैं; प्रारूप विनिर्देशक वर्णन करते हैं कि तर्क सूची कैसी दिखती है। आम तौर पर जिस तरह से तर्क पारित किए जाते हैं, उसके कारण प्रत्येक प्रारूप निर्दिष्टकर्ता स्टैक फ्रेम के शीर्ष के करीब जाता है। आखिरकार, रिटर्न पॉइंटर और स्टैक फ्रेम पॉइंटर को निकाला जा सकता है, जिससे एक कमजोर लाइब्रेरी का पता और एक ज्ञात स्टैक फ्रेम का पता चलता है; यह एक हमलावर के लिए एक बाधा के रूप में लाइब्रेरी और स्टैक रैंडमाइजेशन को समाप्त कर सकता है।
[[प्रारूप स्ट्रिंग भेद्यता]] का उपयोग करके मेमोरी लेआउट के बारे में जानकारी लीक करना संभव है। स्वरूप स्ट्रिंग फ़ंक्शन जैसे कि [[ printf |प्रिंटफ]] अपना काम करने के लिए एक चर तर्क सूची का उपयोग करते हैं; प्रारूप विनिर्देशक वर्णन करते हैं कि तर्क सूची कैसी दिखती है। सामान्यतः जिस तरह से तर्क पारित किए जाते हैं, उसके कारण प्रत्येक प्रारूप निर्दिष्टकर्ता स्टैक फ्रेम के शीर्ष के समीप जाता है। आखिरकार, रिटर्न पॉइंटर और स्टैक फ्रेम पॉइंटर को निकाला जा सकता है, जिससे एक अशक्त पुस्तकालय का पता और एक ज्ञात स्टैक फ्रेम का पता चलता है; यह एक हमलावर के लिए एक बाधा के रूप में पुस्तकालय और स्टैक रैंडमाइजेशन को समाप्त कर सकता है।


स्टैक या हीप में एन्ट्रॉपी को भी कम किया जा सकता है। स्टैक को आमतौर पर 16 बाइट्स के साथ संरेखित किया जाना चाहिए, और इसलिए यह सबसे छोटा संभव यादृच्छिककरण अंतराल है; जबकि ढेर पृष्ठ-संरेखित होना चाहिए, आमतौर पर 4096 बाइट्स। हमले का प्रयास करते समय, इन अंतरालों के साथ डुप्लिकेट हमलों को संरेखित करना संभव है; एक एनओपी स्लाइड का उपयोग [[शेलकोड इंजेक्शन]] और स्ट्रिंग 'के साथ किया जा सकता है।{{code|/bin/sh}}' को ' से बदला जा सकता है{{code|////////bin/sh}}' सिस्टम पर लौटने का प्रयास करते समय स्लैश की मनमानी संख्या के लिए। हटाए गए बिट्स की संख्या बिल्कुल है <math>\log_2\!\left (n \right )</math> के लिए {{mvar|n}} अंतराल पर हमला किया।
स्टैक या हीप में एन्ट्रॉपी को भी कम किया जा सकता है। स्टैक को सामान्यतः 16 बाइट्स के साथ संरेखित किया जाना चाहिए, और इसलिए यह सबसे छोटा संभव यादृच्छिककरण अंतराल है; जबकि ढेर पृष्ठ-संरेखित होना चाहिए, सामान्यतः 4096 बाइट्स हमले का प्रयास करते समय, इन अंतरालों के साथ प्रतिलिपि हमलों को संरेखित करना संभव है; एक एनओपी स्लाइड का उपयोग [[शेलकोड इंजेक्शन]] और स्ट्रिंग 'के साथ किया जा सकता है।{{code|/bin/sh}}' को ' से बदला जा सकता है{{code|////////bin/sh}}' प्रणाली पर लौटने का प्रयास करते समय स्लैश की इच्छानुसार संख्या के लिए हटाए गए बिट्स की संख्या बिल्कुल <math>\log_2\!\left (n \right )</math> के लिए {{mvar|n}} अंतराल पर हमला किया है ।


स्टैक या हीप में डेटा की मात्रा के कारण ऐसी कमी सीमित होती है। ढेर, उदाहरण के लिए, आम तौर पर सीमित है {{val|8|u=[[megabyte|MB]]}}<ref name="Prefix2">{{BDprefix|p=b}}</ref> और बहुत कम बढ़ता है; यह अधिकतम के लिए अनुमति देता है {{val|19|u=bits}}, हालांकि एक अधिक रूढ़िवादी अनुमान लगभग 8–{{val|10|u=bits}} के संगत 4–{{val|16|u=[[kilobyte|KB]]}}<ref name="Prefix2"/>स्टैक स्टफिंग का। दूसरी ओर ढेर स्मृति आवंटक के व्यवहार से सीमित है; [[glibc]] के मामले में, 128 KB से ऊपर के आवंटन [[mmap]] का उपयोग करके बनाए जाते हैं, हमलावरों को 5 बिट्स की कमी तक सीमित करते हैं। यह भी एक सीमित कारक है जब क्रूर बल; हालांकि प्रदर्शन करने के लिए हमलों की संख्या को कम किया जा सकता है, हमलों का आकार इतना बढ़ जाता है कि कुछ परिस्थितियों में व्यवहार घुसपैठ का पता लगाने वाली प्रणालियों के लिए स्पष्ट हो सकता है।
स्टैक या हीप में डेटा की मात्रा के कारण ऐसी कमी सीमित होती है। ढेर, उदाहरण के लिए, सामान्यतः सीमित है {{val|8|u=[[megabyte|MB]]}}<ref name="Prefix2">{{BDprefix|p=b}}</ref> और बहुत कम बढ़ता है; यह अधिकतम के लिए अनुमति देता है {{val|19|u=bits}}, चूंकि एक अधिक रूढ़िवादी अनुमान लगभग 8–{{val|10|u=bits}} के संगत 4–{{val|16|u=[[kilobyte|KB]]}}<ref name="Prefix2"/> स्टैक स्टफिंग का दूसरी ओर ढेर स्मृति आवंटक के व्यवहार से सीमित है; [[glibc|ग्लिबीसी]] के स्थिति में, 128 केबी से ऊपर के आवंटन [[mmap|एममैप]] का उपयोग करके बनाए जाते हैं, हमलावरों को 5 बिट्स की कमी तक सीमित करते हैं। यह भी एक सीमित कारक है जब क्रूर बल; चूंकि प्रदर्शन करने के लिए हमलों की संख्या को कम किया जा सकता है, हमलों का आकार इतना बढ़ जाता है कि कुछ परिस्थितियों में व्यवहार अतिक्रमण का पता लगाने वाली प्रणालियों के लिए स्पष्ट हो सकता है।


=== सीमाएं ===
=== सीमाएं ===


शमन उपयोगिता को हटाते हुए, ASLR-संरक्षित पतों को विभिन्न पार्श्व चैनलों द्वारा लीक किया जा सकता है। हाल के हमलों में सीपीयू ब्रांच टारगेट प्रेडिक्टर बफर (बीटीबी) या मेमोरी मैनेजमेंट यूनिट (एमएमयू) वॉकिंग पेज टेबल द्वारा लीक की गई जानकारी का इस्तेमाल किया गया है। यह स्पष्ट नहीं है कि एएसएलआर हमले के इस वर्ग को कम किया जा सकता है या नहीं। यदि वे ऐसा नहीं कर पाते हैं, तो एएसएलआर का लाभ कम या समाप्त हो जाता है।
शमन उपयोगिता को हटाते हुए, एएसएलआर-संरक्षित पतों को विभिन्न पार्श्व चैनलों द्वारा लीक किया जा सकता है। हाल के हमलों में सीपीयू ब्रांच टारगेट प्रेडिक्टर बफर (बीटीबी) या मेमोरी मैनेजमेंट यूनिट (एमएमयू) वॉकिंग पेज टेबल द्वारा लीक की गई जानकारी का उपयोग किया गया है। यह स्पष्ट नहीं है कि एएसएलआर हमले के इस वर्ग को कम किया जा सकता है या नहीं। यदि वे ऐसा नहीं कर पाते हैं, तो एएसएलआर का लाभ कम या समाप्त हो जाता है।


== कार्यान्वयन ==
== कार्यान्वयन ==
कई मुख्यधारा, सामान्य-उद्देश्य वाले ऑपरेटिंग सिस्टम ASLR को लागू करते हैं।
कई मुख्यधारा, सामान्य-उद्देश्य वाले ऑपरेटिंग प्रणाली एएसएलआर को प्रयुक्त करते हैं।


=== एंड्रॉइड ===
=== एंड्रॉइड ===
एंड्रॉइड (ऑपरेटिंग सिस्टम) 4.0 आइसक्रीम सैंडविच मेमोरी-मैनेजमेंट मुद्दों के कारण सिस्टम और थर्ड-पार्टी एप्लिकेशन को शोषण से बचाने में मदद करने के लिए एड्रेस स्पेस लेआउट रैंडमाइजेशन (एएसएलआर) प्रदान करता है। एंड्रॉइड 4.1 में स्थिति-स्वतंत्र निष्पादन योग्य समर्थन जोड़ा गया था।<ref>{{cite web|title=Android सुरक्षा|url=http://source.android.com/tech/security/index.html#memory-management-security-enhancements|publisher=Android Developers|access-date=7 July 2012}}</ref> एंड्रॉइड 5.0 ने गैर-पीआईई समर्थन को छोड़ दिया और सभी गतिशील रूप से जुड़े बायनेरिज़ को स्थिति से स्वतंत्र होने की आवश्यकता है।<ref>{{cite web|title=oss-सुरक्षा|url=http://www.openwall.com/lists/oss-सुरक्षा/2015/03/13/1|access-date=4 October 2015}}</ref><ref>{{cite web|title="गैर-पीआईई निष्पादन योग्य के लिए समर्थन सक्षम करें" वापस करें|url=https://android-review.googlesource.com/100254 |access-date=26 June 2017}}</ref> लाइब्रेरी लोड ऑर्डरिंग रैंडमाइजेशन को 26 अक्टूबर 2015 को एंड्रॉइड ओपन-सोर्स प्रोजेक्ट में स्वीकार किया गया था।<ref name=android-llor />{{Primary source inline|date=March 2016}} और Android 7.0 रिलीज़ में शामिल किया गया था।
एंड्रॉइड (ऑपरेटिंग प्रणाली ) 4.0 आइसक्रीम सैंडविच मेमोरी-मैनेजमेंट उद्देश्य के कारण प्रणाली और थर्ड-पार्टी एप्लिकेशन को शोषण से बचाने में सहायता करने के लिए एड्रेस स्पेस लेआउट रैंडमाइजेशन (एएसएलआर) प्रदान करता है। एंड्रॉइड 4.1 में स्थिति-स्वतंत्र निष्पादन योग्य समर्थन जोड़ा गया था।<ref>{{cite web|title=Android सुरक्षा|url=http://source.android.com/tech/security/index.html#memory-management-security-enhancements|publisher=Android Developers|access-date=7 July 2012}}</ref> एंड्रॉइड 5.0 ने गैर-पीआईई समर्थन को छोड़ दिया और सभी गतिशील रूप से जुड़े बायनेरिज़ को स्थिति से स्वतंत्र होने की आवश्यकता है।<ref>{{cite web|title=oss-सुरक्षा|url=http://www.openwall.com/lists/oss-सुरक्षा/2015/03/13/1|access-date=4 October 2015}}</ref><ref>{{cite web|title="गैर-पीआईई निष्पादन योग्य के लिए समर्थन सक्षम करें" वापस करें|url=https://android-review.googlesource.com/100254 |access-date=26 June 2017}}</ref> पुस्तकालय लोड ऑर्डरिंग रैंडमाइजेशन को 26 अक्टूबर 2015 को एंड्रॉइड ओपन-सोर्स प्रोजेक्ट में स्वीकार किया गया था।<ref name=android-llor /> और एंड्रॉइड 7.0 रिलीज़ में सम्मिलित किया गया था।


=== [[ड्रैगनफली बीएसडी]] ===
=== [[ड्रैगनफली बीएसडी]] ===
DragonFly BSD में OpenBSD के मॉडल पर आधारित ASLR का कार्यान्वयन है, जिसे 2010 में जोड़ा गया था।<ref>[http://gitweb.dragonflybsd.org/dragonfly.git/commit/911e30e25724984efec56accba87f739cfca2937 mmap - add mmap offset randomization], DragonFly Gitweb, 25 November 2010.</ref> यह डिफ़ॉल्ट रूप से बंद है, और sysctl vm.randomize_mmap को 1 पर सेट करके सक्षम किया जा सकता है।
ड्रेगनफ्लाई बीएसडी में ओपन बीएसडी के मॉडल पर आधारित एएसएलआर का कार्यान्वयन है, जिसे 2010 में जोड़ा गया था।<ref>[http://gitweb.dragonflybsd.org/dragonfly.git/commit/911e30e25724984efec56accba87f739cfca2937 mmap - add mmap offset randomization], DragonFly Gitweb, 25 November 2010.</ref> यह डिफ़ॉल्ट रूप से बंद है, और सिससिटीएल वीएम.रेंडेमाईज़ _एममैप को 1 पर सेट करके सक्षम किया जा सकता है।


=== फ्रीबीएसडी ===
=== फ्रीबीएसडी ===
ASLR के लिए समर्थन [[FreeBSD]] 13.0 में दिखाई दिया।<ref>{{cite web|url=https://svnweb.freebsd.org/base?view=revision&revision=r343964|title=एड्रेस स्पेस लेआउट रेंडमाइजेशन (एएसएलआर) लागू करें|access-date=10 February 2019}}</ref><ref>{{cite web|url=https://wiki.freebsd.org/ASLR|title=एएसएलआर - फ्रीबीएसडी विकी|access-date=17 May 2021}}</ref> यह 13.2 के बाद से डिफ़ॉल्ट रूप से सक्षम है।<ref>{{cite web|url=https://www.freebsd.org/releases/13.2R/relnotes/|title=FreeBSD 13.2-RELEASE Release Notes}}</ref>
एएसएलआर के लिए समर्थन [[FreeBSD|मुक्त]] बीएसडी 13.0 में दिखाई दिया।<ref>{{cite web|url=https://svnweb.freebsd.org/base?view=revision&revision=r343964|title=एड्रेस स्पेस लेआउट रेंडमाइजेशन (एएसएलआर) लागू करें|access-date=10 February 2019}}</ref><ref>{{cite web|url=https://wiki.freebsd.org/ASLR|title=एएसएलआर - फ्रीबीएसडी विकी|access-date=17 May 2021}}</ref> यह 13.2 के बाद से डिफ़ॉल्ट रूप से सक्षम है।<ref>{{cite web|url=https://www.freebsd.org/releases/13.2R/relnotes/|title=FreeBSD 13.2-RELEASE Release Notes}}</ref>




=== [[आईओएस]] (आईफोन, आईपॉड टच, आईपैड) ===
=== [[आईओएस]] (आईफोन, आईपॉड टच, आईपैड) ===
Apple Inc. ने iOS 4.3 (मार्च 2011 में रिलीज़) में ASLR पेश किया।<ref>[https://arstechnica.com/security/news/2011/03/pwn2own-day-2-iphone-blackberry-beaten-chrome-firefox-no-shows.ars Pwn2Own day 2: iPhone, BlackBerry beaten; Chrome, Firefox no-shows], [[Ars Technica]], 11 March 2011</ref>
एप्पल इंक. ने [[आईओएस]]4.3 (मार्च 2011 में रिलीज़) में एएसएलआर प्रस्तुत किया।<ref>[https://arstechnica.com/security/news/2011/03/pwn2own-day-2-iphone-blackberry-beaten-chrome-firefox-no-shows.ars Pwn2Own day 2: iPhone, BlackBerry beaten; Chrome, Firefox no-shows], [[Ars Technica]], 11 March 2011</ref>
KASLR को iOS 6 में पेश किया गया था।<ref>{{cite web|url=https://www.slideshare.net/i0n1c/csw2013-stefan-esserios6exploitation280dayslater/19-KASLR_iOS_6_introduces_KASLR|title=iOS 6 Exploitation 280 Days Later|author=Stefan Esser|at=Slide 19, "iOS 6 introduces KASLR"|date=7 March 2013}}</ref> यादृच्छिक कर्नेल आधार है {{code|0x01000000 + ((1+0xRR) * 0x00200000)}}, कहाँ {{code|0xRR}} iBoot (द्वितीय-चरण आईओएस बूट लोडर) द्वारा उत्पन्न SHA1 (यादृच्छिक डेटा) से एक यादृच्छिक बाइट है।<ref>{{cite web|url=http://www.nislab.no/content/download/38610/481190/file/NISlecture201303.pdf|title=Attacking the iOS Kernel: A Look at 'evasi0n'|author=Tarjei Mandt}}</ref>


केएएसएलआर को आईओएस 6 में प्रस्तुत किया गया था।<ref>{{cite web|url=https://www.slideshare.net/i0n1c/csw2013-stefan-esserios6exploitation280dayslater/19-KASLR_iOS_6_introduces_KASLR|title=iOS 6 Exploitation 280 Days Later|author=Stefan Esser|at=Slide 19, "iOS 6 introduces KASLR"|date=7 March 2013}}</ref> यादृच्छिक कर्नेल आधार है {{code|0x01000000 + ((1+0xRR) * 0x00200000)}}, जहाँ {{code|0xRR}} आईबूट (द्वितीय-चरण आईओएस बूट लोडर) द्वारा उत्पन्न एसएचए1 (यादृच्छिक डेटा) से एक यादृच्छिक बाइट है।<ref>{{cite web|url=http://www.nislab.no/content/download/38610/481190/file/NISlecture201303.pdf|title=Attacking the iOS Kernel: A Look at 'evasi0n'|author=Tarjei Mandt}}</ref>


=== लिनक्स ===
[[लिनक्स कर्नेल]] ने जून 2005 में जारी कर्नेल संस्करण 2.6.12 के बाद से डिफ़ॉल्ट रूप से ASLR के एक कमजोर रूप को सक्षम किया।<ref>{{cite web |first1=Alan |last1=Dang |first2=<!-- interviewee -->Charlie |last2=Miller |url=http://www.tomshardware.com/reviews/pwn2own-mac-hack,2254-4.html |title=एनएक्स बिट और एएसएलआर|website=[[Tom's Hardware]] |date=25 March 2009}}</ref> [[Linux]] कर्नेल के PaX और Exec शील्ड पैचसेट अधिक पूर्ण कार्यान्वयन प्रदान करते हैं। Linux के लिए [[Exec Shield]] पैच 16 बाइट्स की अवधि में 19 बिट्स स्टैक एंट्रॉपी की आपूर्ति करता है, और 4096 बाइट्स के 1 पृष्ठ की अवधि पर mmap बेस रेंडमाइज़ेशन के 8 बिट्स प्रदान करता है। यह स्टैक बेस को 8 एमबी चौड़े क्षेत्र में रखता है जिसमें 524,288 संभावित स्थान होते हैं, और एमएमएपी आधार 1 एमबी चौड़े क्षेत्र में होता है जिसमें 256 संभावित स्थान होते हैं।


[[स्थिति-स्वतंत्र निष्पादन योग्य]] (PIE) मुख्य निष्पादन योग्य बाइनरी के लिए एक यादृच्छिक आधार पता लागू करता है और 2003 से मौजूद है। यह मुख्य निष्पादन योग्य को समान पता यादृच्छिकता प्रदान करता है जैसा कि साझा पुस्तकालयों के लिए उपयोग किया जा रहा है। पीआईई सुविधा का उपयोग एक ही निष्पादन योग्य के लिए [[प्रीलिंक]] सुविधा के साथ नहीं किया जा सकता है। प्रीलिंक टूल रनटाइम के बजाय प्रीलिंक समय पर रैंडमाइजेशन को लागू करता है, क्योंकि डिजाइन के अनुसार प्रीलिंक का उद्देश्य डायनामिक लिंकर से पहले रिलोकेटिंग लाइब्रेरी को हैंडल करना है, जो प्रोग्राम के कई रन के लिए एक बार रिलोकेशन की अनुमति देता है। नतीजतन, वास्तविक पता स्थान यादृच्छिककरण प्रीलिंकिंग के उद्देश्य को विफल कर देगा।


एक विशिष्ट प्रक्रिया के लिए यादृच्छिककरण को इसके निष्पादन डोमेन को बदलकर अक्षम किया जा सकता है <code>personality(2)</code>.<ref>{{cite web | url = http://man7.org/linux/man-pages/man2/personality.2.html | title = personality - set the process execution domain}}</ref>
=== लिनक्स ===
[[लिनक्स कर्नेल]] ने जून 2005 में जारी कर्नेल संस्करण 2.6.12 के बाद से डिफ़ॉल्ट रूप से एएसएलआर के एक अशक्त रूप को सक्षम किया।<ref>{{cite web |first1=Alan |last1=Dang |first2=<!-- interviewee -->Charlie |last2=Miller |url=http://www.tomshardware.com/reviews/pwn2own-mac-hack,2254-4.html |title=एनएक्स बिट और एएसएलआर|website=[[Tom's Hardware]] |date=25 March 2009}}</ref> [[Linux|लिनक्स]] कर्नेल के पैक्स और एक्सेक शील्ड पैचसेट अधिक पूर्ण कार्यान्वयन प्रदान करते हैं। लिनक्स के लिए [[Exec Shield|एक्सेक शील्ड]] पैच 16 बाइट्स की अवधि में 19 बिट्स स्टैक एंट्रॉपी की आपूर्ति करता है, और 4096 बाइट्स के 1 पृष्ठ की अवधि पर एममैप बेस रेंडमाइज़ेशन के 8 बिट्स प्रदान करता है। यह स्टैक बेस को 8 एमबी चौड़े क्षेत्र में रखता है जिसमें 524,288 संभावित स्थान होते हैं, और एमएमएपी आधार 1 एमबी चौड़े क्षेत्र में होता है जिसमें 256 संभावित स्थान होते हैं।


[[स्थिति-स्वतंत्र निष्पादन योग्य]] (पाई) मुख्य निष्पादन योग्य बाइनरी के लिए एक यादृच्छिक आधार पता प्रयुक्त करता है और 2003 से उपस्थित है। यह मुख्य निष्पादन योग्य को समान पता यादृच्छिकता प्रदान करता है जैसा कि साझा पुस्तकालयों के लिए उपयोग किया जा रहा है। पीआईई सुविधा का उपयोग एक ही निष्पादन योग्य के लिए [[प्रीलिंक]] सुविधा के साथ नहीं किया जा सकता है। प्रीलिंक टूल रनटाइम के अतिरिक्त प्रीलिंक समय पर रैंडमाइजेशन को प्रयुक्त करता है, क्योंकि डिजाइन के अनुसार प्रीलिंक का उद्देश्य डायनामिक लिंकर से पहले रिलोकेटिंग पुस्तकालय को हैंडल करना है, जो प्रोग्राम के कई रन के लिए एक बार रिलोकेशन की अनुमति देता है। नतीजतन, वास्तविक पता स्थान यादृच्छिककरण प्रीलिंकिंग के उद्देश्य को विफल कर देगा।


===={{Anchor|KASLR|FGKASLR}}कर्नेल एड्रेस स्पेस लेआउट रैंडमाइजेशन ====
<code>personality(2)</code>का उपयोग करते हुए, इसके निष्पादन डोमेन को बदलकर एक विशिष्ट प्रक्रिया के लिए रैंडमाइजेशन को अक्षम किया जा सकता है।<ref>{{cite web | url = http://man7.org/linux/man-pages/man2/personality.2.html | title = personality - set the process execution domain}}</ref>
====कर्नेल एड्रेस स्पेस लेआउट रैंडमाइजेशन ====
कर्नेल एड्रेस स्पेस लेआउट रेंडमाइजेशन (केएएसएलआर) लिनक्स कर्नेल छवि के लिए एड्रेस स्पेस रैंडमाइजेशन को यादृच्छिक रूप से सक्षम करता है जहां बूट समय पर कर्नेल कोड रखा जाता है।<ref>{{cite web | url = https://lwn.net/Articles/569635/ | title = कर्नेल एड्रेस स्पेस लेआउट रैंडमाइजेशन| date = 9 October 2013 | access-date = 2 April 2014 | author = Jake Edge | publisher = [[LWN.net]]
कर्नेल एड्रेस स्पेस लेआउट रेंडमाइजेशन (केएएसएलआर) लिनक्स कर्नेल छवि के लिए एड्रेस स्पेस रैंडमाइजेशन को यादृच्छिक रूप से सक्षम करता है जहां बूट समय पर कर्नेल कोड रखा जाता है।<ref>{{cite web | url = https://lwn.net/Articles/569635/ | title = कर्नेल एड्रेस स्पेस लेआउट रैंडमाइजेशन| date = 9 October 2013 | access-date = 2 April 2014 | author = Jake Edge | publisher = [[LWN.net]]
}}</ref> केएएसएलआर को 30 मार्च 2014 को जारी कर्नेल संस्करण 3.14 में [[लिनक्स कर्नेल मेनलाइन]] में विलय कर दिया गया था।<ref>{{cite web | url = http://kernelnewbies.org/Linux_3.14#head-192cae48200fccde67b36c75cdb6c6d8214cccb3 | title = Linux kernel 3.14, Section 1.7. Kernel address space randomization | date = 30 March 2014 | access-date = 2 April 2014 | website = kernelnewbies.org}}</ref> संकलित होने पर, इसे निर्दिष्ट करके बूट समय पर अक्षम किया जा सकता है {{Mono|nokaslr}} कर्नेल के बूट पैरामीटर में से एक के रूप में।<ref>{{cite web | url = https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8ab3820fd5b2896d66da7bb2a906bc382e63e7bc | title = kernel/git/torvalds/linux.git: x86, kaslr: Return location from decompress_kernel (Linux kernel source tree) | date = 13 October 2013 | access-date = 2 April 2014 | publisher = [[kernel.org]]}}</ref>
}}</ref> केएएसएलआर को 30 मार्च 2014 को जारी कर्नेल संस्करण 3.14 में [[लिनक्स कर्नेल मेनलाइन]] में विलय कर दिया गया था।<ref>{{cite web | url = http://kernelnewbies.org/Linux_3.14#head-192cae48200fccde67b36c75cdb6c6d8214cccb3 | title = Linux kernel 3.14, Section 1.7. Kernel address space randomization | date = 30 March 2014 | access-date = 2 April 2014 | website = kernelnewbies.org}}</ref> संकलित होने पर, इसे निर्दिष्ट करके बूट समय पर अक्षम किया जा सकता है {{Mono|nokaslr}} कर्नेल के बूट पैरामीटर में से एक के रूप में।<ref>{{cite web | url = https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8ab3820fd5b2896d66da7bb2a906bc382e63e7bc | title = kernel/git/torvalds/linux.git: x86, kaslr: Return location from decompress_kernel (Linux kernel source tree) | date = 13 October 2013 | access-date = 2 April 2014 | publisher = [[kernel.org]]}}</ref>
x86 प्रोसेसर में कई साइड-चैनल हमले हैं जो कर्नेल पतों को लीक कर सकते हैं।<ref name=":1">{{Cite conference|date=24 June 2017|title=KASLR is Dead: Long Live KASLR|url=https://gruss.cc/files/kaiser.pdf|conference=Engineering Secure Software and Systems 2017}}</ref><ref>{{Cite journal |last1=Jang |first1=Yeongjin |last2=Lee |first2=Sangho |last3=Kim |first3=Taesoo |date=2016 |title=इंटेल TSX के साथ कर्नेल एड्रेस स्पेस लेआउट रेंडमाइजेशन को तोड़ना|url=http://people.oregonstate.edu/~jangye/assets/papers/2016/jang:drk-bh.pdf |journal=2016 ACM SIGSAC Conference on Computer and Communications Security |series=CCS '16 |location=New York |publisher=Association for Computing Machinery |pages=380–392 |doi=10.1145/2976749.2978321|isbn=9781450341394 |s2cid=6293725 |doi-access=free}}</ref> 2017 के अंत में, इन हमलों को हराने के लिए [[ कर्नेल पेज-टेबल अलगाव ]] (KPTI उर्फ ​​KAISER) विकसित किया गया था।<ref>{{Cite news |url=https://lwn.net/Articles/741878/ |title=कर्नेल पेज-टेबल अलगाव की वर्तमान स्थिति|last=Corbet |first=Jonathan |date=20 December 2017 |work=Linux Weekly News}}</ref><ref name=":0">{{Cite news|url=https://lwn.net/Articles/738975/ |title=KAISER: hiding the kernel from user space |last=Corbet |first=Jonathan|date=15 November 2017 |work=Linux Weekly News}}</ref> हालाँकि, यह विधि [[शाखा भविष्यवक्ता]] संरचनाओं में टकराव का उपयोग करने वाले साइड-चैनल हमलों से रक्षा नहीं कर सकती है।<ref name="jump-over-aslr">{{Cite conference |url=http://www.cs.ucr.edu/~nael/pubs/micro16.pdf |doi=10.1109/MICRO.2016.7783743 |isbn=978-1-5090-3508-3 |title=Jump over ASLR: Attacking branch predictors to bypass ASLR |conference=2016 49th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO) |pages=1–13 |year=2016 |last1=Evtyushkin |first1=Dmitry |last2=Ponomarev |first2=Dmitry |last3=Abu-Ghazaleh |first3=Nael |s2cid=3801142}}</ref>


{{as of|2021}}, महीन दानेदार कर्नेल एड्रेस स्पेस लेआउट रेंडमाइजेशन (या फंक्शन ग्रेन्युलर केएएसएलआर, एफजीकेएएसएलआर) केएएसएलआर का एक नियोजित विस्तार है जिसे फंक्शन लेवल तक रैंडमाइज किया जाता है।<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.16-Preps-For-FGKASLR|title=Linux 5.16 Has Early Preparations For Supporting FGKASLR - Phoronix|website=www.phoronix.com}}</ref>
एक्स86 प्रोसेसर में कई साइड-चैनल हमले हैं जो कर्नेल पतों को लीक कर सकते हैं।<ref name=":1">{{Cite conference|date=24 June 2017|title=KASLR is Dead: Long Live KASLR|url=https://gruss.cc/files/kaiser.pdf|conference=Engineering Secure Software and Systems 2017}}</ref><ref>{{Cite journal |last1=Jang |first1=Yeongjin |last2=Lee |first2=Sangho |last3=Kim |first3=Taesoo |date=2016 |title=इंटेल TSX के साथ कर्नेल एड्रेस स्पेस लेआउट रेंडमाइजेशन को तोड़ना|url=http://people.oregonstate.edu/~jangye/assets/papers/2016/jang:drk-bh.pdf |journal=2016 ACM SIGSAC Conference on Computer and Communications Security |series=CCS '16 |location=New York |publisher=Association for Computing Machinery |pages=380–392 |doi=10.1145/2976749.2978321|isbn=9781450341394 |s2cid=6293725 |doi-access=free}}</ref> 2017 के अंत में, इन हमलों को हराने के लिए [[ कर्नेल पेज-टेबल अलगाव |कर्नेल पेज-टेबल अलगाव]] (केपीटीआई या ​​कैसर) विकसित किया गया था।<ref>{{Cite news |url=https://lwn.net/Articles/741878/ |title=कर्नेल पेज-टेबल अलगाव की वर्तमान स्थिति|last=Corbet |first=Jonathan |date=20 December 2017 |work=Linux Weekly News}}</ref><ref name=":0">{{Cite news|url=https://lwn.net/Articles/738975/ |title=KAISER: hiding the kernel from user space |last=Corbet |first=Jonathan|date=15 November 2017 |work=Linux Weekly News}}</ref> चूंकि, यह विधि [[शाखा भविष्यवक्ता]] संरचनाओं में टकराव का उपयोग करने वाले साइड-चैनल हमलों से रक्षा नहीं कर सकती है।<ref name="jump-over-aslr">{{Cite conference |url=http://www.cs.ucr.edu/~nael/pubs/micro16.pdf |doi=10.1109/MICRO.2016.7783743 |isbn=978-1-5090-3508-3 |title=Jump over ASLR: Attacking branch predictors to bypass ASLR |conference=2016 49th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO) |pages=1–13 |year=2016 |last1=Evtyushkin |first1=Dmitry |last2=Ponomarev |first2=Dmitry |last3=Abu-Ghazaleh |first3=Nael |s2cid=3801142}}</ref>
 
{{as of|2021}}, महीन दानेदार कर्नेल एड्रेस स्पेस लेआउट रेंडमाइजेशन (या कार्य ग्रेन्युलर केएएसएलआर, एफजीकेएएसएलआर) केएएसएलआर का एक नियोजित विस्तार है जिसे कार्य स्तर तक रैंडमाइज किया जाता है।<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.16-Preps-For-FGKASLR|title=Linux 5.16 Has Early Preparations For Supporting FGKASLR - Phoronix|website=www.phoronix.com}}</ref>
 




=== माइक्रोसॉफ्ट विंडोज ===
=== माइक्रोसॉफ्ट विंडोज ===
{{Update section|date=August 2018}}
माइक्रोसॉफ्ट के [[विंडोज विस्टा]] (जनवरी 2007 को जारी) और बाद में एएसएलआर को केवल एक्जीक्यूटेबल्स और [[डायनेमिक लिंक लाइब्रेरी|डायनेमिक लिंक]] पुस्तकालय के लिए सक्षम किया गया है जो विशेष रूप से एएसएलआर-सक्षम होने के लिए जुड़े हुए हैं।<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/bb430720.aspx |title=विंडोज आईएसवी सॉफ्टवेयर सुरक्षा सुरक्षा|publisher=Msdn.microsoft.com |access-date=10 April 2012}}</ref> संगतता के लिए, यह अन्य अनुप्रयोगों के लिए डिफ़ॉल्ट रूप से सक्षम नहीं है। विशिष्ट रूप से, केवल पुराना सॉफ़्टवेयर असंगत होता है और एएसएलआर को रजिस्ट्री प्रविष्टि {{code|HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages}},को संपादित करके <ref>Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition (PRO-Developer) {{ISBN|978-0-7356-2530-3}}</ref> या Microsoft के [[एन्हांस्ड मिटिगेशन एक्सपीरियंस टूलकिट]] को स्थापित करके पूरी तरह से सक्षम किया जा सकता है ।
माइक्रोसॉफ्ट के [[विंडोज विस्टा]] (जनवरी 2007 को जारी) और बाद में एएसएलआर को केवल एक्जीक्यूटेबल्स और [[डायनेमिक लिंक लाइब्रेरी]] के लिए सक्षम किया गया है जो विशेष रूप से एएसएलआर-सक्षम होने के लिए जुड़े हुए हैं।<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/bb430720.aspx |title=विंडोज आईएसवी सॉफ्टवेयर सुरक्षा सुरक्षा|publisher=Msdn.microsoft.com |access-date=10 April 2012}}</ref> संगतता के लिए, यह अन्य अनुप्रयोगों के लिए डिफ़ॉल्ट रूप से सक्षम नहीं है। विशिष्ट रूप से, केवल पुराना सॉफ़्टवेयर असंगत होता है और रजिस्ट्री प्रविष्टि को संपादित करके ASLR को पूरी तरह से सक्षम किया जा सकता है {{code|HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages}},<ref>Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition (PRO-Developer) {{ISBN|978-0-7356-2530-3}}</ref> या Microsoft के [[एन्हांस्ड मिटिगेशन एक्सपीरियंस टूलकिट]] को स्थापित करके।


डायनेमिक मेमोरी आवंटन, [[कॉल स्टैक]], प्रोसेस एनवायरनमेंट ब्लॉक और [[Win32 थ्रेड सूचना ब्लॉक]] के स्थान भी यादृच्छिक हैं। सिमेंटेक के एक सुरक्षा श्वेतपत्र ने नोट किया कि 32-बिट विंडोज विस्टा में एएसएलआर अपेक्षित रूप से मजबूत नहीं हो सकता है, और माइक्रोसॉफ्ट ने इसके कार्यान्वयन में कमजोरी को स्वीकार किया है।<ref>{{cite web |url=http://www.symantec.com/avcenter/reference/Address_Space_Layout_Randomization.pdf |title=विंडोज विस्टा पर एड्रेस स्पेस लेआउट रेंडमाइजेशन का विश्लेषण|author=Ollie Whitehouse |date=February 2007 |access-date=18 January 2009 |archive-url=https://web.archive.org/web/20190715102700/http://www.symantec.com/avcenter/reference/Address_Space_Layout_Randomization.pdf |archive-date=15 July 2019 |url-status=dead }}</ref>
डायनेमिक मेमोरी आवंटन, [[कॉल स्टैक]], प्रोसेस एनवायरनमेंट ब्लॉक और [[Win32 थ्रेड सूचना ब्लॉक|विन 32 थ्रेड सूचना ब्लॉक]] के स्थान भी यादृच्छिक हैं। सिमेंटेक के एक सुरक्षा श्वेतपत्र ने नोट किया कि 32-बिट विंडोज विस्टा में एएसएलआर अपेक्षित रूप से शाक्तिशाली नहीं हो सकता है, और माइक्रोसॉफ्ट ने इसके कार्यान्वयन में अशक्ति को स्वीकार किया है।<ref>{{cite web |url=http://www.symantec.com/avcenter/reference/Address_Space_Layout_Randomization.pdf |title=विंडोज विस्टा पर एड्रेस स्पेस लेआउट रेंडमाइजेशन का विश्लेषण|author=Ollie Whitehouse |date=February 2007 |access-date=18 January 2009 |archive-url=https://web.archive.org/web/20190715102700/http://www.symantec.com/avcenter/reference/Address_Space_Layout_Randomization.pdf |archive-date=15 July 2019 |url-status=dead }}</ref>
होस्ट-आधारित घुसपैठ रोकथाम प्रणाली जैसे WehnTrust<ref>{{cite web|url=http://www.codeplex.com/wehntrust |title=WehnTrust|publisher=Codeplex.com |access-date=10 April 2012}}</ref> और ओजोन<ref>{{cite web|url=http://www.secarch.com/products.html |title=सुरक्षा आर्किटेक्ट 'ओजोन|publisher=Security Architects |access-date=10 April 2012}}</ref> [[Windows XP]] और [[Windows Server 2003]] ऑपरेटिंग सिस्टम के लिए ASLR भी प्रदान करता है। WehnTrust ओपन-सोर्स है।<ref>{{cite web |url=http://wehntrust.codeplex.com/ |title=WehnTrust सोर्स कोड|access-date=15 November 2013 |archive-date=2013-11-28  |archive-url=https://web.archive.org/web/20131128032117/http://wehntrust.codeplex.com/ |url-status=dead }}</ref> ओजोन के कार्यान्वयन का पूर्ण विवरण उपलब्ध नहीं है।<ref>{{cite web|url=http://seclab.cs.sunysb.edu/seclab/pubs/acsac06.pdf |title=विंडोज सिस्टम के लिए एड्रेस-स्पेस रेंडमाइजेशन|access-date=10 April 2012}}</ref>
 
यह फरवरी 2012 में नोट किया गया था<ref>{{cite web|author=Ollie |url=http://recxltd.blogspot.co.uk/2012/03/partial-technique-against-aslr-multiple.html |title=Research, Develop, Assess, Consult & Educate &#124; Recx: A Partial Technique Against ASLR – Multiple O/Ss |publisher=Recxltd.blogspot.co.uk |date=2 March 2012 |access-date=10 April 2012}}</ref> कि [[विंडोज 8]] से पहले के 32-बिट विंडोज सिस्टम पर ASLR कम मेमोरी स्थितियों में इसकी प्रभावशीलता को कम कर सकता है। उसी शोध में लिनक्स पर भी इसी तरह का प्रभाव प्राप्त किया गया था। परीक्षण कोड ने मैक ओएस एक्स 10.7.3 सिस्टम को कर्नेल घबराहट का कारण बना दिया, इसलिए इस परिदृश्य में इसके एएसएलआर व्यवहार के बारे में अस्पष्ट छोड़ दिया गया।
होस्ट-आधारित घुसपैठ रोकथाम प्रणाली जैसे वेहनट्रस्ट<ref>{{cite web|url=http://www.codeplex.com/wehntrust |title=WehnTrust|publisher=Codeplex.com |access-date=10 April 2012}}</ref> और ओजोन<ref>{{cite web|url=http://www.secarch.com/products.html |title=सुरक्षा आर्किटेक्ट 'ओजोन|publisher=Security Architects |access-date=10 April 2012}}</ref> [[Windows XP|विंडोज एक्सपी]] और [[Windows Server 2003|विंडोज सर्वर 2003]] ऑपरेटिंग प्रणाली के लिए एएसएलआर भी प्रदान करता है। वेहनट्रस्ट ओपन-सोर्स है।<ref>{{cite web |url=http://wehntrust.codeplex.com/ |title=WehnTrust सोर्स कोड|access-date=15 November 2013 |archive-date=2013-11-28  |archive-url=https://web.archive.org/web/20131128032117/http://wehntrust.codeplex.com/ |url-status=dead }}</ref> ओजोन के कार्यान्वयन का पूर्ण विवरण उपलब्ध नहीं है।<ref>{{cite web|url=http://seclab.cs.sunysb.edu/seclab/pubs/acsac06.pdf |title=विंडोज सिस्टम के लिए एड्रेस-स्पेस रेंडमाइजेशन|access-date=10 April 2012}}</ref>
 
यह फरवरी 2012 में नोट किया गया था<ref>{{cite web|author=Ollie |url=http://recxltd.blogspot.co.uk/2012/03/partial-technique-against-aslr-multiple.html |title=Research, Develop, Assess, Consult & Educate &#124; Recx: A Partial Technique Against ASLR – Multiple O/Ss |publisher=Recxltd.blogspot.co.uk |date=2 March 2012 |access-date=10 April 2012}}</ref> कि [[विंडोज 8]] से पहले के 32-बिट विंडोज प्रणाली पर एएसएलआर कम मेमोरी स्थितियों में इसकी प्रभावशीलता को कम कर सकता है। उसी शोध में लिनक्स पर भी इसी तरह का प्रभाव प्राप्त किया गया था। परीक्षण कोड ने मैक ओएस एक्स 10.7.3 प्रणाली को कर्नेल पैनिक का कारण बना दिया, इसलिए इस परिदृश्य में इसके एएसएलआर व्यवहार के बारे में अस्पष्ट छोड़ दिया गया।


=== [[नेटबीएसडी]] ===
=== [[नेटबीएसडी]] ===
यूजरलैंड में ASLR के लिए समर्थन NetBSD 5.0 ​​(अप्रैल 2009 में जारी) में दिखाई दिया,<ref>{{cite web|url=https://netbsd.org/releases/formal-5/NetBSD-5.0.html|title=Announcing NetBSD 5.0|access-date=25 April 2016}}</ref> और अप्रैल 2016 में NetBSD-current में डिफ़ॉल्ट रूप से सक्षम किया गया था।<ref>{{cite web|url=https://mail-index.netbsd.org/current-users/2016/04/10/msg029186.html|title=PIE binaries and ASLR are on in the default build for amd64|author=Christos Zoulas|year=2016|access-date=25 April 2016}}</ref>
यूजरलैंड में एएसएलआर के लिए समर्थन नेटबीएसडी 5.0 ​​(अप्रैल 2009 में जारी) में दिखाई दिया,<ref>{{cite web|url=https://netbsd.org/releases/formal-5/NetBSD-5.0.html|title=Announcing NetBSD 5.0|access-date=25 April 2016}}</ref> और अप्रैल 2016 में नेटबीएसडी-करंट में डिफ़ॉल्ट रूप से सक्षम किया गया था।<ref>{{cite web|url=https://mail-index.netbsd.org/current-users/2016/04/10/msg029186.html|title=PIE binaries and ASLR are on in the default build for amd64|author=Christos Zoulas|year=2016|access-date=25 April 2016}}</ref>
amd64 पर कर्नेल ASLR सपोर्ट को अक्टूबर 2017 में NetBSD-current में जोड़ा गया, जिससे NetBSD KASLR को सपोर्ट करने वाला पहला BSD सिस्टम बन गया।<ref>{{cite web|url=https://blog.netbsd.org/tnf/entry/kernel_aslr_on_amd64|title=Kernel ASLR on amd64|year=2017|access-date=16 October 2017}}</ref>


एएमडी64 पर कर्नेल एएसएलआर सहायता को अक्टूबर 2017 में नेटबीएसडी-करंट में जोड़ा गया, जिससे नेटबीएसडी केएएसएलआर को सहायता करने वाला पहलाबीएसडी प्रणाली बन गया।<ref>{{cite web|url=https://blog.netbsd.org/tnf/entry/kernel_aslr_on_amd64|title=Kernel ASLR on amd64|year=2017|access-date=16 October 2017}}</ref>


=== {{anchor|OpenBSD}} [[ओपनबीएसडी]] ===
 
2003 में, OpenBSD ASLR के एक मजबूत रूप का समर्थन करने और डिफ़ॉल्ट रूप से इसे सक्रिय करने वाला पहला मुख्यधारा का ऑपरेटिंग सिस्टम बन गया।<ref name="OpenBSD-firstASLR">{{cite web
 
=== [[ओपनबीएसडी]] ===
2003 में, ओपन बीएसडी एएसएलआर के एक शाक्तिशाली रूप का समर्थन करने और डिफ़ॉल्ट रूप से इसे सक्रिय करने वाला पहला मुख्यधारा का ऑपरेटिंग प्रणाली बन गया।<ref name="OpenBSD-firstASLR">{{cite web
|url=http://www.openbsd.org/papers/ven05-deraadt/index.html
|url=http://www.openbsd.org/papers/ven05-deraadt/index.html
|title=Exploit Mitigation Techniques (updated to include random malloc and mmap) at OpenCON 2005
|title=Exploit Mitigation Techniques (updated to include random malloc and mmap) at OpenCON 2005
Line 116: Line 120:
|year=2005
|year=2005
|access-date=26 August 2009}}</ref>
|access-date=26 August 2009}}</ref>
ओपनबीएसडी ने 2008 में अपना एएसएलआर समर्थन पूरा किया जब उसने [[स्थिति स्वतंत्र निष्पादन योग्य]] बायनेरिज़ के लिए समर्थन जोड़ा।<ref name="OpenBSD-PIE">{{cite web|url=http://www.openbsd.org/papers/nycbsdcon08-pie/|title=OpenBSD की स्थिति स्वतंत्र निष्पादन योग्य (PIE) कार्यान्वयन|author=Kurt Miller|year=2008|access-date=22 July 2011| archive-url= https://web.archive.org/web/20110612150147/http://openbsd.org/papers/nycbsdcon08-pie/| archive-date= 12 June 2011 | url-status= live}}</ref> OpenBSD 4.4 का C डायनेमिक मेमोरी आवंटन #OpenBSD.27s malloc|malloc(3) को ASLR और OpenBSD के हिस्से के रूप में कार्यान्वित गैप पेज सुविधाओं का लाभ उठाकर सुरक्षा में सुधार करने के लिए डिज़ाइन किया गया था। <code>mmap</code> [[सिस्टम कॉल]], और उपयोग-बाद-मुक्त बग का पता लगाने के लिए।<ref name="malloc.c">{{cite web|url=http://bxr.su/OpenBSD/lib/libc/stdlib/malloc.c |title=libc/stdlib/malloc.c |website=BSD Cross Reference, OpenBSD src/lib/}}</ref> 2013 में रिलीज़ किया गया, OpenBSD 5.3 पहला मेनस्ट्रीम ऑपरेटिंग सिस्टम था, जो कई [[कंप्यूटर आर्किटेक्चर]] पर डिफ़ॉल्ट रूप से स्थिति-स्वतंत्र निष्पादन योग्य को सक्षम करता था, और OpenBSD 5.7 डिफ़ॉल्ट रूप से स्थिति-स्वतंत्र स्थैतिक बायनेरिज़ (स्टेटिक-PIE) को सक्रिय करता था।<ref name="OpenBSD-PIE"/>
 
ओपनबीएसडी ने 2008 में अपना एएसएलआर समर्थन पूरा किया जब उसने [[स्थिति स्वतंत्र निष्पादन योग्य]] बायनेरिज़ के लिए समर्थन जोड़ा।<ref name="OpenBSD-PIE">{{cite web|url=http://www.openbsd.org/papers/nycbsdcon08-pie/|title=OpenBSD की स्थिति स्वतंत्र निष्पादन योग्य (PIE) कार्यान्वयन|author=Kurt Miller|year=2008|access-date=22 July 2011| archive-url= https://web.archive.org/web/20110612150147/http://openbsd.org/papers/nycbsdcon08-pie/| archive-date= 12 June 2011 | url-status= live}}</ref> ओपन बीएसडी 4.4 का C डायनेमिक मेमोरी आवंटन या ओपन बीएसडी .27s मैलोक मैलोक(3) को एएसएलआर और ओपन बीएसडी के भाग के रूप में कार्यान्वित गैप पेज सुविधाओं का लाभ उठाकर सुरक्षा में सुधार करने के लिए डिज़ाइन किया गया था। <code>एममैप</code> [[सिस्टम कॉल|प्रणाली कॉल]], और उपयोग-बाद-मुक्त बग का पता लगाने के लिए।<ref name="malloc.c">{{cite web|url=http://bxr.su/OpenBSD/lib/libc/stdlib/malloc.c |title=libc/stdlib/malloc.c |website=BSD Cross Reference, OpenBSD src/lib/}}</ref> 2013 में रिलीज़ किया गया, ओपन बीएसडी 5.3 पहला मेनस्ट्रीम ऑपरेटिंग प्रणाली था, जो कई [[कंप्यूटर आर्किटेक्चर]] पर डिफ़ॉल्ट रूप से स्थिति-स्वतंत्र निष्पादन योग्य को सक्षम करता था, और ओपन बीएसडी 5.7 डिफ़ॉल्ट रूप से स्थिति-स्वतंत्र स्थैतिक बायनेरिज़ (स्टेटिक-पाई) को सक्रिय करता था।<ref name="OpenBSD-PIE" />
 




=== मैकोज़ ===
=== मैकोज़ ===
[[Mac OS X Leopard]] 10.5 (अक्टूबर 2007 में जारी) में, Apple ने सिस्टम लाइब्रेरी के लिए रेंडमाइजेशन की शुरुआत की।<ref>{{cite web|url=https://www.apple.com/macosx/security/#sixtyfour |title=Mac OS X – Security – Keeps safe from viruses and malware |publisher=Apple |access-date=10 April 2012|archive-url=https://web.archive.org/web/20110525190329/http://www.apple.com/macosx/security/#sixtyfour |archive-date=25 May 2011 }}</ref>
[[Mac OS X Leopard|मैक ओएस एक्स लेपर्ड]] 10.5 (अक्टूबर 2007 में जारी) में, एप्पल ने प्रणाली पुस्तकालय के लिए रेंडमाइजेशन की प्रारंभ की।<ref>{{cite web|url=https://www.apple.com/macosx/security/#sixtyfour |title=Mac OS X – Security – Keeps safe from viruses and malware |publisher=Apple |access-date=10 April 2012|archive-url=https://web.archive.org/web/20110525190329/http://www.apple.com/macosx/security/#sixtyfour |archive-date=25 May 2011 }}</ref>
[[मैक ओएस एक्स लायन]] 10.7 (जुलाई 2011 को जारी) में, ऐप्पल ने सभी अनुप्रयोगों को कवर करने के लिए अपने कार्यान्वयन का विस्तार किया, जिसमें कहा गया कि सभी अनुप्रयोगों के लिए एड्रेस स्पेस लेआउट रेंडमाइजेशन (एएसएलआर) में सुधार किया गया है। यह अब 32-बिट ऐप्स के लिए उपलब्ध है (जैसे हीप मेमोरी प्रोटेक्शन हैं), 64-बिट और 32-बिट एप्लिकेशन को हमले के लिए अधिक प्रतिरोधी बनाते हैं।<ref>{{cite web|url=https://www.apple.com/macosx/whats-new/features.html#security|title=सुरक्षा|publisher=Apple Inc.|access-date=6 June 2011| archive-url= https://web.archive.org/web/20110606235315/http://www.apple.com/macosx/whats-new/features.html#security| archive-date= 6 June 2011}}</ref>
OS X माउंटेन लायन 10.8 (जुलाई 2012 को जारी) और बाद में, कर्नेल के साथ-साथ [[लोड करने योग्य कर्नेल मॉड्यूल]] और ज़ोन सहित पूरे सिस्टम को सिस्टम बूट के दौरान बेतरतीब ढंग से स्थानांतरित किया जाता है।<ref>{{cite web|url=http://movies.apple.com/media/us/osx/2012/docs/OSX_MountainLion_Core_Technologies_Overview.pdf|title=ओएस एक्स माउंटेन लायन कोर टेक्नोलॉजीज अवलोकन|date=June 2012 |access-date=25 July 2012}}</ref>


[[मैक ओएस एक्स लायन]] 10.7 (जुलाई 2011 को जारी) में, ऐप्पल ने सभी अनुप्रयोगों को आवरण करने के लिए अपने कार्यान्वयन का विस्तार किया, जिसमें कहा गया कि सभी अनुप्रयोगों के लिए एड्रेस स्पेस लेआउट रेंडमाइजेशन (एएसएलआर) में सुधार किया गया है। यह अब 32-बिट ऐप्स के लिए उपलब्ध है (जैसे हीप मेमोरी प्रोटेक्शन हैं), 64-बिट और 32-बिट एप्लिकेशन को हमले के लिए अधिक प्रतिरोधी बनाते हैं।<ref>{{cite web|url=https://www.apple.com/macosx/whats-new/features.html#security|title=सुरक्षा|publisher=Apple Inc.|access-date=6 June 2011| archive-url= https://web.archive.org/web/20110606235315/http://www.apple.com/macosx/whats-new/features.html#security| archive-date= 6 June 2011}}</ref>


ओएस एक्स माउंटेन लायन 10.8 (जुलाई 2012 को जारी) और बाद में, कर्नेल के साथ-साथ [[लोड करने योग्य कर्नेल मॉड्यूल]] और ज़ोन सहित पूरे प्रणाली को प्रणाली बूट के समय व्यवस्थित ढंग से स्थानांतरित किया जाता है।<ref>{{cite web|url=http://movies.apple.com/media/us/osx/2012/docs/OSX_MountainLion_Core_Technologies_Overview.pdf|title=ओएस एक्स माउंटेन लायन कोर टेक्नोलॉजीज अवलोकन|date=June 2012 |access-date=25 July 2012}}</ref>
=== सोलारिस ===
=== सोलारिस ===
ASLR Solaris (ऑपरेटिंग सिस्टम) में Solaris 11.1 (अक्टूबर 2012 को जारी) के साथ शुरू किया गया है। Solaris 11.1 में ASLR को सिस्टम-वाइड, प्रति ज़ोन, या प्रति-बाइनरी आधार पर सेट किया जा सकता है।<ref>[http://docs.oracle.com/cd/E26502_01/html/E29015/concept-13.html#concept-aslr-1 Controlling Access to Machine Resources], Oracle Information Library, 26 October 2012.</ref>
एएसएलआर सोलारिस (ऑपरेटिंग प्रणाली ) में सोलारिस 11.1 (अक्टूबर 2012 को जारी) के साथ प्रारंभ किया गया है। सोलारिस 11.1 में एएसएलआर को प्रणाली -वाइड, प्रति ज़ोन, या प्रति-बाइनरी आधार पर सेट किया जा सकता है।<ref>[http://docs.oracle.com/cd/E26502_01/html/E29015/concept-13.html#concept-aslr-1 Controlling Access to Machine Resources], Oracle Information Library, 26 October 2012.</ref>




== शोषण ==
== शोषण ==
ASLR सुरक्षा को बायपास करने के लिए [[शाखा लक्ष्य बफर]] का उपयोग करने वाले एक साइड-चैनल हमले का प्रदर्शन किया गया।<ref name="jump-over-aslr" />2017 में, ASLR⊕Cache नाम के एक हमले का प्रदर्शन किया गया था जो जावास्क्रिप्ट का उपयोग करके वेब ब्राउज़र में ASLR को हरा सकता था।<ref>[https://www.vusec.net/projects/anc/ AnC] VUSec, 2017</ref>
एएसएलआर सुरक्षा को बायपास करने के लिए [[शाखा लक्ष्य बफर]] का उपयोग करने वाले एक साइड-चैनल हमले का प्रदर्शन किया गया।<ref name="jump-over-aslr" />2017 में, एएसएलआर⊕कैश नाम के एक हमले का प्रदर्शन किया गया था जो जावास्क्रिप्ट का उपयोग करके वेब ब्राउज़र में एएसएलआर को हरा सकता था।<ref>[https://www.vusec.net/projects/anc/ AnC] VUSec, 2017</ref>




Line 145: Line 151:


== बाहरी संबंध ==
== बाहरी संबंध ==
* [http://tech.yandex.com/events/ruBSD/2013/talks/103/ Exploit Mitigation Techniques: an Update After 10 Years] {{Webarchive|url=https://web.archive.org/web/20140220032702/http://tech.yandex.com/events/ruBSD/2013/talks/103/ |date=2014-02-20  }} in OpenBSD
* [http://tech.yandex.com/events/ruBSD/2013/talks/103/ Eएक्सploit Mitigation Techniques: an Update After 10 Years] {{Webarchive|url=https://web.archive.org/web/20140220032702/http://tech.yandex.com/events/ruBSD/2013/talks/103/ |date=2014-02-20  }} in ओपन बीएसडी
* [http://pax.grsecurity.net/docs/aslr.txt PaX documentation on ASLR]
* [http://pax.grsecurity.net/docs/aslr.txt पैक्स documentation on एएसएलआर]
* [http://grsecurity.net/PaX-presentation_files/frame.htm Comparison of PaX to Exec Shield and W^X]
* [http://grsecurity.net/PaX-presentation_files/frame.htm Comparison of पैक्स to एक्सेक शील्ड and W^X]
* [https://blogs.msdn.microsoft.com/michael_howard/2006/05/26/address-space-layout-randomization-in-windows-vista/ Address Space Layout Randomization in Windows Vista - Michael Howard's Web Log]
* [https://blogs.msdn.microsoft.com/michael_howard/2006/05/26/address-space-layout-randomization-in-windows-vista/ Address Space Layout Randomization in Windows Vista - Michael Howard's Web Log]
* [https://web.archive.org/web/20151121145119/http://www.wehnus.com/ ASLR for Windows 2000/XP/2003 (WehnTrust)]
* [https://web.archive.org/web/20151121145119/http://www.wehnus.com/ एएसएलआर for Windows 2000/XP/2003 (WehnTrust)]
* [http://www.phrack.org/issues.html?issue=59&id=9#article Bypassing PaX ASLR protection]
* [http://www.phrack.org/issues.html?issue=59&id=9#article Bypassing पैक्स एएसएलआर protection]
* [http://portal.acm.org/citation.cfm?id=1030124&dl=ACM&coll=&CFID=15151515&CFTOKEN=6184618 On the effectiveness of address space layout randomization]
* [http://portal.acm.org/citation.cfm?id=1030124&dl=ACM&coll=&CFID=15151515&CFTOKEN=6184618 On the effectiveness of address space layout randomization]
* [http://www.winitor.com/ Test Applications (or libraries) for their ASLR and DEP support]
* [http://www.winitor.com/ Test Applications (or libraries) for their एएसएलआर and DEP support]
* [https://ece.uwaterloo.ca/~vganesh/TEACHING/S2014/ECE458/aslr.pdf ASLR Smack & Laugh Reference]
* [https://ece.uwaterloo.ca/~vganesh/TEACHING/S2014/ECE458/aslr.pdf एएसएलआर Smack & Laugh Reference]
 
{{DEFAULTSORT:Address space layout randomization}}[[Category: ऑपरेटिंग सिस्टम सुरक्षा]]
 


{{DEFAULTSORT:Address space layout randomization}}


[[Category: Machine Translated Page]]
[[Category:All articles containing potentially dated statements|Address space layout randomization]]
[[Category:Created On 26/04/2023]]
[[Category:Articles containing potentially dated statements from 2009|Address space layout randomization]]
[[Category:Articles containing potentially dated statements from 2021|Address space layout randomization]]
[[Category:CS1 English-language sources (en)]]
[[Category:Created On 26/04/2023|Address space layout randomization]]
[[Category:Lua-based templates|Address space layout randomization]]
[[Category:Machine Translated Page|Address space layout randomization]]
[[Category:Pages with script errors|Address space layout randomization]]
[[Category:Templates Vigyan Ready|Address space layout randomization]]
[[Category:Templates that add a tracking category|Address space layout randomization]]
[[Category:Templates that generate short descriptions|Address space layout randomization]]
[[Category:Templates using TemplateData|Address space layout randomization]]
[[Category:Webarchive template wayback links|Address space layout randomization]]
[[Category:ऑपरेटिंग सिस्टम सुरक्षा|Address space layout randomization]]

Latest revision as of 09:31, 17 May 2023

एड्रेस स्पेस लेआउट रैंडमाइजेशन (एएसएलआर) एक कंप्यूटर सुरक्षा विधि है जो स्मृति भ्रष्टाचार भेद्यता (कंप्यूटिंग) के शोषण (कंप्यूटर सुरक्षा) को रोकने में सम्मिलित है।[1] उदाहरण के लिए, स्मृति में एक विशेष शोषित कार्य करने के लिए एक हमलावर को शक्ति से कूदने से रोकने के लिए, एएसएलआर एक प्रक्रिया (कंप्यूटर विज्ञान) के प्रमुख डेटा क्षेत्रों के पता स्थान की स्थिति को निरुद्देश्यता से व्यवस्थित करता है, जिसमें निष्पादन योग्य का आधार और स्थिति सम्मिलित है। ढेर आधारित स्मृति आवंटन, गतिशील स्मृति आवंटन और पुस्तकालय (कंप्यूटर विज्ञान) है|

इतिहास

लिनक्स पैक्स प्रोजेक्ट ने सबसे पहले "एएसएलआर " शब्द गढ़ा, और जुलाई 2001 में लिनक्स कर्नेल के लिए एक पैच के रूप में एएसएलआर का पहला डिज़ाइन और कार्यान्वयन प्रकाशित किया। इसे एक पूर्ण कार्यान्वयन के रूप में देखा जाता है, जो अक्टूबर 2002 से कर्नेल स्टैक रेंडमाइजेशन के लिए एक पैच भी प्रदान करता है।

डिफ़ॉल्ट रूप से एएसएलआर को सहायता करने वाला पहला मुख्यधारा संचालन प्रणाली 2003 में ओपन बीएसडी वर्जन 3.4 था,,[2][3] जिसके बाद 2005 में लिनक्स आया।

लाभ

एड्रेस स्पेस रेंडमाइजेशन कुछ प्रकार के सुरक्षा हमलों में बाधा डालता है, जिससे हमलावर के लिए लक्षित पतों की भविष्यवाणी करना अधिक कठिन हो जाता है। उदाहरण के लिए, रिटर्न-टू-लिबक हमलों को अंजाम देने की प्रयाश करने वाले हमलावरों को निष्पादित किए जाने वाले कोड का पता लगाना चाहिए, जबकि स्टैक पर इंजेक्ट किए गए ऐप को निष्पादित करने की प्रयाश करने वाले अन्य हमलावरों को पहले स्टैक को ढूंढना होगा। दोनों ही स्थिति में, प्रणाली हमलावरों से संबंधित मेमोरी-एड्रेस को अस्पष्ट कर देता है। इन मानो का अनुमान लगाया जाना है, और एक गलत अनुमान सामान्यतः एप्लिकेशन क्रैश होने के कारण पुनर्प्राप्त करने योग्य नहीं होता है।

प्रभावशीलता

एड्रेस स्पेस लेआउट रेंडमाइजेशन एक हमलावर की कम संभावना पर आधारित है जो व्यवस्थित ढंग से रखे गए क्षेत्रों के स्थानों का अनुमान लगाता है। सर्च स्पेस बढ़ाकर सुरक्षा बढ़ाई जाती है। इस प्रकार, रैंडम ऑफसेट में अधिक जानकारी एंट्रॉपी उपस्थित होने पर पता स्थान यादृच्छिककरण अधिक प्रभावी होता है। एन्ट्रापी को या तो आभासी मेमोरी एरिया स्पेस की मात्रा बढ़ाकर बढ़ाया जाता है, जिस पर रैंडमाइजेशन होता है या उस अवधि को कम करता है जिस पर रैंडमाइजेशन होता है। अवधि को सामान्यतः जितना संभव हो उतना छोटा प्रयुक्त किया जाता है, इसलिए अधिकांश प्रणालियों को वीएमए स्पेस रेंडमाइजेशन में वृद्धि करनी चाहिए।

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

निम्नलिखित चर घोषित किए जा सकते हैं:

  • (स्टैक टॉप के एंट्रॉपी बिट्स)
  • (एन्ट्रॉपी बिट्स एममैप () आधार)
  • (मुख्य निष्पादन योग्य आधार के एंट्रॉपी बिट्स)
  • (ढेर आधार के एंट्रॉपी बिट्स)
  • (स्टैक एंट्रॉपी के प्रति प्रयास पर हमला किया गया बिट्स)
  • (प्रति प्रयास बिट्स पर हमला किया एममैप () बेस एंट्रॉपी)
  • (मुख्य निष्पादन योग्य एंट्रॉपी के प्रति प्रयास पर हमला किया गया बिट्स)
  • (ढेर आधार एंट्रॉपी के प्रति प्रयास पर हमला किया गया बिट्स)
  • (प्रयास किए गए)
  • (एन्ट्रापी की कुल राशि: )

किसी हमलावर के सफल होने की संभावना की गणना करने के लिए, हमें कई प्रयास करने होंगे α हस्ताक्षर-आधारित आईपीएस, नियम प्रवर्तन, या अन्य कारक द्वारा बाधित किए बिना किया गया; ब्रूट फ़ोर्सिंग के स्थिति में, डेमन को फिर से प्रारंभ नहीं किया जा सकता है। हमें यह भी पता लगाना होगा कि कितने बिट्स प्रासंगिक हैं और प्रत्येक प्रयास में कितने पर हमला किया जा रहा है, हमलावर को कितने बिट्स को छोड़ना है।

निम्नलिखित सूत्र एंट्रॉपी के N बिट्स पर α प्रयासों के दिए गए सेट के लिए सफलता की संभावना का प्रतिनिधित्व करते हैं।

  • (पृथक अनुमान; प्रत्येक प्रयास के बाद पता स्थान को फिर से यादृच्छिक किया जाता है)
  • (समान पता स्थान के साथ कार्यक्रम की प्रतियों पर व्यवस्थित क्रूर बल)

कई प्रणालियों में, हजारों या लाखों में हो सकता है; पर आधुनिक 64-बिट प्रणाली , ये संख्याएं सामान्यतः कम से कम लाखों तक पहुंचती हैं, हेक्टर मार्को-गिस्बर्ट और इस्माइल रिपोल ने 2014 में दिखाया कि कुछ परिस्थितियों में एक सेकंड से भी कम समय में 64-बिट प्रणाली में एएसएलआर को कैसे बायपास किया जाए।[4] 2004 की कंप्यूटर गति पर 32-बिट प्रणाली के लिए जिसमें एड्रेस रेंडमाइजेशन के लिए 16 बिट्स हैं, शचम और सहकर्मी स्थिति ... 16 बिट्स एड्रेस रैंडमाइजेशन को मिनटों के अंदर एक क्रूर बल के हमले से हराया जा सकता है।[5] लेखकों का कथन बिना किसी देरी के एक ही एप्लिकेशन पर कई बार हमला करने की क्षमता पर निर्भर करता है। एएसएलआर के उचित कार्यान्वयन, जैसे कि जीआर सुरक्षा में सम्मिलित, ऐसे क्रूर बल के हमलों को अक्षम्य बनाने के लिए कई विधि प्रदान करते हैं। एक विधि में एक निश्चित समय के लिए एक निष्पादन योग्य को निष्पादित करने से रोकना सम्मिलित है यदि यह एक निश्चित संख्या में दुर्घटनाग्रस्त हो गया है।

एंड्रॉयड,[6] और संभवतः अन्य प्रणालियाँ, पुस्तकालय लोड ऑर्डर रेंडमाइजेशन को प्रयुक्त करें, एएसएलआर का एक रूप जो उस ऑर्डर को रैंडमाइज करता है जिसमें पुस्तकालय लोड की जाती हैं। यह बहुत कम एन्ट्रॉपी प्रदान करता है। प्रति आवश्यक पुस्तकालय में आपूर्ति की गई एंट्रॉपी के बिट्स की संख्या का अनुमान नीचे दिखाई देता है; यह अभी तक विभिन्न पुस्तकालय आकारों के लिए खाता नहीं है, इसलिए प्राप्त वास्तविक एन्ट्रापी वास्तव में कुछ अधिक है। ध्यान दें कि हमलावरों को सामान्यतः केवल एक पुस्तकालय की आवश्यकता होती है; गणित कई पुस्तकालयों के साथ अधिक जटिल है, और नीचे भी दिखाया गया है। ध्यान दें कि केवल एक पुस्तकालय का उपयोग करने वाले हमलावर की स्थति अधिक जटिल सूत्र का सरलीकरण है .

  • l (लोडेड पुस्तकालयों की संख्या)
  • β (हमलावर द्वारा प्रयुक्त पुस्तकालयों की संख्या)

ये मान l के बड़े मानों के लिए भी कम होते हैं, सबसे महत्वपूर्ण बात यह है कि हमलावर सामान्यतः केवल C मानक पुस्तकालय का उपयोग कर सकते हैं और इस प्रकार कोई भी अक्सर यह मान सकता है कि चूंकि , यहां तक ​​कि पुस्तकालयों की एक छोटी संख्या के लिए भी यहाँ एन्ट्रापी के कुछ अंश प्राप्त हुए हैं; इस प्रकार एंट्रॉपी के कुछ अतिरिक्त बिट्स प्राप्त करने के लिए वीएमए एड्रेस रैंडमाइजेशन के साथ पुस्तकालय लोड ऑर्डर रैंडमाइजेशन को संयोजित करना संभावित रूप से रौचक है। ध्यान दें कि एंट्रॉपी के ये अतिरिक्त बिट अन्य एममैप () सेगमेंट पर प्रयुक्त नहीं होंगे, केवल पुस्तकालय है ।

एंट्रॉपी कम करना

हमलावर एक यादृच्छिक पता स्थान में उपस्थित एन्ट्रापी को कम करने के लिए कई विधि का उपयोग कर सकते हैं, जिसमें साधारण सूचना लीक से लेकर एंट्रॉपी प्रति हमले के कई बिट्स पर हमला करना (जैसे हीप छिड़काव द्वारा) सम्मिलित है। इस बारे में बहुत कम किया जा सकता है।

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

स्टैक या हीप में एन्ट्रॉपी को भी कम किया जा सकता है। स्टैक को सामान्यतः 16 बाइट्स के साथ संरेखित किया जाना चाहिए, और इसलिए यह सबसे छोटा संभव यादृच्छिककरण अंतराल है; जबकि ढेर पृष्ठ-संरेखित होना चाहिए, सामान्यतः 4096 बाइट्स हमले का प्रयास करते समय, इन अंतरालों के साथ प्रतिलिपि हमलों को संरेखित करना संभव है; एक एनओपी स्लाइड का उपयोग शेलकोड इंजेक्शन और स्ट्रिंग 'के साथ किया जा सकता है।/bin/sh' को ' से बदला जा सकता है////////bin/sh' प्रणाली पर लौटने का प्रयास करते समय स्लैश की इच्छानुसार संख्या के लिए हटाए गए बिट्स की संख्या बिल्कुल के लिए n अंतराल पर हमला किया है ।

स्टैक या हीप में डेटा की मात्रा के कारण ऐसी कमी सीमित होती है। ढेर, उदाहरण के लिए, सामान्यतः सीमित है MB[7] और बहुत कम बढ़ता है; यह अधिकतम के लिए अनुमति देता है 19 bits, चूंकि एक अधिक रूढ़िवादी अनुमान लगभग 8–10 bits के संगत 4–16 KB[7] स्टैक स्टफिंग का दूसरी ओर ढेर स्मृति आवंटक के व्यवहार से सीमित है; ग्लिबीसी के स्थिति में, 128 केबी से ऊपर के आवंटन एममैप का उपयोग करके बनाए जाते हैं, हमलावरों को 5 बिट्स की कमी तक सीमित करते हैं। यह भी एक सीमित कारक है जब क्रूर बल; चूंकि प्रदर्शन करने के लिए हमलों की संख्या को कम किया जा सकता है, हमलों का आकार इतना बढ़ जाता है कि कुछ परिस्थितियों में व्यवहार अतिक्रमण का पता लगाने वाली प्रणालियों के लिए स्पष्ट हो सकता है।

सीमाएं

शमन उपयोगिता को हटाते हुए, एएसएलआर-संरक्षित पतों को विभिन्न पार्श्व चैनलों द्वारा लीक किया जा सकता है। हाल के हमलों में सीपीयू ब्रांच टारगेट प्रेडिक्टर बफर (बीटीबी) या मेमोरी मैनेजमेंट यूनिट (एमएमयू) वॉकिंग पेज टेबल द्वारा लीक की गई जानकारी का उपयोग किया गया है। यह स्पष्ट नहीं है कि एएसएलआर हमले के इस वर्ग को कम किया जा सकता है या नहीं। यदि वे ऐसा नहीं कर पाते हैं, तो एएसएलआर का लाभ कम या समाप्त हो जाता है।

कार्यान्वयन

कई मुख्यधारा, सामान्य-उद्देश्य वाले ऑपरेटिंग प्रणाली एएसएलआर को प्रयुक्त करते हैं।

एंड्रॉइड

एंड्रॉइड (ऑपरेटिंग प्रणाली ) 4.0 आइसक्रीम सैंडविच मेमोरी-मैनेजमेंट उद्देश्य के कारण प्रणाली और थर्ड-पार्टी एप्लिकेशन को शोषण से बचाने में सहायता करने के लिए एड्रेस स्पेस लेआउट रैंडमाइजेशन (एएसएलआर) प्रदान करता है। एंड्रॉइड 4.1 में स्थिति-स्वतंत्र निष्पादन योग्य समर्थन जोड़ा गया था।[8] एंड्रॉइड 5.0 ने गैर-पीआईई समर्थन को छोड़ दिया और सभी गतिशील रूप से जुड़े बायनेरिज़ को स्थिति से स्वतंत्र होने की आवश्यकता है।[9][10] पुस्तकालय लोड ऑर्डरिंग रैंडमाइजेशन को 26 अक्टूबर 2015 को एंड्रॉइड ओपन-सोर्स प्रोजेक्ट में स्वीकार किया गया था।[6] और एंड्रॉइड 7.0 रिलीज़ में सम्मिलित किया गया था।

ड्रैगनफली बीएसडी

ड्रेगनफ्लाई बीएसडी में ओपन बीएसडी के मॉडल पर आधारित एएसएलआर का कार्यान्वयन है, जिसे 2010 में जोड़ा गया था।[11] यह डिफ़ॉल्ट रूप से बंद है, और सिससिटीएल वीएम.रेंडेमाईज़ _एममैप को 1 पर सेट करके सक्षम किया जा सकता है।

फ्रीबीएसडी

एएसएलआर के लिए समर्थन मुक्त बीएसडी 13.0 में दिखाई दिया।[12][13] यह 13.2 के बाद से डिफ़ॉल्ट रूप से सक्षम है।[14]


आईओएस (आईफोन, आईपॉड टच, आईपैड)

एप्पल इंक. ने आईओएस4.3 (मार्च 2011 में रिलीज़) में एएसएलआर प्रस्तुत किया।[15]

केएएसएलआर को आईओएस 6 में प्रस्तुत किया गया था।[16] यादृच्छिक कर्नेल आधार है 0x01000000 + ((1+0xRR) * 0x00200000), जहाँ 0xRR आईबूट (द्वितीय-चरण आईओएस बूट लोडर) द्वारा उत्पन्न एसएचए1 (यादृच्छिक डेटा) से एक यादृच्छिक बाइट है।[17]


लिनक्स

लिनक्स कर्नेल ने जून 2005 में जारी कर्नेल संस्करण 2.6.12 के बाद से डिफ़ॉल्ट रूप से एएसएलआर के एक अशक्त रूप को सक्षम किया।[18] लिनक्स कर्नेल के पैक्स और एक्सेक शील्ड पैचसेट अधिक पूर्ण कार्यान्वयन प्रदान करते हैं। लिनक्स के लिए एक्सेक शील्ड पैच 16 बाइट्स की अवधि में 19 बिट्स स्टैक एंट्रॉपी की आपूर्ति करता है, और 4096 बाइट्स के 1 पृष्ठ की अवधि पर एममैप बेस रेंडमाइज़ेशन के 8 बिट्स प्रदान करता है। यह स्टैक बेस को 8 एमबी चौड़े क्षेत्र में रखता है जिसमें 524,288 संभावित स्थान होते हैं, और एमएमएपी आधार 1 एमबी चौड़े क्षेत्र में होता है जिसमें 256 संभावित स्थान होते हैं।

स्थिति-स्वतंत्र निष्पादन योग्य (पाई) मुख्य निष्पादन योग्य बाइनरी के लिए एक यादृच्छिक आधार पता प्रयुक्त करता है और 2003 से उपस्थित है। यह मुख्य निष्पादन योग्य को समान पता यादृच्छिकता प्रदान करता है जैसा कि साझा पुस्तकालयों के लिए उपयोग किया जा रहा है। पीआईई सुविधा का उपयोग एक ही निष्पादन योग्य के लिए प्रीलिंक सुविधा के साथ नहीं किया जा सकता है। प्रीलिंक टूल रनटाइम के अतिरिक्त प्रीलिंक समय पर रैंडमाइजेशन को प्रयुक्त करता है, क्योंकि डिजाइन के अनुसार प्रीलिंक का उद्देश्य डायनामिक लिंकर से पहले रिलोकेटिंग पुस्तकालय को हैंडल करना है, जो प्रोग्राम के कई रन के लिए एक बार रिलोकेशन की अनुमति देता है। नतीजतन, वास्तविक पता स्थान यादृच्छिककरण प्रीलिंकिंग के उद्देश्य को विफल कर देगा।

personality(2)का उपयोग करते हुए, इसके निष्पादन डोमेन को बदलकर एक विशिष्ट प्रक्रिया के लिए रैंडमाइजेशन को अक्षम किया जा सकता है।[19]

कर्नेल एड्रेस स्पेस लेआउट रैंडमाइजेशन

कर्नेल एड्रेस स्पेस लेआउट रेंडमाइजेशन (केएएसएलआर) लिनक्स कर्नेल छवि के लिए एड्रेस स्पेस रैंडमाइजेशन को यादृच्छिक रूप से सक्षम करता है जहां बूट समय पर कर्नेल कोड रखा जाता है।[20] केएएसएलआर को 30 मार्च 2014 को जारी कर्नेल संस्करण 3.14 में लिनक्स कर्नेल मेनलाइन में विलय कर दिया गया था।[21] संकलित होने पर, इसे निर्दिष्ट करके बूट समय पर अक्षम किया जा सकता है nokaslr कर्नेल के बूट पैरामीटर में से एक के रूप में।[22]

एक्स86 प्रोसेसर में कई साइड-चैनल हमले हैं जो कर्नेल पतों को लीक कर सकते हैं।[23][24] 2017 के अंत में, इन हमलों को हराने के लिए कर्नेल पेज-टेबल अलगाव (केपीटीआई या ​​कैसर) विकसित किया गया था।[25][26] चूंकि, यह विधि शाखा भविष्यवक्ता संरचनाओं में टकराव का उपयोग करने वाले साइड-चैनल हमलों से रक्षा नहीं कर सकती है।[27]

As of 2021, महीन दानेदार कर्नेल एड्रेस स्पेस लेआउट रेंडमाइजेशन (या कार्य ग्रेन्युलर केएएसएलआर, एफजीकेएएसएलआर) केएएसएलआर का एक नियोजित विस्तार है जिसे कार्य स्तर तक रैंडमाइज किया जाता है।[28]


माइक्रोसॉफ्ट विंडोज

माइक्रोसॉफ्ट के विंडोज विस्टा (जनवरी 2007 को जारी) और बाद में एएसएलआर को केवल एक्जीक्यूटेबल्स और डायनेमिक लिंक पुस्तकालय के लिए सक्षम किया गया है जो विशेष रूप से एएसएलआर-सक्षम होने के लिए जुड़े हुए हैं।[29] संगतता के लिए, यह अन्य अनुप्रयोगों के लिए डिफ़ॉल्ट रूप से सक्षम नहीं है। विशिष्ट रूप से, केवल पुराना सॉफ़्टवेयर असंगत होता है और एएसएलआर को रजिस्ट्री प्रविष्टि HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages,को संपादित करके [30] या Microsoft के एन्हांस्ड मिटिगेशन एक्सपीरियंस टूलकिट को स्थापित करके पूरी तरह से सक्षम किया जा सकता है ।

डायनेमिक मेमोरी आवंटन, कॉल स्टैक, प्रोसेस एनवायरनमेंट ब्लॉक और विन 32 थ्रेड सूचना ब्लॉक के स्थान भी यादृच्छिक हैं। सिमेंटेक के एक सुरक्षा श्वेतपत्र ने नोट किया कि 32-बिट विंडोज विस्टा में एएसएलआर अपेक्षित रूप से शाक्तिशाली नहीं हो सकता है, और माइक्रोसॉफ्ट ने इसके कार्यान्वयन में अशक्ति को स्वीकार किया है।[31]

होस्ट-आधारित घुसपैठ रोकथाम प्रणाली जैसे वेहनट्रस्ट[32] और ओजोन[33] विंडोज एक्सपी और विंडोज सर्वर 2003 ऑपरेटिंग प्रणाली के लिए एएसएलआर भी प्रदान करता है। वेहनट्रस्ट ओपन-सोर्स है।[34] ओजोन के कार्यान्वयन का पूर्ण विवरण उपलब्ध नहीं है।[35]

यह फरवरी 2012 में नोट किया गया था[36] कि विंडोज 8 से पहले के 32-बिट विंडोज प्रणाली पर एएसएलआर कम मेमोरी स्थितियों में इसकी प्रभावशीलता को कम कर सकता है। उसी शोध में लिनक्स पर भी इसी तरह का प्रभाव प्राप्त किया गया था। परीक्षण कोड ने मैक ओएस एक्स 10.7.3 प्रणाली को कर्नेल पैनिक का कारण बना दिया, इसलिए इस परिदृश्य में इसके एएसएलआर व्यवहार के बारे में अस्पष्ट छोड़ दिया गया।

नेटबीएसडी

यूजरलैंड में एएसएलआर के लिए समर्थन नेटबीएसडी 5.0 ​​(अप्रैल 2009 में जारी) में दिखाई दिया,[37] और अप्रैल 2016 में नेटबीएसडी-करंट में डिफ़ॉल्ट रूप से सक्षम किया गया था।[38]

एएमडी64 पर कर्नेल एएसएलआर सहायता को अक्टूबर 2017 में नेटबीएसडी-करंट में जोड़ा गया, जिससे नेटबीएसडी केएएसएलआर को सहायता करने वाला पहलाबीएसडी प्रणाली बन गया।[39]


ओपनबीएसडी

2003 में, ओपन बीएसडी एएसएलआर के एक शाक्तिशाली रूप का समर्थन करने और डिफ़ॉल्ट रूप से इसे सक्रिय करने वाला पहला मुख्यधारा का ऑपरेटिंग प्रणाली बन गया।[2]

ओपनबीएसडी ने 2008 में अपना एएसएलआर समर्थन पूरा किया जब उसने स्थिति स्वतंत्र निष्पादन योग्य बायनेरिज़ के लिए समर्थन जोड़ा।[40] ओपन बीएसडी 4.4 का C डायनेमिक मेमोरी आवंटन या ओपन बीएसडी .27s मैलोक मैलोक(3) को एएसएलआर और ओपन बीएसडी के भाग के रूप में कार्यान्वित गैप पेज सुविधाओं का लाभ उठाकर सुरक्षा में सुधार करने के लिए डिज़ाइन किया गया था। एममैप प्रणाली कॉल, और उपयोग-बाद-मुक्त बग का पता लगाने के लिए।[41] 2013 में रिलीज़ किया गया, ओपन बीएसडी 5.3 पहला मेनस्ट्रीम ऑपरेटिंग प्रणाली था, जो कई कंप्यूटर आर्किटेक्चर पर डिफ़ॉल्ट रूप से स्थिति-स्वतंत्र निष्पादन योग्य को सक्षम करता था, और ओपन बीएसडी 5.7 डिफ़ॉल्ट रूप से स्थिति-स्वतंत्र स्थैतिक बायनेरिज़ (स्टेटिक-पाई) को सक्रिय करता था।[40]


मैकोज़

मैक ओएस एक्स लेपर्ड 10.5 (अक्टूबर 2007 में जारी) में, एप्पल ने प्रणाली पुस्तकालय के लिए रेंडमाइजेशन की प्रारंभ की।[42]

मैक ओएस एक्स लायन 10.7 (जुलाई 2011 को जारी) में, ऐप्पल ने सभी अनुप्रयोगों को आवरण करने के लिए अपने कार्यान्वयन का विस्तार किया, जिसमें कहा गया कि सभी अनुप्रयोगों के लिए एड्रेस स्पेस लेआउट रेंडमाइजेशन (एएसएलआर) में सुधार किया गया है। यह अब 32-बिट ऐप्स के लिए उपलब्ध है (जैसे हीप मेमोरी प्रोटेक्शन हैं), 64-बिट और 32-बिट एप्लिकेशन को हमले के लिए अधिक प्रतिरोधी बनाते हैं।[43]

ओएस एक्स माउंटेन लायन 10.8 (जुलाई 2012 को जारी) और बाद में, कर्नेल के साथ-साथ लोड करने योग्य कर्नेल मॉड्यूल और ज़ोन सहित पूरे प्रणाली को प्रणाली बूट के समय व्यवस्थित ढंग से स्थानांतरित किया जाता है।[44]

सोलारिस

एएसएलआर सोलारिस (ऑपरेटिंग प्रणाली ) में सोलारिस 11.1 (अक्टूबर 2012 को जारी) के साथ प्रारंभ किया गया है। सोलारिस 11.1 में एएसएलआर को प्रणाली -वाइड, प्रति ज़ोन, या प्रति-बाइनरी आधार पर सेट किया जा सकता है।[45]


शोषण

एएसएलआर सुरक्षा को बायपास करने के लिए शाखा लक्ष्य बफर का उपयोग करने वाले एक साइड-चैनल हमले का प्रदर्शन किया गया।[27]2017 में, एएसएलआर⊕कैश नाम के एक हमले का प्रदर्शन किया गया था जो जावास्क्रिप्ट का उपयोग करके वेब ब्राउज़र में एएसएलआर को हरा सकता था।[46]


यह भी देखें

संदर्भ

  1. Marco-Gisbert, Hector; Ripoll Ripoll, Ismael (2019-07-22). "एड्रेस स्पेस लेआउट रेंडमाइजेशन नेक्स्ट जेनरेशन". Applied Sciences (in English). 9 (14): 2928. doi:10.3390/app9142928. ISSN 2076-3417.
  2. 2.0 2.1 Theo De Raadt (2005). "Exploit Mitigation Techniques (updated to include random malloc and mmap) at OpenCON 2005". Retrieved 26 August 2009.
  3. {{cite web|title=ओपनबीएसडी नवाचार|url=https://www.openbsd.org/innovations.html%7Cpublisher=The OpenBSD project|access-date=12 September 2016}
  4. Marco-Gisbert, Hector; Ripoll, Ismael (20 November 2014). "On the Effectiveness of Full-ASLR on 64-bit Linux" (PDF).
  5. Shacham, H.; Page, M.; Pfaff, B.; Goh, E.J.; Modadugu, N.; Boneh, D (2004). एड्रेस-स्पेस रेंडमाइजेशन की प्रभावशीलता पर. 11th ACM conference on Computer and communications security. pp. 298–307.
  6. 6.0 6.1 "लाइब्रेरी लोड ऑर्डर रैंडमाइजेशन लागू करें". Retrieved 26 June 2017.
  7. 7.0 7.1 Transistorized memory, such as RAM, ROM, flash and cache sizes as well as file sizes are specified using binary meanings for K (10241), M (10242), G (10243), etc.
  8. "Android सुरक्षा". Android Developers. Retrieved 7 July 2012.
  9. "oss-सुरक्षा". Retrieved 4 October 2015.
  10. ""गैर-पीआईई निष्पादन योग्य के लिए समर्थन सक्षम करें" वापस करें". Retrieved 26 June 2017.
  11. mmap - add mmap offset randomization, DragonFly Gitweb, 25 November 2010.
  12. "एड्रेस स्पेस लेआउट रेंडमाइजेशन (एएसएलआर) लागू करें". Retrieved 10 February 2019.
  13. "एएसएलआर - फ्रीबीएसडी विकी". Retrieved 17 May 2021.
  14. "FreeBSD 13.2-RELEASE Release Notes".
  15. Pwn2Own day 2: iPhone, BlackBerry beaten; Chrome, Firefox no-shows, Ars Technica, 11 March 2011
  16. Stefan Esser (7 March 2013). "iOS 6 Exploitation 280 Days Later". Slide 19, "iOS 6 introduces KASLR".
  17. Tarjei Mandt. "Attacking the iOS Kernel: A Look at 'evasi0n'" (PDF).
  18. Dang, Alan; Miller, Charlie (25 March 2009). "एनएक्स बिट और एएसएलआर". Tom's Hardware.
  19. "personality - set the process execution domain".
  20. Jake Edge (9 October 2013). "कर्नेल एड्रेस स्पेस लेआउट रैंडमाइजेशन". LWN.net. Retrieved 2 April 2014.
  21. "Linux kernel 3.14, Section 1.7. Kernel address space randomization". kernelnewbies.org. 30 March 2014. Retrieved 2 April 2014.
  22. "kernel/git/torvalds/linux.git: x86, kaslr: Return location from decompress_kernel (Linux kernel source tree)". kernel.org. 13 October 2013. Retrieved 2 April 2014.
  23. KASLR is Dead: Long Live KASLR (PDF). Engineering Secure Software and Systems 2017. 24 June 2017.
  24. Jang, Yeongjin; Lee, Sangho; Kim, Taesoo (2016). "इंटेल TSX के साथ कर्नेल एड्रेस स्पेस लेआउट रेंडमाइजेशन को तोड़ना" (PDF). 2016 ACM SIGSAC Conference on Computer and Communications Security. CCS '16. New York: Association for Computing Machinery: 380–392. doi:10.1145/2976749.2978321. ISBN 9781450341394. S2CID 6293725.
  25. Corbet, Jonathan (20 December 2017). "कर्नेल पेज-टेबल अलगाव की वर्तमान स्थिति". Linux Weekly News.
  26. Corbet, Jonathan (15 November 2017). "KAISER: hiding the kernel from user space". Linux Weekly News.
  27. 27.0 27.1 Evtyushkin, Dmitry; Ponomarev, Dmitry; Abu-Ghazaleh, Nael (2016). Jump over ASLR: Attacking branch predictors to bypass ASLR (PDF). 2016 49th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO). pp. 1–13. doi:10.1109/MICRO.2016.7783743. ISBN 978-1-5090-3508-3. S2CID 3801142.
  28. "Linux 5.16 Has Early Preparations For Supporting FGKASLR - Phoronix". www.phoronix.com.
  29. "विंडोज आईएसवी सॉफ्टवेयर सुरक्षा सुरक्षा". Msdn.microsoft.com. Retrieved 10 April 2012.
  30. Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition (PRO-Developer) ISBN 978-0-7356-2530-3
  31. Ollie Whitehouse (February 2007). "विंडोज विस्टा पर एड्रेस स्पेस लेआउट रेंडमाइजेशन का विश्लेषण" (PDF). Archived from the original (PDF) on 15 July 2019. Retrieved 18 January 2009.
  32. "WehnTrust". Codeplex.com. Retrieved 10 April 2012.
  33. "सुरक्षा आर्किटेक्ट 'ओजोन". Security Architects. Retrieved 10 April 2012.
  34. "WehnTrust सोर्स कोड". Archived from the original on 2013-11-28. Retrieved 15 November 2013.
  35. "विंडोज सिस्टम के लिए एड्रेस-स्पेस रेंडमाइजेशन" (PDF). Retrieved 10 April 2012.
  36. Ollie (2 March 2012). "Research, Develop, Assess, Consult & Educate | Recx: A Partial Technique Against ASLR – Multiple O/Ss". Recxltd.blogspot.co.uk. Retrieved 10 April 2012.
  37. "Announcing NetBSD 5.0". Retrieved 25 April 2016.
  38. Christos Zoulas (2016). "PIE binaries and ASLR are on in the default build for amd64". Retrieved 25 April 2016.
  39. "Kernel ASLR on amd64". 2017. Retrieved 16 October 2017.
  40. 40.0 40.1 Kurt Miller (2008). "OpenBSD की स्थिति स्वतंत्र निष्पादन योग्य (PIE) कार्यान्वयन". Archived from the original on 12 June 2011. Retrieved 22 July 2011.
  41. "libc/stdlib/malloc.c". BSD Cross Reference, OpenBSD src/lib/.
  42. "Mac OS X – Security – Keeps safe from viruses and malware". Apple. Archived from the original on 25 May 2011. Retrieved 10 April 2012.
  43. "सुरक्षा". Apple Inc. Archived from the original on 6 June 2011. Retrieved 6 June 2011.
  44. "ओएस एक्स माउंटेन लायन कोर टेक्नोलॉजीज अवलोकन" (PDF). June 2012. Retrieved 25 July 2012.
  45. Controlling Access to Machine Resources, Oracle Information Library, 26 October 2012.
  46. AnC VUSec, 2017


बाहरी संबंध