Небезопасчная завантаження dll-як її прдотвратіть?



+6 +/-
Профіль користувача Petersen Запитав: Petersen  (рейтинг 22224) Категорія: Інтернет

Відповідей: 1

2 +/-
Найкраща відповідь

Бачу, що ви пішли за тими поняттями, які я вам назвав.

Небезпечна завантаження dll. Це ситуація при якій програма намагається завантажити одну dll, а завантажує іншу.

Чим це загрожує: це найпростіший спосіб впровадити свій код в адресний простір іншого процесу, а значить працювати з тим рівнем прав і доступу, що і процес.

Чому так трапляється: процес може довантажити dll двома способами: по повному шляху і по короткому імені. Якщо зазначений повний шлях (наприклад C: \ directory \ lib.dll), то завантажиться саме та бібліотека, яка вказана. А якщо вказати коротку назву (lib.dll), то спочатку буде проведено пошук бібліотеки. За замовчуванням пошук йде так - спочатку бібліотека шукається в папці з програмою, потім в C: \ windows \ system32, потім ще в деяких місцях. Багато програмістів кладуть dll в system32 для того, щоб надалі викликати цю бібліотеку за коротким імені. Але ми знаємо, що якщо покласти "шкідливу" бібліотеку з тим же ім'ям поруч з програмою, ти зголоситься саме вона.

Ну а тепер найцікавіше, приклад:

По дорозі C: ​​\ windows \ system32 \ sysprep лежить програма sysprep.exe. Ця програма є дві особливості:

1) Вона завжди стартує від імені адміністратора (без попиту, навіть без адмінських прав)

2) Вона небезпечно підвантажує дві бібліотеки.

Виходить, що поклавши в папку C: \ windows \ system32 \ sysprep "шкідливу" бібліотеку, то після запуску sysprep.exe автоматично буде виконаний код з бібліотеки (причому з правами адміністратора). Віруси аплодують стоячи.

Відповів на питання: Sawyer