Анализ нулевого дня уязвимости системы Microsoft Windows: может угрожать безопасности экосистемы Web3
Недавно выпущенное обновление безопасности от Microsoft исправило уязвимость повышения привилегий в системе Windows, которая использовалась хакерами. Эта уязвимость в основном присутствует в ранних версиях Windows и не может быть активирована на Windows 11. В данной статье будет проанализировано, как злоумышленники могут продолжать использовать эту уязвимость на фоне постоянно усиливающихся мер безопасности.
Фон уязвимости
Это уязвимость нулевого дня, то есть системная уязвимость, которая была использована до того, как она была публично раскрыта. С помощью этой уязвимости хакеры могут получить полный контроль над системой Windows, что может привести к утечке личной информации, сбоям системы, потере данных, финансовым потерям и другим серьезным последствиям. Для пользователей Web3 существует риск кражи приватных ключей и перемещения цифровых активов. В более широком смысле эта уязвимость может повлиять на всю экосистему Web3, работающую на основе инфраструктуры Web2.
Анализ уязвимостей
Анализ патча показывает, что это проблема, связанная с подсчетом ссылок на объекты окна в win32k. Анализ ранних комментариев в исходном коде показывает, что ранее код блокировал только объект окна, не блокируя объект меню в окне, что могло привести к неправильной ссылке на объект меню.
Дальнейший анализ показал, что проблема заключается в функции xxxEnableMenuItem. Объект меню, возвращаемый этой функцией, может быть главным меню окна, а также подменю или даже подподменю. Создавая специальную многоуровневую вложенную структуру меню, можно освободить какой-либо промежуточный объект меню во время возврата на уровень пользователя, что может привести к уязвимости при последующих ссылках.
Эксплуатация уязвимостей
Существует два основных подхода к использованию уязвимости:
Выполнение кода shellcode. Однако в более поздних версиях Windows этот метод сталкивается с некоторыми техническими проблемами.
Используйте примитивы чтения и записи для изменения адреса токена. Этот метод обладает большей универсальностью, и основная задача заключается в том, как контролировать значение cbwndextra.
Окончательно выбранное решение:
Управляя размещением памяти объекта окна, записать значение cb-extra класса HWND с использованием битов флагов в функции xxxRedrawWindow.
Проектирование непрерывной памяти для объектов HWND, освобождение промежуточных объектов и использование объекта HWNDClass.
Точное управление расположением объектов с использованием утечек адресов дескрипторов ядра в памяти кучи.
Используйте GetMenuBarInfo() для произвольного чтения, SetClassLongPtr() для произвольной записи.
В конечном итоге, повышение прав осуществляется путем изменения адреса токена.
Резюме
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.
12 Лайков
Награда
12
3
Поделиться
комментарий
0/400
ApeWithNoChain
· 39м назад
Последствия долгого не обновления системы
Посмотреть ОригиналОтветить0
Rekt_Recovery
· 5ч назад
потерял 90% на кредитном плече, но все еще дышу... делюсь боевыми историями из окопов, если честно
Уязвимость нулевого дня в Windows угрожает безопасности Web3: Уязвимости инфраструктуры Web2 могут повлиять на цифровой актив
Анализ нулевого дня уязвимости системы Microsoft Windows: может угрожать безопасности экосистемы Web3
Недавно выпущенное обновление безопасности от Microsoft исправило уязвимость повышения привилегий в системе Windows, которая использовалась хакерами. Эта уязвимость в основном присутствует в ранних версиях Windows и не может быть активирована на Windows 11. В данной статье будет проанализировано, как злоумышленники могут продолжать использовать эту уязвимость на фоне постоянно усиливающихся мер безопасности.
Фон уязвимости
Это уязвимость нулевого дня, то есть системная уязвимость, которая была использована до того, как она была публично раскрыта. С помощью этой уязвимости хакеры могут получить полный контроль над системой Windows, что может привести к утечке личной информации, сбоям системы, потере данных, финансовым потерям и другим серьезным последствиям. Для пользователей Web3 существует риск кражи приватных ключей и перемещения цифровых активов. В более широком смысле эта уязвимость может повлиять на всю экосистему Web3, работающую на основе инфраструктуры Web2.
Анализ уязвимостей
Анализ патча показывает, что это проблема, связанная с подсчетом ссылок на объекты окна в win32k. Анализ ранних комментариев в исходном коде показывает, что ранее код блокировал только объект окна, не блокируя объект меню в окне, что могло привести к неправильной ссылке на объект меню.
Дальнейший анализ показал, что проблема заключается в функции xxxEnableMenuItem. Объект меню, возвращаемый этой функцией, может быть главным меню окна, а также подменю или даже подподменю. Создавая специальную многоуровневую вложенную структуру меню, можно освободить какой-либо промежуточный объект меню во время возврата на уровень пользователя, что может привести к уязвимости при последующих ссылках.
Эксплуатация уязвимостей
Существует два основных подхода к использованию уязвимости:
Выполнение кода shellcode. Однако в более поздних версиях Windows этот метод сталкивается с некоторыми техническими проблемами.
Используйте примитивы чтения и записи для изменения адреса токена. Этот метод обладает большей универсальностью, и основная задача заключается в том, как контролировать значение cbwndextra.
Окончательно выбранное решение:
Управляя размещением памяти объекта окна, записать значение cb-extra класса HWND с использованием битов флагов в функции xxxRedrawWindow.
Проектирование непрерывной памяти для объектов HWND, освобождение промежуточных объектов и использование объекта HWNDClass.
Точное управление расположением объектов с использованием утечек адресов дескрипторов ядра в памяти кучи.
Используйте GetMenuBarInfo() для произвольного чтения, SetClassLongPtr() для произвольной записи.
В конечном итоге, повышение прав осуществляется путем изменения адреса токена.
Резюме
Microsoft перерабатывает код, связанный с win32k, на Rust, в будущем такие уязвимости могут уменьшиться.
Процесс эксплуатации уязвимости относительно прост, в основном зависит от утечки адреса дескриптора кучи на рабочем столе.
Обнаружение этой уязвимости может зависеть от более совершенного тестирования покрытия кода.
Обнаружение аномальных размещений в памяти и операций чтения/записи помогает выявить подобные уязвимости.