Випадковий розподіл адресного простору
Листопад 2nd, 2008
Випадковий розподіл адресного простору — технологія, покликана підвищити безпеку операційних систем. Англійською Address space layout randomization (ASLR). Основна ідея полягає у тому, що під час запуску програми динамічні бібліотеки опиняються у випадковому сегменті пам’яті (з випадковим зміщенням). В ідеалі, так само, у випадкове місце, слід переміщати стек та купу(heap) програми, що запускається.
Передбачається, що таким чином система стає стійкішою до атак типу return-to-libc. Справа в тому, що, зловмисник, отримавши доступ до стеку, може записати туди якісь свої параметри та перевести виконання на відому йому адресу якоїсь функції з стандартної бібліотеки. Фактично це буде рівнозначно звичайному виклику такої функції, але з параметрами, заданими зловмисником. Функція може бути будь-яка. Може, exec(), може socket() — як треба буде. Аналіз багатьох експлойтів свого часу показав , що більшість мають “жорстко” записані адреси переходу. Тут якраз випадковість розміщення і проявляє себе: ймовірність правильного виконнання експлойту знижується майже до нуля.
Вперше ASR було реалізовано у PaX — наборі патчів безпеки для лінукс-ядра. Відповідно, на практиці це можна було помацати у певних дистрибутивах (але не у всіх). Крім того, своя реалізація з’явилась у OpenBSD. У світі Windows технологія ASLR прийшла лише з виходом Vista.
Втім, не все так добре. Ймовірність правильного виконання експлойту хоча й наближається до нуля, але не зникає. Запустивши вразливий код багато разів, врешті решт зловмисник отримає бажаний результат. “Против лома нет приема”, brute forse, що тут зробиш. Спеціальні наукові дослідження , та й просто практика , показали, що ASLR безсиле проти дещо модифікованих атак. Так, вони ускладнюються та уповільнюються, але все одно так чи інакше мають усі шанси закінчитися успіхом. Тому технологія ASLR не стала “срібною кулею”. Хоча, її все одно залишили. Про всяк випадок. Тим більше, що вона хоч трохи, але діє.
Категорії: Життя | Теґи:Address space layout randomization, ASLR, безпека




