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

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

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

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

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

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

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

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

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

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


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

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

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

E_m = \begin{cases} \log_2 \left (l \right ) &\text{ if } \beta\, = 1, l \ge \, 1 \\ \sum_{i=l}^{l - \left ( \beta\, - 1 \right )} \log_2 \left (i \right ) &\text{ if } \beta\, \ge \, 1, l \ge \, 1 \end{cases} $$ ये मान $l$ के बड़े मानों के लिए भी कम होते हैं, सबसे महत्वपूर्ण बात यह है कि हमलावर सामान्यतः केवल C मानक पुस्तकालय का उपयोग कर सकते हैं और इस प्रकार कोई भी अक्सर यह मान सकता है कि $$\beta\, = 1$$ चूंकि, यहां तक ​​कि पुस्तकालयों की एक छोटी संख्या के लिए भी यहाँ एन्ट्रापी के कुछ अंश प्राप्त हुए हैं; इस प्रकार एंट्रॉपी के कुछ अतिरिक्त बिट्स प्राप्त करने के लिए वीएमए एड्रेस रैंडमाइजेशन के साथ पुस्तकालय लोड ऑर्डर रैंडमाइजेशन को संयोजित करना संभावित रूप से रौचक है। ध्यान दें कि एंट्रॉपी के ये अतिरिक्त बिट अन्य एममैप सेगमेंट पर प्रयुक्त नहीं होंगे, केवल पुस्तकालय है ।
 * $&beta;$ (लोडेड पुस्तकालयों की संख्या)
 * $l$ (हमलावर द्वारा प्रयुक्त पुस्तकालयों की संख्या)

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

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

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

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

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

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

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

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

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

आईओएस (आईफोन, आईपॉड टच, आईपैड)
एप्पल इंक. ने आईओएस4.3 (मार्च 2011 में रिलीज़) में एएसएलआर प्रस्तुत किया।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

 * बफ़र अधिकता
 * ढेर बफर अतिप्रवाह
 * स्टैक-स्मैशिंग सुरक्षा
 * एनएक्स बिट

बाहरी संबंध

 * Eएक्सploit Mitigation Techniques: an Update After 10 Years in ओपन बीएसडी
 * पैक्स documentation on एएसएलआर
 * Comparison of पैक्स to एक्सेक शील्ड and W^X
 * Address Space Layout Randomization in Windows Vista - Michael Howard's Web Log
 * एएसएलआर for Windows 2000/XP/2003 (WehnTrust)
 * Bypassing पैक्स एएसएलआर protection
 * On the effectiveness of address space layout randomization
 * Test Applications (or libraries) for their एएसएलआर and DEP support
 * एएसएलआर Smack & Laugh Reference