Анализ серьезной уязвимости системы Microsoft Windows: полное управление системой и угроза безопасности Web3
В прошлом месяце в обновлении безопасности, выпущенном Microsoft, был исправлен уязвимость повышения привилегий в системе Windows, которая использовалась хакерами. Эта уязвимость в основном присутствует в ранних версиях Windows и не может быть вызвана в Windows 11.
Такие уязвимости в операционных системах Windows существуют уже долгое время. В этой статье мы проанализируем, как хакеры могут продолжать использовать эту уязвимость на фоне постоянно усиливающейся безопасности. Наш анализ будет проводиться в среде Windows Server 2016.
Эта уязвимость относится к нулевым уязвимостям, то есть к нераскрытым и неисправленным уязвимостям. Нулевые уязвимости могут быть использованы злоумышленниками без ведома пользователя, что делает их крайне разрушительными. С помощью этой уязвимости в системе Windows хакеры могут получить полный контроль над системой.
Серьезные последствия контроля системы хакерами, включая кражу личной информации, сбой системы и потерю данных, финансовые потери, внедрение вредоносного ПО и т.д. Для частных пользователей приватные ключи к криптовалюте могут быть украдены, цифровые активы могут быть перемещены. В более широком плане эта уязвимость может угрожать проектам Web3, которые зависят от инфраструктуры Web2.
Анализируя код патча, проблема, похоже, заключается в том, что счетчик ссылок на объект был обработан один раз слишком много. Согласно комментариям к исходному коду win32k, изначальный код блокировал только объект окна, не блокируя объект меню внутри объекта окна, что могло привести к неправильной ссылке на объект меню.
При реализации концептуального доказательства уязвимости ( PoC ) мы обнаружили проблему с обработкой объекта меню в функции xxxEnableMenuItem. Возвращаемое меню может быть основным меню окна, подменю или даже подподменю. Мы сконструировали специальную четырехуровневую структуру меню для активации уязвимости.
Перед использованием (Exp) мы в основном рассматривали два направления: выполнение кода shellcode и использование примитивов чтения и записи для изменения адреса токена. Учитывая целесообразность, мы выбрали последнее. Весь процесс эксплуатации делится на два этапа: эксплуатация уязвимости UAF для контроля значения cbwndextra, а затем создание стабильных примитивов чтения и записи.
Для реализации первой записи данных мы используем объект имени окна в классе окна WNDClass, занимающий освобожденный объект меню. Тщательно конструируя макет памяти, мы можем контролировать данные памяти соседних объектов, чтобы изменить значение cb-extra в HWNDClass.
Мы разработали макет памяти для трех последовательных объектов HWND, который занимает объект HWNDClass после освобождения среднего объекта. Предыдущий объект HWND используется для проверки через функцию, а следующий - для окончательной записи и чтения примитивов. С помощью утекшего адреса дескриптора ядра мы можем точно контролировать порядок размещения объектов.
В отношении чтения и записи原语 мы используем GetMenuBarInfo() для произвольного чтения, а SetClassLongPtr() для произвольной записи. Кроме записи токена, все остальные записи осуществляются с использованием смещения объекта класса первого окна.
В целом, хотя в предварительной версии Windows 11 началась переработка кода win32k с использованием Rust, такие уязвимости все еще представляют собой угрозу безопасности для старых систем. Процесс эксплуатации уязвимости относительно прост и в основном зависит от утечки адреса дескриптора кучи рабочего стола. Открытие этой уязвимости, возможно, стало возможным благодаря более совершенной проверке покрытия кода. При обнаружении уязвимостей, помимо внимания к ключевым точкам вызова функций, также следует обращать внимание на аномальную компоновку памяти и операции чтения/записи данных.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
16 Лайков
Награда
16
6
Поделиться
комментарий
0/400
FlashLoanLord
· 5ч назад
Снова пришло время менять яблоки.
Посмотреть ОригиналОтветить0
LightningSentry
· 5ч назад
Не обновляясь на win11, вы всё ещё смеете быть неудачниками? Вас должны обобрать.
Серьезная уязвимость Windows угрожает безопасности Web3, Хакер может полностью контролировать систему
Анализ серьезной уязвимости системы Microsoft Windows: полное управление системой и угроза безопасности Web3
В прошлом месяце в обновлении безопасности, выпущенном Microsoft, был исправлен уязвимость повышения привилегий в системе Windows, которая использовалась хакерами. Эта уязвимость в основном присутствует в ранних версиях Windows и не может быть вызвана в Windows 11.
Такие уязвимости в операционных системах Windows существуют уже долгое время. В этой статье мы проанализируем, как хакеры могут продолжать использовать эту уязвимость на фоне постоянно усиливающейся безопасности. Наш анализ будет проводиться в среде Windows Server 2016.
Эта уязвимость относится к нулевым уязвимостям, то есть к нераскрытым и неисправленным уязвимостям. Нулевые уязвимости могут быть использованы злоумышленниками без ведома пользователя, что делает их крайне разрушительными. С помощью этой уязвимости в системе Windows хакеры могут получить полный контроль над системой.
Серьезные последствия контроля системы хакерами, включая кражу личной информации, сбой системы и потерю данных, финансовые потери, внедрение вредоносного ПО и т.д. Для частных пользователей приватные ключи к криптовалюте могут быть украдены, цифровые активы могут быть перемещены. В более широком плане эта уязвимость может угрожать проектам Web3, которые зависят от инфраструктуры Web2.
Анализируя код патча, проблема, похоже, заключается в том, что счетчик ссылок на объект был обработан один раз слишком много. Согласно комментариям к исходному коду win32k, изначальный код блокировал только объект окна, не блокируя объект меню внутри объекта окна, что могло привести к неправильной ссылке на объект меню.
При реализации концептуального доказательства уязвимости ( PoC ) мы обнаружили проблему с обработкой объекта меню в функции xxxEnableMenuItem. Возвращаемое меню может быть основным меню окна, подменю или даже подподменю. Мы сконструировали специальную четырехуровневую структуру меню для активации уязвимости.
Перед использованием (Exp) мы в основном рассматривали два направления: выполнение кода shellcode и использование примитивов чтения и записи для изменения адреса токена. Учитывая целесообразность, мы выбрали последнее. Весь процесс эксплуатации делится на два этапа: эксплуатация уязвимости UAF для контроля значения cbwndextra, а затем создание стабильных примитивов чтения и записи.
Для реализации первой записи данных мы используем объект имени окна в классе окна WNDClass, занимающий освобожденный объект меню. Тщательно конструируя макет памяти, мы можем контролировать данные памяти соседних объектов, чтобы изменить значение cb-extra в HWNDClass.
Мы разработали макет памяти для трех последовательных объектов HWND, который занимает объект HWNDClass после освобождения среднего объекта. Предыдущий объект HWND используется для проверки через функцию, а следующий - для окончательной записи и чтения примитивов. С помощью утекшего адреса дескриптора ядра мы можем точно контролировать порядок размещения объектов.
В отношении чтения и записи原语 мы используем GetMenuBarInfo() для произвольного чтения, а SetClassLongPtr() для произвольной записи. Кроме записи токена, все остальные записи осуществляются с использованием смещения объекта класса первого окна.
В целом, хотя в предварительной версии Windows 11 началась переработка кода win32k с использованием Rust, такие уязвимости все еще представляют собой угрозу безопасности для старых систем. Процесс эксплуатации уязвимости относительно прост и в основном зависит от утечки адреса дескриптора кучи рабочего стола. Открытие этой уязвимости, возможно, стало возможным благодаря более совершенной проверке покрытия кода. При обнаружении уязвимостей, помимо внимания к ключевым точкам вызова функций, также следует обращать внимание на аномальную компоновку памяти и операции чтения/записи данных.