Аналіз та використання 0day-вразливостей системи Microsoft Windows
Нещодавно в безпековому патчі Microsoft було виправлено вразливість підвищення привілеїв у ядрі Windows, яка експлуатувалася хакерами. Ця вразливість переважно існувала в ранніх версіях системи Windows, а не в Windows 11. У цій статті буде проаналізовано, як зловмисники продовжують використовувати цю вразливість на фоні постійного вдосконалення сучасних засобів безпеки.
Фон вразливості
Це уразливість нульового дня на рівні системи Windows, через яку зловмисники можуть отримати повний контроль над Windows. Наслідки контролю можуть включати витік особистої інформації, аварії системи, втрату даних, фінансові втрати, впровадження шкідливого програмного забезпечення тощо. Для користувачів Web3 можливе викрадення приватних ключів, а цифрові активи можуть піддаватися ризику переміщення. В більшому масштабі ця уразливість може вплинути на екосистему Web3, що працює на базовій інфраструктурі Web2.
Аналіз патчів
Аналіз коду патчу виявив, що це, схоже, проблема з надмірним обробленням рахунку посилань на об'єкт. З ранніх коментарів у вихідному коді можна зрозуміти, що попередній код лише блокував об'єкт вікна, не блокуючи об'єкт меню в об'єкті вікна, що могло призвести до помилкового посилання на об'єкт меню.
Відтворення вразливості
Ми створили спеціальну чотирирівневу структуру меню для активації вразливості. Ці меню повинні відповідати деяким специфічним умовам, щоб пройти перевірку відповідних функцій. Врешті-решт, при поверненні на рівень користувача, шляхом видалення відносин посилань між меню звільняється об'єкт цільового меню, що робить подальші посилання на цей об'єкт недійсними.
Використання вразливостей
Основна ідея використання цієї вразливості полягає у зміні адреси токена за допомогою читання та запису примітивів. Весь процес експлуатації можна розділити на два ключові етапи: по-перше, як контролювати значення cbwndextra за допомогою вразливості UAF, по-друге, як на основі контрольованого значення cbwndextra створити стабільні примітиви читання та запису.
Ми успішно реалізували перший запис даних, використавши ретельно спроектовану пам'ять, а також зв'язок між об'єктами вікна та об'єктами HWNDClass. Потім ми створили потрібну структуру пам'яті, послідовно виділивши три об'єкти HWND і звільнивши один з них.
У читанні та запису примітивів ми використовуємо GetMenuBarInfo() для виконання довільного читання, а SetClassLongPtr() для виконання довільного запису. Крім операцій заміни TOKEN, інші записи виконуються за допомогою класу першого об'єкта вікна через зсув.
Підсумок
Microsoft намагається переписати код, пов'язаний з win32k, за допомогою Rust, в майбутньому подібні вразливості можуть бути усунуті в новій системі.
Процес використання цієї уразливості досить простий, основна складність полягає в тому, як контролювати перше записування.
Виявлення вразливостей може залежати від більш досконалого контролю покриття коду.
Щодо виявлення вразливостей, окрім уваги до критичних функцій, слід також проводити цілеспрямоване виявлення аномальної структури пам'яті та читання/запису даних.
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.
9 лайків
Нагородити
9
5
Поділіться
Прокоментувати
0/400
BearEatsAll
· 3год тому
Стару систему не варто терміново змінити?
Переглянути оригіналвідповісти на0
ZkSnarker
· 3год тому
факт: досі використовують windows 7 в прод, чесно кажучи
Переглянути оригіналвідповісти на0
NightAirdropper
· 3год тому
Вуго, бик, ... попередження про вибух жорсткого диска
Переглянути оригіналвідповісти на0
ser_we_are_early
· 3год тому
win7 приятель ще тут?
Переглянути оригіналвідповісти на0
GasFeeAssassin
· 3год тому
Тільки прокинувся, без оновлень системних патчів безпеки - відчуваю себе більш безпечно.
Аналіз уразливості 0day ядра Windows: безпека активів Web3 під загрозою
Аналіз та використання 0day-вразливостей системи Microsoft Windows
Нещодавно в безпековому патчі Microsoft було виправлено вразливість підвищення привілеїв у ядрі Windows, яка експлуатувалася хакерами. Ця вразливість переважно існувала в ранніх версіях системи Windows, а не в Windows 11. У цій статті буде проаналізовано, як зловмисники продовжують використовувати цю вразливість на фоні постійного вдосконалення сучасних засобів безпеки.
Фон вразливості
Це уразливість нульового дня на рівні системи Windows, через яку зловмисники можуть отримати повний контроль над Windows. Наслідки контролю можуть включати витік особистої інформації, аварії системи, втрату даних, фінансові втрати, впровадження шкідливого програмного забезпечення тощо. Для користувачів Web3 можливе викрадення приватних ключів, а цифрові активи можуть піддаватися ризику переміщення. В більшому масштабі ця уразливість може вплинути на екосистему Web3, що працює на базовій інфраструктурі Web2.
Аналіз патчів
Аналіз коду патчу виявив, що це, схоже, проблема з надмірним обробленням рахунку посилань на об'єкт. З ранніх коментарів у вихідному коді можна зрозуміти, що попередній код лише блокував об'єкт вікна, не блокуючи об'єкт меню в об'єкті вікна, що могло призвести до помилкового посилання на об'єкт меню.
Відтворення вразливості
Ми створили спеціальну чотирирівневу структуру меню для активації вразливості. Ці меню повинні відповідати деяким специфічним умовам, щоб пройти перевірку відповідних функцій. Врешті-решт, при поверненні на рівень користувача, шляхом видалення відносин посилань між меню звільняється об'єкт цільового меню, що робить подальші посилання на цей об'єкт недійсними.
Використання вразливостей
Основна ідея використання цієї вразливості полягає у зміні адреси токена за допомогою читання та запису примітивів. Весь процес експлуатації можна розділити на два ключові етапи: по-перше, як контролювати значення cbwndextra за допомогою вразливості UAF, по-друге, як на основі контрольованого значення cbwndextra створити стабільні примітиви читання та запису.
Ми успішно реалізували перший запис даних, використавши ретельно спроектовану пам'ять, а також зв'язок між об'єктами вікна та об'єктами HWNDClass. Потім ми створили потрібну структуру пам'яті, послідовно виділивши три об'єкти HWND і звільнивши один з них.
У читанні та запису примітивів ми використовуємо GetMenuBarInfo() для виконання довільного читання, а SetClassLongPtr() для виконання довільного запису. Крім операцій заміни TOKEN, інші записи виконуються за допомогою класу першого об'єкта вікна через зсув.
Підсумок
Microsoft намагається переписати код, пов'язаний з win32k, за допомогою Rust, в майбутньому подібні вразливості можуть бути усунуті в новій системі.
Процес використання цієї уразливості досить простий, основна складність полягає в тому, як контролювати перше записування.
Виявлення вразливостей може залежати від більш досконалого контролю покриття коду.
Щодо виявлення вразливостей, окрім уваги до критичних функцій, слід також проводити цілеспрямоване виявлення аномальної структури пам'яті та читання/запису даних.