Аналіз вразливості 0day Microsoft: можлива загроза безпеці інфраструктури Web3
Минулого місяця оновлення безпеки Microsoft містило уразливість підвищення привілеїв win32k, яка використовується в диких умовах. Здається, що ця уразливість існує лише в ранніх версіях системи і не може бути активована на Windows 11. Використання таких уразливостей триває вже давно, у цій статті ми проаналізуємо, як зловмисники можуть продовжувати експлуатувати цю уразливість на фоні постійних нових заходів пом'якшення. Ми завершили весь процес аналізу в середовищі Windows Server 2016.
Уразливість 0day відноситься до уразливостей, які не були розкриті та виправлені, і можуть бути зловмисно використані хакерами без виявлення, часто маючи величезну руйнівну силу. Виявлена уразливість 0day знаходиться на рівні системи Windows, хакери можуть отримати повний контроль над Windows через неї. Після контролю це може призвести до крадіжки особистої інформації, краху системи, втрати даних, фінансових втрат, впровадження шкідливого програмного забезпечення тощо. У малих масштабах це може призвести до крадіжки приватних ключів і переміщення цифрових активів; у великих масштабах це може загрожувати всій екосистемі Web3, що працює на основі інфраструктури Web2.
Аналіз патчу показує, що це, здається, лише проблема з надмірним обробленням підрахунку посилань на об'єкт. Але перегляд ранніх коментарів у коді показує, що попередній код блокував лише об'єкт вікна, не блокуючи об'єкт меню в об'єкті вікна, що могло призвести до неправильного посилання на об'єкт меню.
Аналізуючи контекст функції вразливості, ми виявили, що меню, передане в xxxEnableMenuItem(), зазвичай вже заблоковане у верхній функції. Тож яке меню об'єктів потрібно захистити? Подальший аналіз виявив, що в меню, яке повертається з xxxEnableMenuItem, є два можливих варіанти: головне меню вікна або підменю меню (, навіть підпідменю ).
Щоб побудувати POC, ми розробили спеціальну чотирирівневу структуру меню та здійснили спеціальні налаштування для кожного меню, щоб виявити їх за допомогою функцій. У момент повернення користувацького рівня в xxxRedrawTitle, ми видалили відносини посилання між меню C і меню B, успішно звільнивши меню C. Таким чином, коли функція xxxEnableMenuItem повертається, об'єкт меню C, на який посилаються, вже недійсний.
https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
Ми за допомогою ретельно спроектованої пам'яті використовуємо об'єкти назв вікон класу вікна для звільнення об'єктів меню і в функції xxxRedrawWindow знайшли момент для запису даних. Для досягнення стабільної пам'яті ми спроектували структуру з трьох послідовних об'єктів HWND і точно визначили порядок розташування об'єктів за адресою ядрового дескриптора, що витікає в пам'яті купи.
![Numen ексклюзив: уразливість 0day Microsoft може зруйнувати Web3 гру на системному та фізичному рівнях])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
У читанні та запису первісних мов ми використовуємо GetMenuBarInfo)( для реалізації довільного читання, SetClassLongPtr)( для реалізації довільного запису. За винятком запису, що замінює операцію запису TOKEN, яка залежить від класу другого вікна, всі інші записи реалізуються за допомогою об'єкта класу першого вікна через зсув.
![Numen ексклюзив: уразливість 0day Microsoft може знищити Web3 гру на системному та фізичному рівнях])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(
В цілому, хоча уразливість win32k має давню історію, Microsoft вже спробувала реконструювати цю частину кодової бази ядра за допомогою Rust у попередній версії Windows 11, в майбутньому такі уразливості можуть бути ліквідовані. Процес експлуатації цієї уразливості досить простий, основна складність полягає в тому, як контролювати перше записування. Виявлення цієї уразливості, ймовірно, залежить від більш досконалого моніторингу покриття коду. Щодо виявлення уразливостей, окрім уваги до ключових моментів тригерних функцій, також можливими шляхами виявлення подібних уразливостей є моніторинг аномальної пам'яті та читання/запис зсувів даних.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
16 лайків
Нагородити
16
5
Поділіться
Прокоментувати
0/400
TopBuyerBottomSeller
· 07-21 07:25
Ще одна причина оновити до Windows 11~
Переглянути оригіналвідповісти на0
FlatTax
· 07-20 03:35
Скандал, старий Майкрософт, не крутись!
Переглянути оригіналвідповісти на0
SurvivorshipBias
· 07-20 03:34
Це чия система все ще використовує win32k?
Переглянути оригіналвідповісти на0
just_another_wallet
· 07-20 03:33
Ледь не вибухнув моєї старої монети, дивлячись, як шкіра на голові поколює.
Переглянути оригіналвідповісти на0
MrRightClick
· 07-20 03:14
Єдина версія системи, яку навіть собаки не хочуть дивитися - Windows 11
Вразливість 0day Microsoft стала відома: безпека інфраструктури Web3 може бути під загрозою
Аналіз вразливості 0day Microsoft: можлива загроза безпеці інфраструктури Web3
Минулого місяця оновлення безпеки Microsoft містило уразливість підвищення привілеїв win32k, яка використовується в диких умовах. Здається, що ця уразливість існує лише в ранніх версіях системи і не може бути активована на Windows 11. Використання таких уразливостей триває вже давно, у цій статті ми проаналізуємо, як зловмисники можуть продовжувати експлуатувати цю уразливість на фоні постійних нових заходів пом'якшення. Ми завершили весь процес аналізу в середовищі Windows Server 2016.
Уразливість 0day відноситься до уразливостей, які не були розкриті та виправлені, і можуть бути зловмисно використані хакерами без виявлення, часто маючи величезну руйнівну силу. Виявлена уразливість 0day знаходиться на рівні системи Windows, хакери можуть отримати повний контроль над Windows через неї. Після контролю це може призвести до крадіжки особистої інформації, краху системи, втрати даних, фінансових втрат, впровадження шкідливого програмного забезпечення тощо. У малих масштабах це може призвести до крадіжки приватних ключів і переміщення цифрових активів; у великих масштабах це може загрожувати всій екосистемі Web3, що працює на основі інфраструктури Web2.
Аналіз патчу показує, що це, здається, лише проблема з надмірним обробленням підрахунку посилань на об'єкт. Але перегляд ранніх коментарів у коді показує, що попередній код блокував лише об'єкт вікна, не блокуючи об'єкт меню в об'єкті вікна, що могло призвести до неправильного посилання на об'єкт меню.
Аналізуючи контекст функції вразливості, ми виявили, що меню, передане в xxxEnableMenuItem(), зазвичай вже заблоковане у верхній функції. Тож яке меню об'єктів потрібно захистити? Подальший аналіз виявив, що в меню, яке повертається з xxxEnableMenuItem, є два можливих варіанти: головне меню вікна або підменю меню (, навіть підпідменю ).
Щоб побудувати POC, ми розробили спеціальну чотирирівневу структуру меню та здійснили спеціальні налаштування для кожного меню, щоб виявити їх за допомогою функцій. У момент повернення користувацького рівня в xxxRedrawTitle, ми видалили відносини посилання між меню C і меню B, успішно звільнивши меню C. Таким чином, коли функція xxxEnableMenuItem повертається, об'єкт меню C, на який посилаються, вже недійсний.
https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
Ми за допомогою ретельно спроектованої пам'яті використовуємо об'єкти назв вікон класу вікна для звільнення об'єктів меню і в функції xxxRedrawWindow знайшли момент для запису даних. Для досягнення стабільної пам'яті ми спроектували структуру з трьох послідовних об'єктів HWND і точно визначили порядок розташування об'єктів за адресою ядрового дескриптора, що витікає в пам'яті купи.
![Numen ексклюзив: уразливість 0day Microsoft може зруйнувати Web3 гру на системному та фізичному рівнях])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
У читанні та запису первісних мов ми використовуємо GetMenuBarInfo)( для реалізації довільного читання, SetClassLongPtr)( для реалізації довільного запису. За винятком запису, що замінює операцію запису TOKEN, яка залежить від класу другого вікна, всі інші записи реалізуються за допомогою об'єкта класу першого вікна через зсув.
![Numen ексклюзив: уразливість 0day Microsoft може знищити Web3 гру на системному та фізичному рівнях])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(
В цілому, хоча уразливість win32k має давню історію, Microsoft вже спробувала реконструювати цю частину кодової бази ядра за допомогою Rust у попередній версії Windows 11, в майбутньому такі уразливості можуть бути ліквідовані. Процес експлуатації цієї уразливості досить простий, основна складність полягає в тому, як контролювати перше записування. Виявлення цієї уразливості, ймовірно, залежить від більш досконалого моніторингу покриття коду. Щодо виявлення уразливостей, окрім уваги до ключових моментів тригерних функцій, також можливими шляхами виявлення подібних уразливостей є моніторинг аномальної пам'яті та читання/запис зсувів даних.