ASLR
ASLR (англ. address space layout randomization — «рандомізація розміщення адресного простору») — технологія, яка застосовується в операційних системах, при використанні якої випадковим чином змінюється розташування в адресному просторі процесу важливих структур даних, а саме образів виконуваного файлу, підвантажуваних бібліотек, купи і стека.
Технологія ASLR створена для ускладнення експлуатації декількох типів дефектів. Наприклад, якщо за допомогою переповнення буфера або іншого методу атакуючий отримає можливість передати управління за довільною адресою, йому слід буде вгадати, за якою саме адресою розташований стек, купа або інші структури даних, в які можна помістити шелл-код. Подібні проблеми виникнуть і при атаці типу «повернення в бібліотеку» (return-to-libc): атакуючому не буде відома адреса, за якою завантажена бібліотека. У наведених прикладах від атакуючого приховані конкретні адреси, і, якщо не вдасться вгадати правильну адресу, додаток швидше за все аварійно завершиться, тим самим позбавивши атакуючого можливості повторної атаки і привертаючи увагу системного адміністратора.
Розробники OpenBSD реалізували ASLR одними з перших. ASLR включена за замовчуванням.
У ядрі Linux простий варіант ASLR є з 2005 року (з версії 2.6.12). Більш складні і повні варіанти ASLR пропонуються у вигляді патчів (PaX, ExecShield та ін). В дистрибутивах, що містять у назві слово «hardened», а також в сучасних версіях дистрибутиву Ubuntu, потужні варіанти включені за замовчуванням.
Для роботи ASLR (для розміщення виконуваних файлів в пам'яті за випадковим адресами) виконувані файли повинні бути скомпільовані в режимі position-independent executable (виконувані файли, що цілком складаються з позиційно-незалежного коду[en]).
В ОС Windows технологія ASLR підтримується починаючи з Windows Vista (2007 рік) [1] для виконуваних файлів і бібліотек, зібраних зі спеціальними прапорами.
ASLR також підтримується в пізніших версіях Windows, таких як Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows 8.1. ASLR не застосовується для додатків, зібраних без спеціальних прапорів, а також при роботі в режимі сумісності з попередніми версіями Windows.
В ОС Windows XP та Windows Server 2003 ASLR можна включити для будь-яких додатків за допомогою набору засобів Microsoft EMET[2] (Enhanced Mitigation Experience Toolkit).
Деяка випадковість при завантаженні бібліотек додана в ОС Mac OS X v10.5 Leopard (2007 рік)[3]. В OS X 10.8 Mountain Lion (2012) ASLR є частиною ядра системи[4].
В ОС iOS технологія ASLR використовується, починаючи з версії 4.3[5]. Для ядра використовується з iOS 6[6].
Для використання ASLR виконувані файли потрібно збирати зі спеціальними прапорами. В результаті в коді не будуть використовуватися постійні адреси, але при цьому:
- збільшиться розмір коду виконуваних файлів;
- збільшиться час завантаження в пам'ять кожного виконуваного файлу;
- виникне додаткова несумісність з ПО і бібліотеками, розробленим під версії ОС без ASLR.
Крім того, захист можна обійти через виснаження пам'яті[7] або методи Heap Spray[8].
- ↑ Windows ISV Software Security Defenses. Msdn.microsoft.com. Архів оригіналу за 18 квітня 2012. Процитовано 10 квітня 2012.
- ↑ Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition (PRO-Developer) ISBN 978-0-7356-2530-3
- ↑ Ryan Naraine (17 жовтня 2007). Memory randomization (ASLR) coming to Mac OS X Leopard. ZDNet. Архів оригіналу за 15 серпня 2020. Процитовано 3 лютого 2020.
- ↑ OS X Mountain Lion Core Technologies Overview (PDF). June 2012. Архів оригіналу (PDF) за 10 липня 2012. Процитовано 25 липня 2012.
- ↑ Pwn2Own day 2: iPhone, BlackBerry beaten; Chrome, Firefox no-shows. Архів оригіналу за 27 лютого 2017. Процитовано 19 квітня 2018.
iOS 4.3 introduces Address Space Layout Randomization (ASLR)
- ↑ Архівована копія (PDF). Архів оригіналу (PDF) за 21 вересня 2020. Процитовано 19 квітня 2018.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ Простой обход защиты ASLR в Windows 7/8. Архів оригіналу за 19 квітня 2018. Процитовано 19 квітня 2018.
- ↑ Архівована копія (PDF). Архів оригіналу (PDF) за 20 квітня 2018. Процитовано 19 квітня 2018.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
- Фленов М. Е. Программирование на C++ глазами хакера. 2 изд. — БХВ-Петербург, 2011. — С. 53. — ISBN 978-5-9775-0303-7.
- Саша Голдштейн, Дима Зурбалев, Идо Флатов. Оптимизация приложений на платформе .NET с использованием языка C#. — ДМК Пресс, 2014. — С. 524. — ISBN 978-5-457-83128-5.
- ASLR Bypass in Windows — Brian Mariani
- PaX documentation on ASLR [Архівовано 14 квітня 2016 у Wayback Machine.]
- Comparison of PaX to Exec Shield and W^X [Архівовано 14 квітня 2012 у Wayback Machine.]
- ASLR for Windows Vista beta 2
- ASLR for Windows 2000/XP/2003 (WehnTrust)
- Набір засобів EMET — реалізація ASLR для Windows XP/2003 [Архівовано 3 вересня 2014 у Wayback Machine.]
- Bypassing PaX ASLR protection [Архівовано 14 березня 2012 у Wayback Machine.]
- On the effectiveness of address space layout randomization
- Microsoft Finds (Random) Way to Secure Vista
- Windows Vista Randomization Gets OEM Thumbs Up