Анализ уязвимостей системы Microsoft Windows: возможная угроза безопасности экосистемы Web3
В прошлом месяце в обновлении безопасности Microsoft был обнаружен уязвимость повышения привилегий win32k, которая, похоже, существует только в ранних версиях операционной системы Windows. В этой статье будет проанализировано, как злоумышленники могут продолжать использовать эту уязвимость на фоне постоянных улучшений в сфере безопасности. Анализ проводился в среде Windows Server 2016.
Такие 0day уязвимости могут быть злоупотреблены после их обнаружения незаметно, что приводит к огромным разрушениям. С помощью этой уязвимости хакеры могут получить полный контроль над системой Windows. Последствия контроля включают кражу личной информации, сбои в системе и потерю данных, финансовые потери, внедрение вредоносного ПО и т.д. Небольшое воздействие может привести к краже приватных ключей и перемещению цифровых активов, в то время как более широкое воздействие может угрожать всей экосистеме Web3, работающей на основе инфраструктуры Web2.
Анализ патчей
Анализ патча показывает, что проблема, похоже, заключается в том, что счетчик ссылок на объект был обработан слишком много раз. Судя по ранним комментариям в исходном коде, предыдущий код блокировал только объект окна, не блокируя объект меню в окне, что могло привести к неправильной ссылке на объект меню.
Проверка уязвимости
Мы создали специальную многослойную вложенную структуру меню и установили некоторые специфические условия для активации уязвимости:
Идентификатор самого внутреннего меню должен быть типом системного меню
Внешнее меню также должно быть системным меню, но необходимо удалить определенные элементы системного меню.
Удалить ссылки на родительский уровень внутреннего меню
Добавьте дополнительные промежуточные меню, чтобы обеспечить успешное освобождение.
Удалите ссылки на ключевое меню, когда функция возвращает уровень пользователя, чтобы оно было успешно освобождено. В противном случае при обращении к этому объекту меню в последующих функциях ядра возникнут проблемы.
Использование уязвимости
Основные направления использования идеи:
Выполнение кода shellcode - этот способ может иметь множество ограничений в более новых версиях Windows
Использование примитивов чтения и записи для изменения адреса токена - этот метод обладает лучшей универсальностью.
Мы выбрали второй вариант, разделив весь процесс использования на два ключевых этапа:
Используйте уязвимость UAF для управления значением cbwndextra
Получение стабильных примитивов чтения и записи
Для реализации первой записи данных мы использовали объекты имен классов окон для занять освобожденную память объектов меню и нашли структуру адреса, в которую можно записать любые данные. В конце концов было выбрано записывать данные с помощью проверки флага в определенной функции.
Для достижения стабильной компоновки памяти мы спроектировали три последовательных окна одинакового размера, освободив средний объект и заняв место объектом окна. Мы точно определяем, соответствует ли расположение объектов ожиданиям, используя адреса дескрипторов ядра, утечущие в памяти кучи.
В области операций чтения и записи мы используем GetMenuBarInfo() для произвольного чтения и SetClassLongPtr() для произвольной записи. За исключением записи токенов, все другие операции записи используют объект класса первого окна.
Резюме
Уязвимость win32k может быть устранена в предварительной версии Windows 11
Процесс эксплуатации данного типа уязвимости относительно прост, он в основном зависит от утечки адреса дескриптора кучи на рабочем столе.
Обнаружение уязвимостей может зависеть от более полного контроля покрытия кода.
Обнаружение аномальных макетов памяти и операций чтения/записи данных помогает выявить такие уязвимости.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
11 Лайков
Награда
11
9
Репост
Поделиться
комментарий
0/400
MoneyBurnerSociety
· 08-13 09:31
Ну и что, если закрытый ключ к кошельку потерян, какое Web3 исследовать... не лучше ли установить холодный кошелек?
Посмотреть ОригиналОтветить0
OnChainDetective
· 08-13 02:43
только что обнаружил уязвимость win32k... типичная слабость инфраструктуры web2, смех. не ваши ключи, не ваши токены, народ.
Посмотреть ОригиналОтветить0
BlockchainWorker
· 08-12 11:32
Слишком опасно, сначала перейдите на платформу Linux для спасения.
Посмотреть ОригиналОтветить0
ParallelChainMaxi
· 08-12 02:25
Снова тема отца
Посмотреть ОригиналОтветить0
RugPullSurvivor
· 08-10 12:49
Web2 днем, web3 ночью. Живите в Блокчейн, крипто неудачники становятся старыми прощами, сосредоточьтесь на炒ке токенов в мире криптовалют, Метавселенная Defi NFT цифровые кочевники~
Пожалуйста, напишите комментарий в разговорном стиле на китайском.
Сижу жду, когда Хакер разыграет людей как лохов.
Посмотреть ОригиналОтветить0
metaverse_hermit
· 08-10 12:43
Снова занимаемся одиночными игроками.
Посмотреть ОригиналОтветить0
SillyWhale
· 08-10 12:42
Кто осмелится тронуть мой Кошелек, посмотрим!
Посмотреть ОригиналОтветить0
DogeBachelor
· 08-10 12:32
挣扎在web3第一线的неудачники
Посмотреть ОригиналОтветить0
TxFailed
· 08-10 12:30
классический момент Windows... я узнал это на собственном опыте, если честно
Уязвимости в системе Windows могут угрожать безопасности экосистемы Web3. Анализ путей эксплуатации и рекомендации по предотвращению.
Анализ уязвимостей системы Microsoft Windows: возможная угроза безопасности экосистемы Web3
В прошлом месяце в обновлении безопасности Microsoft был обнаружен уязвимость повышения привилегий win32k, которая, похоже, существует только в ранних версиях операционной системы Windows. В этой статье будет проанализировано, как злоумышленники могут продолжать использовать эту уязвимость на фоне постоянных улучшений в сфере безопасности. Анализ проводился в среде Windows Server 2016.
Такие 0day уязвимости могут быть злоупотреблены после их обнаружения незаметно, что приводит к огромным разрушениям. С помощью этой уязвимости хакеры могут получить полный контроль над системой Windows. Последствия контроля включают кражу личной информации, сбои в системе и потерю данных, финансовые потери, внедрение вредоносного ПО и т.д. Небольшое воздействие может привести к краже приватных ключей и перемещению цифровых активов, в то время как более широкое воздействие может угрожать всей экосистеме Web3, работающей на основе инфраструктуры Web2.
Анализ патчей
Анализ патча показывает, что проблема, похоже, заключается в том, что счетчик ссылок на объект был обработан слишком много раз. Судя по ранним комментариям в исходном коде, предыдущий код блокировал только объект окна, не блокируя объект меню в окне, что могло привести к неправильной ссылке на объект меню.
Проверка уязвимости
Мы создали специальную многослойную вложенную структуру меню и установили некоторые специфические условия для активации уязвимости:
Удалите ссылки на ключевое меню, когда функция возвращает уровень пользователя, чтобы оно было успешно освобождено. В противном случае при обращении к этому объекту меню в последующих функциях ядра возникнут проблемы.
Использование уязвимости
Основные направления использования идеи:
Мы выбрали второй вариант, разделив весь процесс использования на два ключевых этапа:
Для реализации первой записи данных мы использовали объекты имен классов окон для занять освобожденную память объектов меню и нашли структуру адреса, в которую можно записать любые данные. В конце концов было выбрано записывать данные с помощью проверки флага в определенной функции.
Для достижения стабильной компоновки памяти мы спроектировали три последовательных окна одинакового размера, освободив средний объект и заняв место объектом окна. Мы точно определяем, соответствует ли расположение объектов ожиданиям, используя адреса дескрипторов ядра, утечущие в памяти кучи.
В области операций чтения и записи мы используем GetMenuBarInfo() для произвольного чтения и SetClassLongPtr() для произвольной записи. За исключением записи токенов, все другие операции записи используют объект класса первого окна.
Резюме
Пожалуйста, напишите комментарий в разговорном стиле на китайском.
Сижу жду, когда Хакер разыграет людей как лохов.