Анализ уязвимости уровня 0day в системе Microsoft Windows: полный контроль над системой
Недавно в безопасности, выпущенной Microsoft, был исправлен уязвимость повышения привилегий Win32k, которая использовалась злоумышленниками. Эта уязвимость существует только в ранних версиях Windows и не может быть вызвана на Windows 11. В этой статье будет проанализировано, как злоумышленники могут продолжать использовать эту уязвимость на фоне постоянно усиливающейся безопасности.
Фон уязвимости
Это уязвимость 0day на уровне системы Windows, и хакеры могут получить полный контроль над Windows через эту уязвимость. Последствия контроля могут включать кражу личной информации, потерю данных из-за сбоя системы, финансовые потери, внедрение вредоносного ПО и т.д. От кражи закрытого ключа и переноса цифровых активов до потенциального влияния на всю экосистему Web3, работающую на инфраструктуре Web2.
Анализ патчей
Анализ патча показал, что это проблема с многократной обработкой счетчика ссылок на объект. Из ранних комментариев в исходном коде видно, что предыдущий код блокировал только объект окна, не блокируя объект меню в окне, что могло привести к неверной ссылке на объект меню.
Принцип уязвимости
Дальнейший анализ показал, что переданный в xxxEnableMenuItem() элемент меню обычно уже заблокирован в верхнем уровне функции. А MenuItemState, возвращаемый в xxxEnableMenuItem, может иметь два варианта: главное меню окна или подменю в меню.
Доказательство концепции ( PoC ) реализация
PoC создал специальную четырехуровневую структуру меню и установил некоторые специфические условия для проверки через функцию xxxEnableMenuItem. Ключевым шагом является удаление ссылочной связи между меню C и меню B и освобождение меню C, когда функция xxxRedrawTitle возвращает уровень пользователя. Таким образом, при последующем обращении к меню C в функции xxxEnableMenuItem этот объект уже недействителен.
Использование уязвимости ( Exp )
Существует два основных подхода: выполнение кода shellcode или использование примитивов чтения и записи для изменения адреса токена. Учитывая совместимость, был выбран второй подход. В целом процесс делится на два этапа: использование уязвимости UAF для контроля значения cbwndextra, а затем создание стабильных примитивов чтения и записи.
Ключевые моменты включают:
Освобожденный объект меню через объект класса окна
Найдите место для записи данных в функции xxxRedrawWindow.
Создание стабильной структуры памяти, включая три последовательных объекта HWND
Используйте GetMenuBarInfo() и SetClassLongPtr() для реализации чтения и записи примитивов.
Резюме
Microsoft перестраивает код, связанный с Win32k, на Rust, в будущем такие уязвимости могут быть устранены.
Процесс эксплуатации уязвимости не слишком сложен, в основном зависит от утечки адреса десктопного стека.
Обнаружение уязвимостей может зависеть от более полной проверки покрытия кода
Обнаружение аномального распределения памяти и чтения/записи данных окна помогает выявить аналогичные уязвимости.
Хотя такие уязвимости постепенно исправляются в новых системах, они все еще представляют собой угрозу безопасности для устаревших систем. Улучшение механизмов обнаружения и защиты от уязвимостей по-прежнему важно.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
8 Лайков
Награда
8
4
Поделиться
комментарий
0/400
UncleLiquidation
· 9ч назад
Старую систему даже собаки не используют
Посмотреть ОригиналОтветить0
CommunityLurker
· 9ч назад
Снова появилась возможность заработать
Посмотреть ОригиналОтветить0
ser_ngmi
· 10ч назад
И только у мозга Microsoft с его проблемами есть возможность создать такие уязвимости.
Посмотреть ОригиналОтветить0
AirdropHunter9000
· 10ч назад
Старая система все еще не обновлена? Не делая ничего, не умрешь.
Анализ уязвимости 0day на уровне системы Windows: злоумышленники могут полностью контролировать устаревшие системы
Анализ уязвимости уровня 0day в системе Microsoft Windows: полный контроль над системой
Недавно в безопасности, выпущенной Microsoft, был исправлен уязвимость повышения привилегий Win32k, которая использовалась злоумышленниками. Эта уязвимость существует только в ранних версиях Windows и не может быть вызвана на Windows 11. В этой статье будет проанализировано, как злоумышленники могут продолжать использовать эту уязвимость на фоне постоянно усиливающейся безопасности.
Фон уязвимости
Это уязвимость 0day на уровне системы Windows, и хакеры могут получить полный контроль над Windows через эту уязвимость. Последствия контроля могут включать кражу личной информации, потерю данных из-за сбоя системы, финансовые потери, внедрение вредоносного ПО и т.д. От кражи закрытого ключа и переноса цифровых активов до потенциального влияния на всю экосистему Web3, работающую на инфраструктуре Web2.
Анализ патчей
Анализ патча показал, что это проблема с многократной обработкой счетчика ссылок на объект. Из ранних комментариев в исходном коде видно, что предыдущий код блокировал только объект окна, не блокируя объект меню в окне, что могло привести к неверной ссылке на объект меню.
Принцип уязвимости
Дальнейший анализ показал, что переданный в xxxEnableMenuItem() элемент меню обычно уже заблокирован в верхнем уровне функции. А MenuItemState, возвращаемый в xxxEnableMenuItem, может иметь два варианта: главное меню окна или подменю в меню.
Доказательство концепции ( PoC ) реализация
PoC создал специальную четырехуровневую структуру меню и установил некоторые специфические условия для проверки через функцию xxxEnableMenuItem. Ключевым шагом является удаление ссылочной связи между меню C и меню B и освобождение меню C, когда функция xxxRedrawTitle возвращает уровень пользователя. Таким образом, при последующем обращении к меню C в функции xxxEnableMenuItem этот объект уже недействителен.
Использование уязвимости ( Exp )
Существует два основных подхода: выполнение кода shellcode или использование примитивов чтения и записи для изменения адреса токена. Учитывая совместимость, был выбран второй подход. В целом процесс делится на два этапа: использование уязвимости UAF для контроля значения cbwndextra, а затем создание стабильных примитивов чтения и записи.
Ключевые моменты включают:
Резюме
Хотя такие уязвимости постепенно исправляются в новых системах, они все еще представляют собой угрозу безопасности для устаревших систем. Улучшение механизмов обнаружения и защиты от уязвимостей по-прежнему важно.