تصادفی کردن چیدمان فضای آدرس

تصادفی‌سازی چیدمان فضای آدرس (ASLR) یک روش امنیت رایانه‌ای است که در جلوگیری از سوء استفاده از آسیب‌پذیری‌های فساد حافظه نقش دارد. به منظور جلوگیری از پرش مطمئن یک حمله‌کننده به مثلاً یک تابع خاص به کار رفته در حافظه، ASLR به صورت تصادفی موقعیت‌های فضای آدرس مناطق دادهٔ کلید یک فرایند را مرتب می‌کند، که شامل پایهٔ قابل اجرا و موقعیت‌های پشته، هیپ و کتابخانه‌ها می‌باشد.

تاریخچهویرایش

پروژه PaX لینوکس اولین بار اصطلاح "ASLR" را ابداع کرد و اولین طراحی و اجرای ASLR را در ژوئیه ۲۰۰۱ به عنوان وصله‌ای برای هسته لینوکس منتشر کرد. این پروژه به عنوان یک پیاده‌سازی کامل دیده می‌شود، که از اکتبر ۲۰۰۲ یک وصله برای تصادفی‌کردن پشته‌های هسته فراهم می‌کند.[۱]

اولین سیستم عامل جریان اصلی که به‌طور پیش فرض از ASLR پشتیبانی می‌کند، نسخه OpenBSD ۳٫۴ در سال ۲۰۰۳ بود،[۲][۳] که به دنبال آن لینوکس در ۲۰۰۵ آمد.

مزایاویرایش

تصادفی‌سازی فضای آدرس، مانع از برخی انواع حملات امنیتی می‌شود و پیش‌بینی آدرس‌های هدف را برای مهاجم دشوارتر می‌کند. به عنوان مثال، مهاجمین که سعی در اجرای حملات بازگشت به libc دارند، باید کد را برای اجرا مکان‌یابی کنند، در حالی که سایر مهاجمین که سعی در اجرای کد شل تزریق شده روی پشته را دارند، ابتدا باید پشته را پیدا کنند. در هر دو مورد، سیستم آدرس‌های مربوط به حافظه را از مهاجمین پنهان می‌کند. این مقادیر باید حدس زده شوند و یک حدس اشتباه معمولاً به دلیل خرابی برنامه قابل بازیابی نیست.

اثربخشیویرایش

تصادفی‌سازی چیدمان فضای آدرس، براساس احتمال کم حدس‌زدن مکان‌های تصادفی مناطق برای مهاجم است. امنیت با افزایش فضای جستجو افزایش می‌یابد؛ بنابراین، تصادفی‌سازی فضای آدرس زمانی موثرتر است که آنتروپی بیشتری در آفستهای تصادف وجود داشته باشد. آنتروپی با افزایش مقدار فضای حافظه مجازی که در آن تصادفی‌سازی اتفاق می‌افتد یا کاهش مدت زمانی که تصادفی‌سازی اتفاق می‌افتد، افزایش می‌یابد. این دوره به‌طور معمول تا حد ممکن کوچک پیاده‌سازی می‌شود، بنابراین بیشتر سیستم‌ها باید تصادفی‌سازی فضای VMA را افزایش دهند.

برای شکست‌دادن تصادفی‌سازی، مهاجمان باید با موفقیت موقعیت‌های همهٔ مناطقی را که می‌خواهند به آن حمله کنند، حدس بزنند. برای مناطق داده مانند پشته و هیپ، جایی که کد سفارشی یا داده‌های مفید بارگذاری می‌شوند، با استفاده از اسلایدهای NOP برای کد یا کپی‌های مکرر داده، به بیش از یک حالت حمله می‌شود. اگر منطقه به‌طور تصادفی به یکی از مقادیر معادل تصادفی تبدیل شود، این امر می‌تواند به موفقیت حمله برسد. در مقابل، مناطق کد مانند پایگاه کتابخانه و جز اصلی قابل اجرا نیاز دارند که دقیقاً کشف شوند. اغلب این نواحی با هم مخلوط می‌شوند، به عنوان مثال فریم‌های پشته روی پشته تزریق می‌شوند و یک کتابخانه به داخل بازمی‌گردد.

متغیرهای زیر قابل تعریف هستند:

  (بیت‌های آنتروپی بالای پشته)
  (بیت‌های آنتروپی پایه mmap())
  (بیت‌های آنتروپی پایه اصلی قابل اجرا)
  (بیت‌های آنتروپی پایه هیپ)
  (بیت‌های حمله‌شده در هر تلاش آنتروپی پشته)
  (بیت‌های حمله‌شده در هر تلاش آنتروپی پایه mmap())
  (بیت‌های حمله‌شده در هر تلاش آنتروپی اصلی قابل اجرا)
  (بیت‌های حمله‌شده در هر تلاش آنتروپی پایه هیپ)
  (تلاش‌های انجام‌شده)
  (مقدار کل آنتروپی:  )

برای محاسبهٔ احتمال موفقیت یک مهاجم، باید تعدادی از تلاش‌ها یعنی α را بدون قطع شدن توسط IPS مبتنی بر امضا، اجرای قانون یا عامل دیگر انجام دهیم. در صورت وقوع جستجوی فراگیر، Daemon نمی‌تواند دوباره شروع شود. ما همچنین باید دریابیم که چه تعداد بیت مربوط هستند و چه تعداد در هر تلاش مورد حمله قرار می‌گیرند، با دست‌کشیدن از هر چند تعداد بیتی که حمله‌کننده باید شکست بدهد.

فرمول زیر نشان‌دهنده احتمال موفقیت برای یک مجموعه داده‌شده از تلاش‌های α در بیت‌های آنتروپی N است.

  (حدس‌زدن مجزا؛ فضای آدرس پس از هر تلاش دوباره تصادفی می‌شود)
  (اجبار بی‌رحمانه منظم در رونوشت‌هایی از برنامه با فضای آدرس مشابه)

در بسیاری از سیستم‌ها، مقدار   می‌تواند در محدودهٔ هزاران یا میلیون‌ها باشد؛ در سیستم‌های ۶۴ بیتی، این اعداد معمولاً حداقل به میلیون‌ها می‌رسد، آقایان هکتور مارکو گیزبرت و اسماعیل ریپول در سال ۲۰۱۴ نشان دادند که چگونه می‌توان ASLR را در سیستم‌های ۶۴ بیتی در کمتر از یک ثانیه تحت شرایط خاص دور زد.[۴] برای سیستم‌های ۳۲ بیتی با سرعت رایانه ۲۰۰۴ که ۱۶ بیت برای تصادفی‌سازی آدرس دارد، جناب آقای شچم و همکارانش بیان کردند: «۱۶ بیت تصادفی‌سازی آدرس را می‌توان با حملهٔ جستجوی فراگیر در عرض چند دقیقه مغلوب کرد.»[۵] بیانیهٔ نویسندگان بستگی به توانایی چندین بار حمله به هر برنامهٔ مشابه و بدون هیچ تأخیری دارد. پیاده‌سازی‌های صحیح ASLR، مانند آن که در ماژول grsecurity گنجانده شده‌است، روش‌های مختلفی را ارائه می‌دهد تا چنین حملات جستجوی فراگیری ناممکن شود. یک روش شامل جلوگیری از اجرای یک جز قابل اجرا برای مدت زمان قابل تنظیم در صورتی است که تعداد معینی بار تصادف کرده باشد.

Android[۶] و احتمالاً سایر سیستم‌ها، تصادفیسازی سفارش بارگذاری کتابخانه را پیاده‌سازی می‌کند، نوعی از ASLR که ترتیب بارگذاری کتابخانه‌ها را تصادفی می‌کند. این سیستم آنتروپی بسیار کمی عرضه می‌کند. تقریب تعداد بیت‌های آنتروپی عرضه‌شده در هر کتابخانه مورد نیاز در زیر آمده‌است. این تقریب هنوز اندازه‌های متنوع کتابخانه را در نظر نمی‌گیرد، بنابراین در حقیقت آنتروپی واقعی به‌دست‌آمده بالاتر است. توجه داشته باشید که مهاجمان معمولاً فقط به یک کتابخانه احتیاج دارند. ریاضیات با کتابخانه‌های متعدد پیچیده‌تر است و به خوبی در زیر نشان داده شده‌است. توجه داشته باشید که مورد مهاجمی که فقط از یک کتابخانه استفاده می‌کند ساده‌سازی فرمول پیچیده‌تر برای   است.

l (تعداد کتابخانه‌های بارگذاری‌شده)
β (تعداد کتابخانه‌های مورد استفاده توسط مهاجم)
 

این مقادیر حتی برای مقدار زیادی از l به کم میل می‌کند، از همه مهمتر اینکه مهاجمان معمولاً فقط می‌توانند از کتابخانه استاندارد C استفاده کنند و بنابراین می‌توان فرض کرد که   است. با این حال، حتی برای تعداد کمی از کتابخانه‌ها، تعداد کمی از بیت‌های آنتروپی در اینجا به‌دست‌آمده‌است؛ بنابراین به‌طور بالقوه ترکیب تصادفی‌سازی سفارش بارگذاری کتابخانه با تصادفی‌سازی آدرس VMA برای به‌دست‌آوردن چند بیت اضافی از آنتروپی جالب است. توجه داشته باشید که این بیت‌های اضافی آنتروپی فقط به کتابخانه‌ها اعمال می‌شود نه سایر بخش‌های mmap().

کاهش آنتروپیویرایش

مهاجمان ممکن است از چندین روش برای کاهش آنتروپی موجود در یک فضای آدرس تصادفی استفاده کنند، اعم از نشت اطلاعاتی ساده گرفته تا حمله به چندین بیت آنتروپی در هر حمله (مانند افشاندن هیپ). در این باره چیزهای کمی برای انجام‌دادن وجود دارد.

با استفاده از آسیب‌پذیری‌های رشته قالب، ممکن است اطلاعات مربوط به چیدمان حافظه به بیرون نشت کند. توابع رشته قالب مانند printf از یک لیست آرگومان متغیر برای انجام کار خود استفاده می‌کنند. مشخص‌کنندگان قالب چیزی را که لیست آرگومان به آن شبیه است، توصیف می‌کنند. به دلیل روشی که معمولاً آرگومان‌ها عبور می‌کنند، هر مشخص‌کنندهٔ قالب به بالای قاب پشته نزدیک‌تر می‌شود. سرانجام، نشانگر بازگشت و نشانگر قاب پشته می‌تواند استخراج شود و آدرس یک کتابخانهٔ آسیب‌پذیر و آدرس یک قاب پشتهٔ شناخته‌شده را نشان دهد. این می‌تواند به‌طور کامل تصادفی‌سازی کتابخانه و پشته را به عنوان مانعی برای مهاجم از بین ببرد.

همچنین می‌توان آنتروپی را در پشته یا هیپ کاهش داد. پشته معمولاً باید با ۱۶ بایت تنظیم شود، بنابراین این مقدار کوچکترین فاصله تصادفی‌سازی ممکن است. در حالی که هیپ باید با صفحه تنظیم شود، به‌طور معمول ۴۰۹۶ بایت. هنگام تلاش برای حمله، می‌توان حملات تکراری را با این فواصل مرتب کرد. از یک اسلاید NOP با تزریق کد شل استفاده می‌شود، و رشتهٔ "/bin/sh" را می‌توان با "////////bin/sh" برای تعداد دلخواه برش‌ها هنگام تلاش برای بازگشت به سیستم جایگزین کرد. تعداد بیت‌های حذف شده دقیقاً برابر است با   برای n فاصلهٔ حمله‌شده.

این کاهش به دلیل مقدار داده موجود در پشته یا هیپ محدود است. به عنوان مثال پشته معمولاً محدود به ۸ مگابایت[۷] است و بسیار کمتر رشد می‌کند. این حداکثر برای ۱۹ بیت اجازه می‌دهد اگر چه یک تخمین محافظه‌کارانه‌تر خواهد بود در اطراف ۸-۱۰ بیت مربوط به ۴-۱۶ کیلوبایت از پر کردن پشته. از طرف دیگر، هیپ با رفتار تخصیص‌دهندهٔ حافظه محدود شده‌است. در مورد glibc، تخصیص‌های بالاتر از ۱۲۸ کیلوبایت با استفاده از mmap ایجاد می‌شود و مهاجمین را به ۵ بیت کاهش محدود می‌کند. این همچنین یک عامل محدودکننده هنگام اجبار بی‌رحمانه است. اگرچه می‌توان تعداد حملات انجام‌شده را کاهش داد، اما اندازه حملات به اندازه کافی افزایش می‌یابد که در برخی شرایط ممکن است این رفتار در سیستم‌های تشخیص نفوذ آشکار شود.

محدودیت‌هاویرایش

آدرس‌های محافظت‌شدهٔ ASLR می‌توانند توسط کانال‌های جانبی مختلف نشت پیدا کرده و ابزار کاهش را حذف کنند. حملات اخیر از اطلاعاتی که توسط جداکنندهٔ بافر پیش‌بینی‌کنندهٔ هدف شاخه CPU یعنی (BTB) یا واحد مدیریت حافظه (MMU) نشت پیدا کرده، استفاده کرده‌است. هنوز مشخص نیست که آیا این کلاس از حمله ASLR می‌تواند کاهش یابد یا خیر. اگر آن‌ها نتوانند، سود ASLR کاهش یافته یا از بین می‌رود.

پیاده‌سازی‌هاویرایش

چندین سیستم عامل اصلی و همه منظوره ASLR را پیاده‌سازی می‌کنند.

اندرویدویرایش

اندروید 4.0، تصادفی‌سازی چیدمان فضای آدرس (ASLR) را برای کمک به محافظت از سیستم و برنامه های شخص ثالث از سوء استفاده به دلیل مشکلات مدیریت حافظه، فراهم می‌کند. پشتیبانی قابل اجرای مستقل از موقعیت در Android 4.1 اضافه شده‌است.[۸] Android 5.0 پشتیبانی غیر PIE را کاهش داده و به همه‌ی باینری‌های متصل‌شده‌ی پویا نیاز دارد که مستقل از موقعیت باشد.[۹][۱۰] تصادفی‌سازی سفارش بارگذاری کتابخانه در 26 اکتبر 2015 در پروژه منبع باز آندروید پذیرفته شده[۶] و در نسخه اندروید 7.0 گنجانده شده‌است.

DragonFly BSDویرایش

DragonFly BSD دارای پیاده‌سازی ASLR را بر اساس مدل OpenBSD است که در سال 2010 اضافه شده‌است.[۱۱] این پیاده‌سازی به طور پیش فرض خاموش است و می‌تواند با تنظیم مقدار sysctl vm.randomize_mmap به 1 فعال شود.

FreeBSDویرایش

پشتیبانی از ASLR در FreeBSD 13.0 (در حال حاضر در دست توسعه) پدیدار می‌شود.[۱۲] این مورد به صورت پیشفرض غیر فعال است.

iOS در (iPhone ، iPod touch ، iPad)ویرایش

اپل ASLR را در iOS 4.3 معرفی کرد (منتشر شده در مارس 2011).[۱۳]

KASLR در iOS 6 معرفی شد.[۱۴] پایه هسته تصادفی‌شده 0x01000000 + (((1 + 0xRR) * 0x00200000) است که در آن 0xRR یک بایت تصادفی از SHA1 (داده‌های تصادفی) تولیدشده توسط iBoot (بارگذارنده راه‌انداز iOS دارای ۲ مرحله) است.[۱۵]

لینوکسویرایش

هسته لینوکس از زمان انتشار نسخه 2.6.12 هسته در ژوئن 2005، به طور پیش فرض شکل ضعیفی از ASLR را فعال کرد.[۱۶] مجموعه وصله‌های PaX و Exec Shield به هسته لینوکس پیاده‌سازی‌های کامل‌تری را ارائه می‌دهند. وصله Exec Shield برای لینوکس 19 بیت آنتروپی پشته را برای دوره‌ی 16 بایت و 8 بیت تصادفی‌سازی پایه mmap در یک دوره 1 صفحه‌ای از 4096 بایت فراهم می‌کند. این مطلب پایه‌ی پشته را در منطقه 8 مگابایت گسترده شامل 524،288 موقعیت ممکن و پایه‌ی mmap در منطقه 1 مگابایت گسترده شامل 256 موقعیت ممکن قرار می‌دهد.

جزء قابل اجرای مستقل از موقعیت (PIE) یک آدرس پایه‌ی تصادفی را برای باینری اصلی قابل اجرا پیاده‌سازی می‌کند و از سال 2003 آغاز به کار کرده‌است. این جزء، تصادفی‌بودن آدرس مشابهی را به عنوان عامل اصلی برای کتابخانه‌های مشترک مورد استفاده قرار می‌دهد. ویژگی PIE فقط برای شبکه‌ای که با Daemonها روبرو می‌شود استفاده می‌گردد[نیازمند منبع] - ویژگی PIE را نمی توان همراه با ویژگی prelink برای همان جزء قابل اجرا استفاده کرد. ابزار prelink، تصادفی سازی را در زمان prelink و نه زمان اجرا پیاده‌سازی می‌کند، زیرا در طراحی، prelink مدیریت جابجایی کتابخانه‌ها را قبل از پیونددهنده‌ی پویا انجام می‌دهد، که اجازه می‌دهد تا یک بار برای بسیاری از اجراهای این برنامه جابجایی انجام شود. در نتیجه، تصادفی‌سازی فضای آدرس واقعی هدف از پیش پیوندزدن را شکست می‌دهد.

تصادفی سازی با تغییر دامنه اجرای آن با استفاده از شخصیت (2) می تواند برای یک فرایند خاص غیرفعال شود.[۱۷]

تصادفی‌سازی چیدمان فضای آدرس هسته (KASLR)، پشتیبانی از تصادفی‌سازی فضای آدرس را برای اجرای تصاویر هسته لینوکس با تصادفی‌کردن محل قرار گیری کد هسته در زمان بوت،[۱۸] که در خط اصلی هسته لینوکس در نسخه 3.14 هسته منتشرشده در 30 مارس 2014 ادغام شده، موجب می‌شود.[۱۹] هنگام کامپایل‌کردن، می توان آن را در زمان راه‌اندازی با مشخص‌کردن nokaslr به عنوان یکی از پارامترهای راه‌اندازی هسته غیرفعال کرد.[۲۰]

چندین حمله‌ی کانال جانبی در پردازنده‌های x86 وجود دارد که می‌توانند آدرس‌های هسته را نشت دهند.[۲۱] [۲۲] در اواخر سال 2017، جداسازی جدول صفحه‌ی هسته (KPTI با نام KAISER) برای شکست این حملات ایجاد شد.[۲۳] [۲۴] با این حال، این روش نمی‌تواند در مقابل حملات کانال جانبی با استفاده از تصادم‌ها در ساختارهای پیش‌بینی‌کننده‌ی شاخه محافظت کند.[۲۵]

ویندوز مایکروسافتویرایش

ویندوز ویستا مایکروسافت (منتشرشده در ژانویه 2007) و بعداً ASLR فقط برای اجزای قابل اجرا و کتابخانه‌های پیوند پویا که به طور خاص به فعالسازی ASLR پیوند خورده‌اند فعال شده‌اند.[۲۶] برای سازگاری، به طور پیش‌فرض برای سایر برنامه‌ها فعال نیست. معمولاً فقط نرم‌افزار قدیمی ناسازگار است و ASLR می‌تواند با ویرایش یک مدخل رجیستری "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Management Memory\MoveImages"،[۲۷] یا با نصب ابزار پیشرفته‌ی تجربه‌ی کاهش مایکروسافت، کاملاً فعال شود.

مکان‌های پشته، هیپ، بلوک محیط فرایند و بلوک محیط نخ نیز به صورت تصادفی هستند. یک منبع امنیتی از سیمانتک خاطرنشان کرد: ASLR در ویندوز ویستای 32 بیتی ممکن است به اندازه انتظار نیرومند نباشد و مایکروسافت یک ضعف را در پیاده‌سازی خود اذعان کرده‌است.[۲۸]

سیستم‌های پیشگیری از نفوذ مبتنی بر میزبان مانند WehnTrust[۲۹] و Ozone[۳۰] نیز ASLR را برای سیستم‌عامل‌های Windows XP و Windows Server 2003 پیشنهاد می‌دهند. WehnTrust منبع باز است.[۳۱] جزئیات کامل در مورد پیاده‌سازی Ozone در دسترس نیست.[۳۲]

در فوریه 2012 اشاره شد[۳۳] که ASLR در سیستمهای 32 بیتی ویندوز قبل از ویندوز 8 می‌تواند در شرایط حافظه‌ی کم اثربخشی‌اش کاهش پیدا کند. اثر مشابهی در همین تحقیق بر روی لینوکس نیز حاصل شده‌بود. کد تست باعث وحشت هسته سیستم Mac OS X 10.7.3 شد، بنابراین رفتار ASLR اش در این سناریو ناشناخته ماند.

NetBSDویرایش

پشتیبانی از ASLR در فضای کاربری در NetBSD 5.0 (منتشر شده در آوریل 2009)[۳۴] و به طور پیش‌فرض در جریان NetBSD در آوریل 2016 فعال شد.[۳۵]

پشتیبانی هسته ASLR از amd64 در ماه اکتبر سال 2017 در جریان NetBSD اضافه شد و NetBSD را به عنوان اولین سیستم BSD برای پشتیبانی از KASLR تبدیل کرد.

OpenBSDویرایش

در سال 2003، OpenBSD به اولین سیستم‌عامل جریان اصلی تبدیل شد که از یک شکل قوی از ASLR پشتیبانی کرده و به طور پیش‌فرض آن را فعال نمود.[۲] OpenBSD پشتیبانی از ASLR خود را در سال 2008 با افزودن پشتیبانی برای باینری‌های PIE کامل کرد.[۳۶] malloc (3) در OpenBSD 4.4 برای بهبود امنیت با بهره‌گیری از ویژگی‌های ASLR و صفحه‌ی شکاف پیاده‌سازی شده به عنوان بخشی از فراخوان سیستمی mmap در OpenBSD و شناسایی اشکالات پس از استفاده طراحی شد.[۳۷] OpenBSD 5.3 منتشر شده در 2013، اولین سیستم‌عامل جریان اصلی بود که اجزای قابل اجرای مستقل از موقعیت را به طور پیش فرض بر روی چندین سکوی سخت افزاری فعال کرده و OpenBSD 5.7 باینری‌های استاتیک مستقل از موقعیت (PIE استاتیک) را به طور پیش فرض فعال نمود.[۳۶]

سیستم عامل مکویرایش

در سیستم عامل Mac OS X Leopard 10.5 (منتشر شده در اکتبر 2007)، اپل تصادفی‌سازی را برای کتابخانه‌های سیستم معرفی کرد.[۳۸]

در سیستم عامل Mac OS X Lion 10.7 (منتشر شده در ژوئیه 2011)، اپل پیاده‌سازی خود را برای پوشش‌دادن کلیه‌ی برنامه‌ها گسترش داد و اظهار داشت: "تصادفی‌سازی چیدمان فضای آدرس (ASLR) برای همه‌ی برنامه‌ها بهبود یافته‌است. این پیاده‌سازی، اکنون برای برنامه‌های 32 بیتی (همانند محافظت از حافظه‌ی هیپ) در دسترس است و باعث مقاوم‌تر شدن برنامه‌های 64 بیتی و 32 بیتی در برابر حمله می‌شود."[۳۹]

از سیستم عامل OS X Mountain Lion 10.8 (منتشر شده در ژوئیه 2012) تا بعد آن، کل سیستم از جمله هسته و همچنین ماژول‌های هسته‌ی قابل بارگذاری و مناطق به طور تصادفی در طول راه‌اندازی سیستم جابجا می‌شوند.[۴۰]

سولاریسویرایش

ASLR در آغاز سولاریس با Solaris 11.1 (منتشر شده در اکتبر 2012) معرفی شده‌است. ASLR در Solaris 11.1 می‌تواند به صورت گسترده سیستمی، در هر منطقه و یا بر پایه‌ی هر باینری تنظیم شود.[۴۱]

بهره‌برداریویرایش

حمله کانال جانبی با استفاده از بافر هدف شاخه برای دورزدن حفاظت ASLR نشان داده شد. در سال 2017، حمله ای به نام "ASLR⊕Cache" نشان داده شد که می‌توانست ASLR را در یک مرورگر وب با استفاده از JavaScript شکست دهد.[۴۲]

جستارهای وابستهویرایش

منابعویرایش

  1. Brad Spengler (October 2003). "PaX: The Guaranteed End of Arbitrary Code Execution". grsecurity.net. Slides 22 through 35. Retrieved 20 August 2015.
  2. ۲٫۰ ۲٫۱ Theo De Raadt (2005). "Exploit Mitigation Techniques (updated to include random malloc and mmap) at OpenCON 2005". Retrieved 26 August 2009.
  3. "OpenBSD Innovations". The OpenBSD project. Retrieved 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). On the Effectiveness of Address-Space Randomization. 11th ACM conference on Computer and communications security. pp. 298–307.
  6. ۶٫۰ ۶٫۱ "Implement Library Load Order Randomization". Retrieved 26 June 2017.
  7. الگو:BDprefix
  8. "Android Security". Android Developers. Retrieved 7 July 2012.
  9. "oss-security". Retrieved 4 October 2015.
  10. "Revert "Reenable support for non-PIE executables"". Retrieved 26 June 2017.
  11. mmap - add mmap offset randomization, DragonFly Gitweb, 25 November 2010.
  12. "Implement Address Space Layout Randomization (ASLR)". Retrieved 10 February 2019.
  13. Pwn2Own day 2: iPhone, BlackBerry beaten; Chrome, Firefox no-shows, Ars Technica, 11 March 2011
  14. Stefan Esser (7 March 2013). "iOS 6 Exploitation 280 Days Later". Slide 19, "iOS 6 introduces KASLR".
  15. Tarjei Mandt. "Attacking the iOS Kernel: A Look at 'evasi0n'" (PDF).
  16. The NX Bit And ASLR, Tom's Hardware, 25 March 2009.
  17. "personality - set the process execution domain".
  18. Jake Edge (9 October 2013). "Kernel address space layout randomization". LWN.net. Retrieved 2 April 2014.
  19. "Linux kernel 3.14, Section 1.7. Kernel address space randomization". kernelnewbies.org. 30 March 2014. Retrieved 2 April 2014.
  20. "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.
  21. KASLR is Dead: Long Live KASLR (PDF). Engineering Secure Software and Systems 2017. 24 June 2017.
  22. Jang, Yeongjin; Lee, Sangho; Kim, Taesoo (2016). "Breaking Kernel Address Space Layout Randomization with Intel TSX" (PDF). 2016 ACM SIGSAC Conference on Computer and Communications Security. CCS '16. New York, NY, USA: ACM: 380–392. doi:10.1145/2976749.2978321. ISBN 9781450341394.
  23. Corbet, Jonathan (20 December 2017). "The current state of kernel page-table isolation". LWN.net.
  24. Corbet, Jonathan (15 November 2017). "KAISER: hiding the kernel from user space". LWN.net.
  25. 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.
  26. "Windows ISV Software Security Defenses". Msdn.microsoft.com. Retrieved 10 April 2012.
  27. Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition (PRO-Developer) شابک ‎۹۷۸−۰−۷۳۵۶−۲۵۳۰−۳
  28. Ollie Whitehouse (February 2007). "An Analysis of Address Space Layout Randomization on Windows Vista" (PDF). Archived from the original (PDF) on 15 July 2019. Retrieved 18 January 2009.
  29. "WehnTrust". Codeplex.com. Retrieved 10 April 2012.
  30. "Security Architects' Ozone". Security Architects. Retrieved 10 April 2012.
  31. "WehnTrust source code". Retrieved 15 November 2013.
  32. "Address-Space Randomization for Windows Systems" (PDF). Retrieved 10 April 2012.
  33. 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.
  34. "Announcing NetBSD 5.0". Retrieved 25 April 2016.
  35. Christos Zoulas (2016). "PIE binaries and ASLR are on in the default build for amd64". Retrieved 25 April 2016.
  36. ۳۶٫۰ ۳۶٫۱ Kurt Miller (2008). "OpenBSD's Position Independent Executable (PIE) Implementation". Archived from the original on 12 June 2011. Retrieved 22 July 2011.
  37. "libc/stdlib/malloc.c". BSD Cross Reference, OpenBSD src/lib/.
  38. "Mac OS X – Security – Keeps safe from viruses and malware". Apple. Archived from the original on 25 May 2011. Retrieved 10 April 2012.
  39. "Security". Apple Inc. Archived from the original on 6 June 2011. Retrieved 6 June 2011.
  40. "OS X Mountain Lion Core Technologies Overview" (PDF). June 2012. Retrieved 25 July 2012.
  41. Controlling Access to Machine Resources, Oracle Information Library, 26 October 2012.
  42. AnC VUSec, 2017

پیوند به بیرونویرایش