Що таке ASLR, і як це тримати ваш комп'ютер безпечно?
Рандомізація адресного простору (ASLR) - це техніка безпеки, яка використовується в операційних системах, вперше впроваджена в 2001 році. Але минулого тижня був знайдений новий метод обходу ASLR. Отже, ви повинні хвилюватися?
Для тих, хто не має низького рівня програмування, ASLR може заплутати. Щоб зрозуміти це, потрібно спочатку зрозуміти віртуальну пам'ять.
Що таке віртуальна пам'ять?
Віртуальна пам'ять - це техніка керування пам'яттю з багатьма перевагами, але вона була створена насамперед для полегшення програмування. Уявіть, що у вас є Google Chrome, Microsoft Word і кілька інших програм, відкритих на комп'ютері з 4 Гб оперативної пам'яті. В цілому, програми на цьому комп'ютері використовують набагато більше 4 ГБ оперативної пам'яті. Однак не всі програми будуть активні в будь-який час або потребуватимуть одночасного доступу до цієї оперативної пам'яті.
Операційна система виділяє шматки пам'яті для програм, що викликаються сторінок. Якщо оперативної пам'яті недостатньо для зберігання всіх сторінок одночасно, сторінки, які найменш потрібні, зберігаються на більш повільному (але більш просторому) жорсткому диску. Коли потрібні збережені сторінки, вони переключатимуть пробіли з менш необхідними сторінками в оперативній пам'яті. Цей процес називається пейджинг і надає своє ім'я файлу pagefile.sys у Windows.
Віртуальна пам'ять полегшує програмі керувати власною пам'яттю, а також робить їх більш безпечними. Програми не повинні турбуватися про те, де інші програми зберігають дані, або скільки RAM залишилося. Вони можуть просто попросити операційну систему на додаткову пам'ять (або повернути невикористану пам'ять) у міру необхідності. Вся програма бачить єдиний безперервний шматок адрес пам'яті для його ексклюзивного використання, званий віртуальними адресами. Програмі не можна переглядати пам'ять іншої програми.
Коли програма потребує доступу до пам'яті, вона надає операційній системі віртуальну адресу. Операційна система контактує з блоком керування пам'яттю процесора (MMU). MMU переводить між віртуальними і фізичними адресами, повертаючи цю інформацію в операційну систему. Ні в якому разі програма безпосередньо не взаємодіє з оперативною пам'яттю.
Що таке ASLR?
Рандомізація розташування адресного простору (ASLR) використовується в основному для захисту від атак переповнення буфера. У буфері переповнення, зловмисники подають функцію стільки небажаних даних, скільки вона може обробляти, а потім зловмисне корисне навантаження. Корисне навантаження перезапише дані, які програма має намір отримати. Інструкції для переходу до іншої точки коду є загальним корисним навантаженням. Наприклад, відомий метод JailbreakMe джейлбрейка iOS 4 використовував атаку переповнення буфера, що спонукало Apple додати ASLR до iOS 4.3..
Переповнення буфера вимагає, щоб зловмисник знав, де кожна частина програми знаходиться в пам'яті. Зрозумівши це, зазвичай це складний процес випробувань і помилок. Визначивши це, вони повинні розробити корисне навантаження і знайти відповідне місце для його введення. Якщо зловмисник не знає, де знаходиться їх цільовий код, його може бути важко або неможливо використовувати.
ASLR працює поряд з управлінням віртуальною пам'яттю для випадкового розташування різних частин програми в пам'яті. Кожного разу, коли програма запускається, компоненти (включаючи стек, купу і бібліотеки) переміщуються до іншої адреси у віртуальній пам'яті. Зловмисники більше не можуть дізнатися, де їхня ціль здійснюється шляхом проб і помилок, оскільки адреса кожного разу буде іншою. Як правило, програми повинні бути зібрані з підтримкою ASLR, але це стає за замовчуванням, і навіть потрібно на Android 5.0 і пізніших версіях.
Так чи ASLR все ще захищає Вас?
У минулий вівторок дослідники SUNY Binghamton і Університету Каліфорнії, Riverside, представили документ під назвою «Перескочити через ASLR»: «Атакуючи провісників гілок» для обходу ASLR. У документі детально описується спосіб атаки буфера цільової галузі (BTB). BTB є частиною процесора, який прискорює виконання операцій, прогнозуючи результат. Використовуючи метод авторів, можна визначити розташування відомих інструкцій гілок у виконуваній програмі. Атака, про яку йде мова, була виконана на машині Linux з процесором Intel Haswell (випущений в 2013 році), але, ймовірно, може бути застосована до будь-якої сучасної операційної системи та процесора.
Тим не менш, ви не обов'язково маєте відчай. У документі запропоновано кілька способів, якими розробники апаратних засобів і операційних систем можуть пом'якшити цю загрозу. Новіші технології тонкого зерна ASLR вимагали б більше зусиль від атакуючого, а збільшення кількості ентропії (випадковості) може призвести до неможливості атаки Jump Over. Швидше за все, нові операційні системи та процесори будуть захищені від цієї атаки.
Так що залишилося ти зробити? Перейти через обхід новий, і ще не були помічені в дикій природі. Коли зловмисники використовують його, недолік збільшить потенційний збиток, який зловмисник може викликати на вашому пристрої. Цей рівень доступу не безпрецедентний; Microsoft і Apple реалізували лише ASLR у своїх операційних системах, випущених у 2007 році. Навіть якщо цей стиль атаки стає звичайним явищем, ви не будете гірше, ніж ви були в часи Windows XP.
Майте на увазі, що зловмисники все одно повинні отримати свій код на пристрої, щоб завдати шкоди. Цей недолік не надає їм додаткових способів інфікування. Як завжди, ви повинні дотримуватися передового досвіду безпеки. Використовуйте антивірусну програму, тримайтеся подалі від ескізних веб-сайтів і програм, і тримайте своє програмне забезпечення в актуальному стані. Виконуючи ці кроки та утримуючи шкідливих акторів від комп'ютера, ви будете настільки ж безпечними, як коли-небудь.
Кредит на зображення: Steve / Flickr