Аналіз 0day вразливостей Windows: від підвищення привілеїв в win32k до ризиків безпеки Web3

robot
Генерація анотацій у процесі

Аналіз та експлуатація 0day вразливості системи Microsoft Windows

Нещодавно в безпековому патчі від Microsoft було виправлено уразливість підвищення привілеїв win32k, яка активно експлуатувалася. Ця уразливість в основному впливає на ранні версії системи Windows, і, здається, не може бути активована в Windows 11. У цій статті буде проаналізовано, як у нинішньому безпековому середовищі зловмисники можуть продовжувати експлуатувати такі уразливості. Наступний аналіз проведено в середовищі Windows Server 2016.

Numen ексклюзив: уразливість 0day Microsoft може зламати Web3 гру на системному + фізичному рівні

Фон вразливості

Уразливість 0day означає, що це невідкрита та неусунута безпекова уразливість, подібно до концепції торгівлі T+0 на фінансових ринках. Якщо така уразливість буде зловмисно використана, це може призвести до серйозних наслідків. Виявлена уразливість 0day у системі Windows може дозволити зловмисникам отримати повний контроль над системою, що дозволяє здійснювати такі атаки, як крадіжка інформації, знищення системи, впровадження шкідливого програмного забезпечення тощо. З точки зору Web3 це може призвести до крадіжки приватних ключів, переміщення цифрових активів, а також загрожувати цілій екосистемі Web3, основаній на інфраструктурі Web2.

Numen ексклюзив: вразливість Microsoft 0day може зруйнувати Web3 гру на системному + фізичному рівнях

Аналіз патчів

Аналіз коду патчу виявив, що він в основному виправляє проблему обробки лічильника посилань на об'єкти. З огляду на коментарі до вихідного коду win32k, можна зрозуміти, що оригінальний код лише блокував об'єкт вікна, але не блокував об'єкт меню у вікні, що могло призвести до неправильного посилання на об'єкт меню.

Numen ексклюзив: уразливість 0day Microsoft може зламати Web3 гру на системному + фізичному рівнях

Доказ концепції експлуатації вразливостей ( PoC )

Аналіз показав, що функція xxxEnableMenuItem може повертати MenuItemState для головного меню вікна або підменю. Ми створили спеціальну чотирирівневу структуру меню, яка містить такі характеристики:

  1. ID найнижчого рівня меню D повинен бути типом системного меню.
  2. Верхнє меню A також має бути системним меню, але необхідно видалити елементи з однаковим ID з меню D.
  3. Видалити посилання меню C в меню B.
  4. Існування меню B, здається, сприяє випуску меню C.

При спрацьовуванні вразливості, під час повернення з xxxRedrawTitle на рівень користувача, видаляється зв'язок меню C і B, а меню C звільняється. Це призводить до того, що подальше посилання на недійсний об'єкт меню C у функції xxxEnableMenuItem.

Numen ексклюзив: уразливість Microsoft 0day може підважити Web3 гру на системному+фізичному рівнях

Використання вразливостей (Exp) реалізація

Загальна ідея

Розгляньте два можливі напрямки використання:

  1. Виконання shellcode: посилання на ранні вразливості, такі як CVE-2017-0263, але в нових версіях Windows можуть виникнути численні перешкоди.

  2. Використання примітивів читання і запису для зміни токена: в останні роки все ще є відкриті exp, на які можна звернути увагу, головне - вирішити, як вперше контролювати значення cbwndextra.

Ми обрали другий варіант, розділивши exp на два етапи: контроль значення cbwndextra та створення стабільних операцій читання/запису.

![Numen ексклюзив: вразливість Microsoft 0day може зламати Web3 гру на системному та фізичному рівнях](https://img-cdn.gateio.im/webp-social/moments-1cc94ddafacec491507491eef9195858.webp01

) Перше записування даних

Використовуйте об'єкт імені класу вікна WNDClass для виділення та звільнення пам'яті об'єкта меню. У функції xxxRedrawWindow знайдіть місце для запису даних, контролюючи дані пам'яті попереднього об'єкта, щоб задовольнити перевірку прапора в функції.

![Numen ексклюзив: уразливість 0day від Microsoft може зруйнувати Web3 гру на системному + фізичному рівні]###https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(

) стабільна пам'ять

Проектування пам'яткової структури трьох послідовних об'єктів HWND по 0x250 байт, звільнення середнього об'єкта та зайняття об'єкта HWNDClass. Передній та задній об'єкти HWND використовуються відповідно для перевірки через функцію та реалізації операцій читання/запису. Точне визначення розташування об'єктів шляхом витоку адреси дескриптора ядра.

![Numen ексклюзив: 0day вразливість Microsoft може системно + фізично перевернути гру Web3]###https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(

) реалізація читання та запису примітивів

Вільне читання за допомогою функції GetMenuBarInfo, вільне записування за допомогою функції SetClassLongPtr. За винятком запису TOKEN, всі інші операції запису виконуються через об'єкт класу першого вікна.

![Numen ексклюзив: уразливість Microsoft 0day може зламати Web3 гру на системному + фізичному рівні]###https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(

Висновок

  1. Microsoft використовує Rust для реконструкції коду win32k, що в майбутньому може повністю вирішити такі вразливості.

  2. Використання таких вразливостей в основному залежить від витоку адреси десктопного стеку, що все ще становить загрозу безпеці для старих систем.

  3. Виявлення цього вразливості, можливо, стало можливим завдяки більш досконалому контролю покриття коду.

  4. Моніторинг аномальних розміщень пам'яті та читання/запису даних вікна допомагає виявити подібні вразливості.

Переглянути оригінал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Нагородити
  • 6
  • Поділіться
Прокоментувати
0/400
TestnetNomadvip
· 14год тому
Що ти кажеш про Rust?
Переглянути оригіналвідповісти на0
StealthDeployervip
· 14год тому
Вже давно перейшов на Linux, розумно.
Переглянути оригіналвідповісти на0
CryptoMotivatorvip
· 14год тому
Знову щось не так, у Microsoft цей баг справді давня традиція.
Переглянути оригіналвідповісти на0
LiquidatedDreamsvip
· 14год тому
Постійно використовувати Microsoft - це пастка.
Переглянути оригіналвідповісти на0
MondayYoloFridayCryvip
· 14год тому
Я найгірший роздрібний інвестор у Web3

Коментар до статті:

rust дійсно може врятувати win? Це просто смішно.
Переглянути оригіналвідповісти на0
CrashHotlinevip
· 14год тому
Сміттєва winxp знову має проблеми
Переглянути оригіналвідповісти на0
  • Закріпити