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

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

इतिहास
Linux PaX प्रोजेक्ट ने सबसे पहले ASLR शब्द गढ़ा, और जुलाई 2001 में #KASLR के लिए पैच (कंप्यूटिंग) के रूप में पहला डिज़ाइन और PaX#History प्रकाशित किया। इसे एक पूर्ण कार्यान्वयन के रूप में देखा जाता है, जो अक्टूबर 2002 से कर्नेल स्टैक रेंडमाइजेशन के लिए एक पैच भी प्रदान करता है। डिफ़ॉल्ट रूप से ASLR का समर्थन करने वाला पहला मेनस्ट्रीम ऑपरेटिंग सिस्टम 2003 में OpenBSD|3.4 का #OpenBSD संस्करण टाइमलाइन था, के बाद 2005 में Linux आया।

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

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

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

निम्नलिखित चर घोषित किए जा सकते हैं:
 * $$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;$ हस्ताक्षर-आधारित IPS, कानून प्रवर्तन, या अन्य कारक द्वारा बाधित किए बिना किया गया; ब्रूट फ़ोर्सिंग के मामले में, डेमन को फिर से शुरू नहीं किया जा सकता है। हमें यह भी पता लगाना होगा कि कितने बिट्स प्रासंगिक हैं और प्रत्येक प्रयास में कितने पर हमला किया जा रहा है, हमलावर को कितने बिट्स को छोड़ना है।

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


 * $$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-बिट सिस्टम में ASLR को कैसे बायपास किया जाए। 2004 की कंप्यूटर गति पर 32-बिट सिस्टम के लिए जिसमें एड्रेस रेंडमाइजेशन के लिए 16 बिट्स हैं, शचम और सहकर्मी राज्य ... 16 बिट्स एड्रेस रैंडमाइजेशन को मिनटों के भीतर एक क्रूर बल के हमले से हराया जा सकता है। लेखकों का बयान बिना किसी देरी के एक ही एप्लिकेशन पर कई बार हमला करने की क्षमता पर निर्भर करता है। एएसएलआर के उचित कार्यान्वयन, जैसे कि जीआर सुरक्षा में शामिल, ऐसे क्रूर बल के हमलों को अक्षम्य बनाने के लिए कई तरीके प्रदान करते हैं। एक विधि में एक निश्चित समय के लिए एक निष्पादन योग्य को निष्पादित करने से रोकना शामिल है यदि यह एक निश्चित संख्या में दुर्घटनाग्रस्त हो गया है।

एंड्रॉयड, और संभवतः अन्य प्रणालियाँ, लाइब्रेरी लोड ऑर्डर रेंडमाइजेशन को लागू करें, ASLR का एक रूप जो उस ऑर्डर को रैंडमाइज करता है जिसमें लाइब्रेरी लोड की जाती हैं। यह बहुत कम एन्ट्रॉपी प्रदान करता है। प्रति आवश्यक पुस्तकालय में आपूर्ति की गई एंट्रॉपी के बिट्स की संख्या का अनुमान नीचे दिखाई देता है; यह अभी तक विभिन्न पुस्तकालय आकारों के लिए खाता नहीं है, इसलिए प्राप्त वास्तविक एन्ट्रापी वास्तव में कुछ अधिक है। ध्यान दें कि हमलावरों को आमतौर पर केवल एक पुस्तकालय की आवश्यकता होती है; गणित कई पुस्तकालयों के साथ अधिक जटिल है, और नीचे भी दिखाया गया है। ध्यान दें कि केवल एक पुस्तकालय का उपयोग करने वाले हमलावर का मामला अधिक जटिल सूत्र का सरलीकरण है $$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$, सबसे महत्वपूर्ण बात यह है कि हमलावर आमतौर पर केवल सी मानक पुस्तकालय का उपयोग कर सकते हैं और इस प्रकार कोई भी अक्सर यह मान सकता है $$\beta\, = 1$$. हालाँकि, यहां तक ​​​​कि पुस्तकालयों की एक छोटी संख्या के लिए भी यहाँ एन्ट्रापी के कुछ अंश प्राप्त हुए हैं; इस प्रकार एंट्रॉपी के कुछ अतिरिक्त बिट्स प्राप्त करने के लिए VMA एड्रेस रैंडमाइजेशन के साथ लाइब्रेरी लोड ऑर्डर रैंडमाइजेशन को संयोजित करना संभावित रूप से दिलचस्प है। ध्यान दें कि एंट्रॉपी के ये अतिरिक्त बिट अन्य mmap सेगमेंट पर लागू नहीं होंगे, केवल लाइब्रेरीज़।
 * $&beta;$ (लोडेड पुस्तकालयों की संख्या)
 * $l$ (हमलावर द्वारा प्रयुक्त पुस्तकालयों की संख्या)

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

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

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

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

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

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

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

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

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

आईओएस (आईफोन, आईपॉड टच, आईपैड)
Apple Inc. ने iOS 4.3 (मार्च 2011 में रिलीज़) में ASLR पेश किया। KASLR को iOS 6 में पेश किया गया था। यादृच्छिक कर्नेल आधार है 0x01000000 + ((1+0xRR) * 0x00200000), कहाँ 0xRR iBoot (द्वितीय-चरण आईओएस बूट लोडर) द्वारा उत्पन्न SHA1 (यादृच्छिक डेटा) से एक यादृच्छिक बाइट है।

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

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

एक विशिष्ट प्रक्रिया के लिए यादृच्छिककरण को इसके निष्पादन डोमेन को बदलकर अक्षम किया जा सकता है.

कर्नेल एड्रेस स्पेस लेआउट रैंडमाइजेशन
कर्नेल एड्रेस स्पेस लेआउट रेंडमाइजेशन (केएएसएलआर) लिनक्स कर्नेल छवि के लिए एड्रेस स्पेस रैंडमाइजेशन को यादृच्छिक रूप से सक्षम करता है जहां बूट समय पर कर्नेल कोड रखा जाता है। केएएसएलआर को 30 मार्च 2014 को जारी कर्नेल संस्करण 3.14 में लिनक्स कर्नेल मेनलाइन में विलय कर दिया गया था। संकलित होने पर, इसे निर्दिष्ट करके बूट समय पर अक्षम किया जा सकता है nokaslr कर्नेल के बूट पैरामीटर में से एक के रूप में। x86 प्रोसेसर में कई साइड-चैनल हमले हैं जो कर्नेल पतों को लीक कर सकते हैं। 2017 के अंत में, इन हमलों को हराने के लिए कर्नेल पेज-टेबल अलगाव  (KPTI उर्फ ​​KAISER) विकसित किया गया था। हालाँकि, यह विधि शाखा भविष्यवक्ता संरचनाओं में टकराव का उपयोग करने वाले साइड-चैनल हमलों से रक्षा नहीं कर सकती है।

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

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

डायनेमिक मेमोरी आवंटन, कॉल स्टैक, प्रोसेस एनवायरनमेंट ब्लॉक और Win32 थ्रेड सूचना ब्लॉक के स्थान भी यादृच्छिक हैं। सिमेंटेक के एक सुरक्षा श्वेतपत्र ने नोट किया कि 32-बिट विंडोज विस्टा में एएसएलआर अपेक्षित रूप से मजबूत नहीं हो सकता है, और माइक्रोसॉफ्ट ने इसके कार्यान्वयन में कमजोरी को स्वीकार किया है। होस्ट-आधारित घुसपैठ रोकथाम प्रणाली जैसे WehnTrust और ओजोन Windows XP और Windows Server 2003 ऑपरेटिंग सिस्टम के लिए ASLR भी प्रदान करता है। WehnTrust ओपन-सोर्स है। ओजोन के कार्यान्वयन का पूर्ण विवरण उपलब्ध नहीं है। यह फरवरी 2012 में नोट किया गया था कि विंडोज 8 से पहले के 32-बिट विंडोज सिस्टम पर ASLR कम मेमोरी स्थितियों में इसकी प्रभावशीलता को कम कर सकता है। उसी शोध में लिनक्स पर भी इसी तरह का प्रभाव प्राप्त किया गया था। परीक्षण कोड ने मैक ओएस एक्स 10.7.3 सिस्टम को कर्नेल घबराहट का कारण बना दिया, इसलिए इस परिदृश्य में इसके एएसएलआर व्यवहार के बारे में अस्पष्ट छोड़ दिया गया।

नेटबीएसडी
यूजरलैंड में ASLR के लिए समर्थन NetBSD 5.0 ​​(अप्रैल 2009 में जारी) में दिखाई दिया, और अप्रैल 2016 में NetBSD-current में डिफ़ॉल्ट रूप से सक्षम किया गया था। amd64 पर कर्नेल ASLR सपोर्ट को अक्टूबर 2017 में NetBSD-current में जोड़ा गया, जिससे NetBSD KASLR को सपोर्ट करने वाला पहला BSD सिस्टम बन गया।

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

मैकोज़
Mac OS X Leopard 10.5 (अक्टूबर 2007 में जारी) में, Apple ने सिस्टम लाइब्रेरी के लिए रेंडमाइजेशन की शुरुआत की। मैक ओएस एक्स लायन 10.7 (जुलाई 2011 को जारी) में, ऐप्पल ने सभी अनुप्रयोगों को कवर करने के लिए अपने कार्यान्वयन का विस्तार किया, जिसमें कहा गया कि सभी अनुप्रयोगों के लिए एड्रेस स्पेस लेआउट रेंडमाइजेशन (एएसएलआर) में सुधार किया गया है। यह अब 32-बिट ऐप्स के लिए उपलब्ध है (जैसे हीप मेमोरी प्रोटेक्शन हैं), 64-बिट और 32-बिट एप्लिकेशन को हमले के लिए अधिक प्रतिरोधी बनाते हैं। OS X माउंटेन लायन 10.8 (जुलाई 2012 को जारी) और बाद में, कर्नेल के साथ-साथ लोड करने योग्य कर्नेल मॉड्यूल और ज़ोन सहित पूरे सिस्टम को सिस्टम बूट के दौरान बेतरतीब ढंग से स्थानांतरित किया जाता है।

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

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

यह भी देखें

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

बाहरी संबंध

 * Exploit Mitigation Techniques: an Update After 10 Years in OpenBSD
 * PaX documentation on ASLR
 * Comparison of PaX to Exec Shield and W^X
 * Address Space Layout Randomization in Windows Vista - Michael Howard's Web Log
 * ASLR for Windows 2000/XP/2003 (WehnTrust)
 * Bypassing PaX ASLR protection
 * On the effectiveness of address space layout randomization
 * Test Applications (or libraries) for their ASLR and DEP support
 * ASLR Smack & Laugh Reference