Аналіз 0day вразливості системи Microsoft Windows: можливість отримати повний контроль над системою
Минулого місяця безпекове оновлення Microsoft виправило уразливість підвищення привілеїв у ядрі Windows, яку використовували хакери. Ця уразливість переважно існує в ранніх версіях системи Windows і не може бути активована в Windows 11. У цій статті ми проаналізуємо, як зловмисники можуть продовжувати використовувати цю уразливість на фоні постійного вдосконалення поточних механізмів безпеки. Наша аналітична середа — Windows Server 2016.
0day вразливість означає програмну вразливість, яка ще не була виявлена та виправлена. Як тільки хакери виявлять і скористаються нею, це може завдати серйозної шкоди. Виявлена вразливість Windows 0day може дозволити зловмисникам отримати повний контроль над системою, а також викрасти особисту інформацію, встановити шкідливе програмне забезпечення, викрасти криптовалюту тощо. З більш широкої точки зору, ця вразливість навіть може вплинути на цілу екосистему Web3, яка базується на інфраструктурі Web2.
Аналіз патчів показує, що проблема полягає в обробці об'єкта підрахунку посилань у модулі win32k. Ранні коментарі до вихідного коду вказують на те, що попередній код блокував лише об'єкт вікна, не блокуючи об'єкт меню у вікні, що могло призвести до неправильного посилання на об'єкт меню.
Ми створили спеціальну багаторівневу вкладену структуру меню для активації вразливості. Ключовим моментом є видалення посилання на певне підменю та його звільнення, коли функція xxxEnableMenuItem повертає користувацький рівень. Таким чином, коли функція знову входить у ядро, раніше посилане об'єкт меню вже втрачає дійсність.
При реалізації експлуатації вразливості ми в основному розглядали два варіанти: виконання shellcode і використання операцій читання та запису для зміни токена. Враховуючи механізми безпеки нових версій Windows, ми обрали останній варіант. Увесь процес експлуатації поділяється на два етапи: спочатку контролюємо значення cbwndextra, потім встановлюємо стабільні операції читання та запису.
Щоб записати перші дані, ми використали точку запису в функції xxxRedrawWindow. Завдяки ретельному розташуванню пам'яті, ми можемо контролювати дані пам'яті сусідніх об'єктів, що дозволяє перевіряти за допомогою міток у функції.
https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
Нарешті, ми використовуємо GetMenuBarInfo)( для реалізації довільного читання, SetClassLongPtr)( для реалізації довільного запису. Крім операцій зміни TOKEN, всі інші записування виконуються за допомогою об'єкта класу першого вікна.
![Numen ексклюзив: уразливість Microsoft 0day може зламати Web3 гру на системному та фізичному рівнях])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
Загалом, хоча вразливість модуля win32k існує вже давно, Microsoft намагається переписати відповідний код на Rust, і в майбутньому такі вразливості можуть бути усунені в новій системі. Поточний процес експлуатації не є особливо складним, в основному спирається на витік адреси десктопного купи-обробника. Поліпшення перевірки покриття коду і цільової перевірки аномальних операцій з пам'яттю можуть бути ефективним способом виявлення таких вразливостей.
![Numen ексклюзив: уразливість Microsoft 0day може зруйнувати Web3 гру на системному+фізичному рівнях])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(
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.
17 лайків
Нагородити
17
5
Поділіться
Прокоментувати
0/400
MissingSats
· 07-11 05:50
Гаманець放马内?
Переглянути оригіналвідповісти на0
GigaBrainAnon
· 07-11 05:50
Фу, знову доведеться мучити систему оновлення.
Переглянути оригіналвідповісти на0
PanicSeller
· 07-11 05:46
Це так страшно, гаманець переходить на Android.
Переглянути оригіналвідповісти на0
LiquidatedTwice
· 07-11 05:45
Щодня лежачи вдома, криптоінвестор, який займається спот-трейдингом, іноді займається NFT та Децентралізованими фінансами, прибутки та збитки залежать від містики. Більша частина капіталу використовується для спот-торгівлі, а невелика частина в Безстрокових ф'ючерсах Degen.
Аналіз уразливості 0day ядра Windows: може вплинути на безпеку екосистеми Web3
Аналіз 0day вразливості системи Microsoft Windows: можливість отримати повний контроль над системою
Минулого місяця безпекове оновлення Microsoft виправило уразливість підвищення привілеїв у ядрі Windows, яку використовували хакери. Ця уразливість переважно існує в ранніх версіях системи Windows і не може бути активована в Windows 11. У цій статті ми проаналізуємо, як зловмисники можуть продовжувати використовувати цю уразливість на фоні постійного вдосконалення поточних механізмів безпеки. Наша аналітична середа — Windows Server 2016.
0day вразливість означає програмну вразливість, яка ще не була виявлена та виправлена. Як тільки хакери виявлять і скористаються нею, це може завдати серйозної шкоди. Виявлена вразливість Windows 0day може дозволити зловмисникам отримати повний контроль над системою, а також викрасти особисту інформацію, встановити шкідливе програмне забезпечення, викрасти криптовалюту тощо. З більш широкої точки зору, ця вразливість навіть може вплинути на цілу екосистему Web3, яка базується на інфраструктурі Web2.
Аналіз патчів показує, що проблема полягає в обробці об'єкта підрахунку посилань у модулі win32k. Ранні коментарі до вихідного коду вказують на те, що попередній код блокував лише об'єкт вікна, не блокуючи об'єкт меню у вікні, що могло призвести до неправильного посилання на об'єкт меню.
Ми створили спеціальну багаторівневу вкладену структуру меню для активації вразливості. Ключовим моментом є видалення посилання на певне підменю та його звільнення, коли функція xxxEnableMenuItem повертає користувацький рівень. Таким чином, коли функція знову входить у ядро, раніше посилане об'єкт меню вже втрачає дійсність.
При реалізації експлуатації вразливості ми в основному розглядали два варіанти: виконання shellcode і використання операцій читання та запису для зміни токена. Враховуючи механізми безпеки нових версій Windows, ми обрали останній варіант. Увесь процес експлуатації поділяється на два етапи: спочатку контролюємо значення cbwndextra, потім встановлюємо стабільні операції читання та запису.
Щоб записати перші дані, ми використали точку запису в функції xxxRedrawWindow. Завдяки ретельному розташуванню пам'яті, ми можемо контролювати дані пам'яті сусідніх об'єктів, що дозволяє перевіряти за допомогою міток у функції.
https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
Нарешті, ми використовуємо GetMenuBarInfo)( для реалізації довільного читання, SetClassLongPtr)( для реалізації довільного запису. Крім операцій зміни TOKEN, всі інші записування виконуються за допомогою об'єкта класу першого вікна.
![Numen ексклюзив: уразливість Microsoft 0day може зламати Web3 гру на системному та фізичному рівнях])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
Загалом, хоча вразливість модуля win32k існує вже давно, Microsoft намагається переписати відповідний код на Rust, і в майбутньому такі вразливості можуть бути усунені в новій системі. Поточний процес експлуатації не є особливо складним, в основному спирається на витік адреси десктопного купи-обробника. Поліпшення перевірки покриття коду і цільової перевірки аномальних операцій з пам'яттю можуть бути ефективним способом виявлення таких вразливостей.
![Numen ексклюзив: уразливість Microsoft 0day може зруйнувати Web3 гру на системному+фізичному рівнях])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(
Ще раз збираєшся знищити гаманець?