Heap spraying
З Вікіпедії, безкоштовно encyclopedia
Heap spraying у інформаційній безпеці — це атака, що використовує помилки в роботі з пам'яттю програми. Атакуючи за допомогою heap spraying, хакер змушує додаток виділити пам'ять під велику кількість об'єктів, що містять шкідливий код. При цьому підвищується ймовірність успіху експлойта, який переносить потік виконання на деяку позицію всередині купи. Важливо розуміти, що без експлойта, що дозволяє змінювати потік виконання, heap spraying не завдасть якоїсь шкоди. Атака заснована на передбачуваності положення купи в адресному просторі процесу. Крім цього, виділення пам'яті в купі – це детермінована операція, яка і дозволяє з успіхом застосовувати цю техніку. Heap spraying особливо ефективна в браузерах, де хакер може виділяти пам'ять, використовуючи кілька рядків JavaScript на вебсторінці. Важливу роль грає подібність виділення пам'яті в різних операційних системах, що робить цю атаку кросплатформною. В результаті можна внести певну послідовність байт (наприклад, машинну інструкцію) в заздалегідь передбачену адресу в пам'яті цільового процесу[1].
При створенні процесу в операційній системі під його потреби виділяється адресний простір[2][3][4], в якому розташовані користувальницькі дані, виконуваний код і деяка системна інформація, яка залежить від конкретної операційної системи. Користувальницькі дані розподіляються між купою і стеком в залежності від способу виділення пам'яті під них[5]. Так, у сегменті стека зберігаються змінні з автоматичним класом розміщення, а також інформація, яка зберігається при кожному виклику функції, наприклад, статичні змінні і адреси повернення при виклику функції. Купа — це область оперативної пам'яті, тобто при динамічному виділенні пам'яті місце виділяється в купі. Традиційно купа і стек ростуть назустріч один одному.