ASLR

ASLR (англ. address space layout randomization — «рандомізація розміщення адресного простору») — технологія, яка застосовується в операційних системах, при використанні якої випадковим чином змінюється розташування в адресному просторі процесу важливих структур даних, а саме образів виконуваного файлу, підвантажуваних бібліотек, купи і стека.

Технологія ASLR створена для ускладнення експлуатації декількох типів дефектів. Наприклад, якщо за допомогою переповнення буфера або іншого методу атакуючий отримає можливість передати управління за довільною адресою, йому слід буде вгадати, за якою саме адресою розташований стек, купа або інші структури даних, в які можна помістити шелл-код. Подібні проблеми виникнуть і при атаці типу «повернення в бібліотеку» (return-to-libc): атакуючому не буде відома адреса, за якою завантажена бібліотека. У наведених прикладах від атакуючого приховані конкретні адреси, і, якщо не вдасться вгадати правильну адресу, додаток швидше за все аварійно завершиться, тим самим позбавивши атакуючого можливості повторної атаки і привертаючи увагу системного адміністратора.

Реалізації

OpenBSD

Розробники OpenBSD реалізували ASLR одними з перших. ASLR включена за замовчуванням.

Linux

У ядрі Linux простий варіант ASLR є з 2005 року (з версії 2.6.12). Більш складні і повні варіанти ASLR пропонуються у вигляді патчів (PaX, ExecShield та ін). В дистрибутивах, що містять у назві слово «hardened», а також в сучасних версіях дистрибутиву Ubuntu, потужні варіанти включені за замовчуванням.

Для роботи ASLR (для розміщення виконуваних файлів в пам'яті за випадковим адресами) виконувані файли повинні бути скомпільовані в режимі position-independent executable (виконувані файли, що цілком складаються з позиційно-незалежного коду).

Microsoft Windows

В ОС 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

Деяка випадковість при завантаженні бібліотек додана в ОС Mac OS X v10.5 Leopard (2007 рік)[3]. В OS X 10.8 Mountain Lion (2012) ASLR є частиною ядра системи[4].

iOS

В ОС iOS технологія ASLR використовується, починаючи з версії 4.3[5]. Для ядра використовується з iOS 6[6].

Недоліки

Для використання ASLR виконувані файли потрібно збирати зі спеціальними прапорами. В результаті в коді не будуть використовуватися постійні адреси, але при цьому:

  • збільшиться розмір коду виконуваних файлів;
  • збільшиться час завантаження в пам'ять кожного виконуваного файлу;
  • виникне додаткова несумісність з ПО і бібліотеками, розробленим під версії ОС без ASLR.

Крім того, захист можна обійти через виснаження пам'яті[7] або методи Heap Spray[8].

Примітки

  1. Windows ISV Software Security Defenses. Msdn.microsoft.com. Процитовано 10 квітня 2012.
  2. Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition (PRO-Developer) ISBN 978-0-7356-2530-3
  3. Ryan Naraine (17 жовтня 2007). Memory randomization (ASLR) coming to Mac OS X Leopard. ZDNet. Процитовано 3 лютого 2020.
  4. OS X Mountain Lion Core Technologies Overview. June 2012. Процитовано 25 липня 2012.
  5. Pwn2Own day 2: iPhone, BlackBerry beaten; Chrome, Firefox no-shows. «iOS 4.3 introduces Address Space Layout Randomization (ASLR)»
  6. http://people.oregonstate.edu/~jangye/assets/papers/2016/jang:drk-bh.pdf
  7. Простой обход защиты ASLR в Windows 7/8
  8. https://www.owasp.org/images/0/01/OWASL_IL_2010_Jan_-_Moshe_Ben_Abu_-_Advanced_Heapspray.pdf

Література

  • Фленов М. Е. Программирование на C++ глазами хакера. 2 изд. — БХВ-Петербург, 2011. — С. 53. — ISBN 978-5-9775-0303-7.
  • Саша Голдштейн, Дима Зурбалев, Идо Флатов. Оптимизация приложений на платформе .NET с использованием языка C#. — ДМК Пресс, 2014. — С. 524. — ISBN 978-5-457-83128-5.

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.