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