मैंने सिद्धांत सुना है। पता स्थान स्थान यादृच्छिकरण पुस्तकालय लेता है और उन्हें वर्चुअल एड्रेस स्पेस में यादृच्छिक स्थानों पर लोड करता है, ताकि यदि किसी हैकर को आपके प्रोग्राम में छेद मिल जाए, तो उसके पास रिटर्न-टू-लीबैक हमला निष्पादित करने के लिए पूर्व-ज्ञात पता नहीं है उदाहरण के लिए, के खिलाफ। लेकिन कुछ सेकंड के लिए इसके बारे में सोचने के बाद, यह रक्षात्मक उपाय के रूप में कोई समझ नहीं आता है।एएसएलआर प्रभावी कैसे हो सकता है?
मान लें कि हमारे काल्पनिक लक्ष्यलिब (libc या हैकर जो कुछ भी हैकर) किसी निर्धारक के बजाय यादृच्छिक पते पर लोड किया गया है। अब हैकर को उस समय से पहले पता नहीं है जहां लक्ष्यलिब और इसके अंदर की दिनचर्याएं हैं, लेकिन न ही एप्लिकेशन कोड। लक्ष्यलिब के अंदर दिनचर्या खोजने के लिए इसे बाइनरी में कहीं भी लुकअप टेबल की किसी प्रकार की आवश्यकता होती है, और इसे एक निश्चित स्थान पर होना चाहिए। (या किसी यादृच्छिक स्थान पर, किसी और चीज की ओर इशारा करते हैं। आप जितनी चाहें उतने इंडिकेशंस जोड़ सकते हैं, लेकिन अंत में आपको एक ज्ञात स्थान पर जाना होगा।)
इसका मतलब है कि उसके हमले कोड को इंगित करने के बजाय टार्गिलिब के ज्ञात स्थान, सभी हैकर को करने की ज़रूरत है, लक्ष्य के लिए एप्लिकेशन के लुकअप टेबल की प्रविष्टि पर अपने आक्रमण कोड को इंगित करें और लक्ष्य दिनचर्या के लिए पॉइंटर को हटा दें, और हमला अनदेखा हो जाता है।
क्या एएसएलआर काम करता है जिस तरह से मुझे समझ में नहीं आता है? जैसा कि वर्णन किया गया है, मैं नहीं देखता कि यह एक गति टक्कर से अधिक कुछ कैसे है, सुरक्षा की छवि प्रदान करता है लेकिन कोई वास्तविक पदार्थ नहीं है। क्या मैं कुछ भूल रहा हूँ?
क्या आपने कभी एएसएम स्तर पर विंडोज एक्सई डीबग किया है? वहां एक असली आयात तालिका है। लोडर कोड को पैच नहीं करता है, (सभी जगह जहां आपका कोड कुछ बाहरी दिनचर्या कह सकता है), यह आयात तालिका को पैच करता है, जो मूल रूप से जेएमपी निर्देशों का एक लंबा अनुक्रम है, जिसे संकलक कॉल करता है। –
इसकी न केवल साझा की गई मेमोरी ... – rook
@ मेसन व्हीलर - लंबे समय तक नहीं, लेकिन यह जानना अच्छा है। हालांकि इससे किसी विशेष पते को निर्धारित करना आसान हो जाता है, शुद्ध प्रभाव समान नहीं है? यह अज्ञात को ज्ञात करता है, जो हमले को और अधिक कठिन बनाता है। –