<Попередній | зміст | Наступна>
11.4.2. Пошкодження пам'яті
Пошкодження пам’яті відбувається, коли місце в пам’яті процесу випадково змінюється через помилки програмування. Помилки пошкодження пам’яті зазвичай призводять до непередбачуваної поведінки програми, однак у багатьох випадках ці помилки дозволяють маніпулювати процесом з пам’яттю таким чином, що можна контролювати потік виконання програми, дозволяючи зловмисникові дії.
Ці атаки зазвичай називають переповненням буфера, хоча цей термін є надмірним спрощенням. Найпоширеніші типи пошкодження пам’яті значно відрізняються один від одного і мають власні тактики та прийоми, необхідні для успішної експлуатації.
• Переповнення буфера стека: коли програма записує в буфер стека більше даних, ніж є для неї доступний простір, суміжна пам'ять може бути пошкоджена, що часто призводить до аварійного завершення роботи програми.
• Пошкодження кучи: пам'ять кучи виділяється під час виконання і зазвичай містить дані із запущеної програми. Пошкодження кучи відбуваються шляхом маніпулювання даними для перезапису через зв’язаний список покажчиків пам’яті купи.
• Цілочисельне переповнення: ці переповнення відбуваються, коли програма намагається створити числове значення, яке не може міститися у виділеному просторі зберігання.
• Формат рядка: коли програма приймає введення користувача та форматує його без перевірки, місця в пам'яті можуть бути виявлені або перезаписані, залежно від використовуваних маркерів форматування.