Microsoft додала в ос Windows 10 чергову функцію захисту від експлойтів

Мова про той же Windows 10 Insider Preview Build 14316, який згадувався нами кілька разів в попередніх постах, присвячених підсистемі Ubuntu Linux. У новому билде Windows 10 зміни не обійшли і ядро. Microsoft добавила туди новий об'єкт ядра під назвою RegistryTransaction з відповідними API-функціями роботи з ним начебто [NtCommit/NtCreate/NtOpen/NtRollback]RegistryTransaction. Як не важко здогадатися, мова йде про атомарних операціях з даними реєстру.



Іншим поліпшенням стала поява довгоочікуваної функції під назвою Win32k syscalls filtering на рівні ядра Windows. Так як вона все ще перебуває у попередній збірці Windows 10, про неї відомо не так багато. Основне її призначення полягає в тому, що вона дозволить повністю закрити sandbox для процесів відповідних додатків, типу браузерів і зніме питання експлуатації LPE-вразливостей в win32k.sys для них. На сьогоднішній день такі уразливості є основною можливістю отримання експлойтів максимальних прав SYSTEM при проникненні в систему через веб-браузер.


Рис. Загальна схема роботи Win32k syscalls filtering на прикладі AppContainer-sandboxed веб-браузера Edge, який зможе повністю закрити AppContainer від зовнішнього впливу.

Варто зазначити, що автори веб-браузера Google Chrome ще в минулому році додали в нього функцію, яка захищає sandboxed-процеси (renderer-процеси по термінології Google) від згубного впливу win32k.sys. Так як Chrome делегує роботу з графікою і вікнами на основний батьківський процес, дочірні sandboxed-процеси повністю звільняються від необхідності здійснення GUI-операцій, наприклад, промальовування вікон та іншого GUI. Раніше для цього використовувалася налаштування веб-браузера -enable_win32k_renderer_lockdown.

Повне відключення win32k.sys є достатнім заходом забезпечення безпеки тільки для такого веб-браузера як Chrome, який має чітко визначену модель розподілу функцій між батьківським і renderer-процесами (GUI-функції не перетинаються з sandboxed). Microsoft пропонує більш гнучкий шлях, функція Win32k syscalls filtering (PsAttributeWin32kFilter) допоможе вибірково фільтрувати ті функції, які не потрібні процесу, наприклад, Edge, та залишати тільки найнеобхідніші.

Функція Win32k syscalls filtering органічно доповнює іншу функцію безпеки Windows 10, яка вперше була додана Microsoft для захисту від LPE-експлойтів. Мова йде про функції Block Untrusted Fonts, яка також з'явилася і в EMET (див. kernel32!SetProcessMitigationPolicy з аргументом ProcessFontDisablePolicy).


Рис. EMET дозволяє примусово вмикати функцію Block Untrusted Fonts для вибраного процесу, таким чином перекривши іншу поверхню атаки LPE-експлойта, які використовують specially crafted файли шрифтів для експлуатації вразливостей в Win32k.sys.

Microsoft відома своїм уважним підходом до функцій захисту від експлойтів, які інтегровані в Windows. Там послідовно з'являлися DEP, SEHOP, ASLR, IE11-EPM, IE11-64bit_tabs, HEASLR. Безкоштовний інструмент EMET дозволяв примусово включати такі налаштування для процесів. У той же час, тільки з Windows 10 Microsoft почала вживати зазначені вище кроки щодо закриття вразливих місць, які використовуються LPE-експлойта.

Раніше ми писали і про новий веб-браузер, Edge в Windows 10, в якому Microsoft відмовилася від всіх застарілих технологій типу COM або ActiveX, які використовувалися для впровадження свого коду в веб-браузер шкідливими програмами (той же спіткає і Flash Player). Вона також закрила інші можливі місця впровадження (інжекції) шкідливого коду в run-time запущений процес, а також використовує AppContainer і 64-бітні вкладки за замовчуванням. Використання функції Win32k syscalls filtering зробить цей веб-браузер ще більш безпечним.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.