پیش‌نویس:تصادفی‌سازی چیدمان فضای آدرس


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

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

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

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

فواید ویرایش

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

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

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

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

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

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

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

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

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

در بسیاری از سیستم‌ها، مقدار   می‌تواند در محدوده‌ی هزاران یا میلیون‌ها باشد؛ در سیستم‌های 64 بیتی، این اعداد معمولا حداقل به میلیون‌ها می‌رسد، آقایان هکتور مارکو گیزبرت و اسماعیل ریپول در سال 2014 نشان دادند که چگونه می‌توان ASLR را در سیستم‌های 64 بیتی در کمتر از یک ثانیه تحت شرایط خاص دور زد.[۴] برای سیستم‌های 32 بیتی با سرعت رایانه 2004 که 16 بیت برای تصادفی‌سازی آدرس دارد، جناب آقای شچم و همکارانش بیان کردند: "16 بیت تصادفی‌سازی آدرس را می توان با حمله‌ی جستجوی فراگیر در عرض چند دقیقه مغلوب کرد."[۵] بیانیه‌ی نویسندگان بستگی به توانایی چندین بار حمله به هر برنامه‌ی مشابه و بدون هیچ تاخیری دارد. پیاده‌سازی‌های صحیح ASLR، مانند آن که در ماژول امنیت GR گنجانده شده‌است، روش‌های مختلفی را ارائه می دهد تا چنین حملات جستجوی فراگیری ناممکن شود. یک روش شامل جلوگیری از اجرای یک جز قابل اجرا برای مدت زمان قابل تنظیم در صورتی است که تعداد معینی بار تصادف کرده باشد.

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

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

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

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

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

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

همچنین می‌توان آنتروپی را در پشته یا هیپ کاهش داد. پشته معمولاً باید با 16 بایت تنظیم شود، بنابراین این مقدار کوچکترین فاصله تصادفی‌سازی ممکن است. در حالی که هیپ باید با صفحه تنظیم شود، به طور معمول 4096 بایت. هنگام تلاش برای حمله، می‌توان حملات تکراری را با این فواصل مرتب کرد. از یک اسلاید 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 X 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. "Android Security". Android Developers. Retrieved 7 July 2012.
  8. "oss-security". Retrieved 4 October 2015.
  9. "Revert "Reenable support for non-PIE executables"". Retrieved 26 June 2017.
  10. mmap - add mmap offset randomization, DragonFly Gitweb, 25 November 2010.
  11. "Implement Address Space Layout Randomization (ASLR)". Retrieved 10 February 2019.
  12. Pwn2Own day 2: iPhone, BlackBerry beaten; Chrome, Firefox no-shows, Ars Technica, 11 March 2011
  13. Stefan Esser (7 March 2013). "iOS 6 Exploitation 280 Days Later". Slide 19, "iOS 6 introduces KASLR".
  14. Tarjei Mandt. "Attacking the iOS Kernel: A Look at 'evasi0n'" (PDF).
  15. The NX Bit And ASLR, Tom's Hardware, 25 March 2009.
  16. "personality - set the process execution domain".
  17. Jake Edge (9 October 2013). "Kernel address space layout randomization". LWN.net. Retrieved 2 April 2014.
  18. "Linux kernel 3.14, Section 1.7. Kernel address space randomization". kernelnewbies.org. 30 March 2014. Retrieved 2 April 2014.
  19. "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.
  20. KASLR is Dead: Long Live KASLR (PDF). Engineering Secure Software and Systems 2017. 24 June 2017.
  21. 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.
  22. Corbet, Jonathan (20 December 2017). "The current state of kernel page-table isolation". LWN.net.
  23. Corbet, Jonathan (15 November 2017). "KAISER: hiding the kernel from user space". LWN.net.
  24. ۲۴٫۰ ۲۴٫۱ 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.
  25. "Windows ISV Software Security Defenses". Msdn.microsoft.com. Retrieved 10 April 2012.
  26. Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition (PRO-Developer) شابک ‎۹۷۸−۰−۷۳۵۶−۲۵۳۰−۳
  27. 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.
  28. "WehnTrust". Codeplex.com. Retrieved 10 April 2012.
  29. "Security Architects' Ozone". Security Architects. Retrieved 10 April 2012.
  30. "WehnTrust source code". Retrieved 15 November 2013.
  31. "Address-Space Randomization for Windows Systems" (PDF). Retrieved 10 April 2012.
  32. 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.
  33. "Announcing NetBSD 5.0". Retrieved 25 April 2016.
  34. Christos Zoulas (2016). "PIE binaries and ASLR are on in the default build for amd64". Retrieved 25 April 2016.
  35. "Kernel ASLR on amd64". 2017. Retrieved 16 October 2017.
  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

لینک های خارجی ویرایش