Анализ уязвимости 0day в ранних версиях Microsoft Windows: от повышения привилегий до полного использования

robot
Генерация тезисов в процессе

Анализ и использование уязвимости 0day в системе Microsoft Windows

Недавно в обновлении безопасности, выпущенном Microsoft, был исправлен эксплуатируемый уязвимость повышения привилегий win32k. Эта уязвимость присутствует только в ранних версиях операционной системы Windows и не может быть активирована в Windows 11. В данной статье будет проанализировано, как злоумышленники продолжают использовать подобные уязвимости на фоне постоянного совершенствования современных средств защиты.

Numen эксклюзив: уязвимость 0day Microsoft может разрушить Web3 на системном и физическом уровнях

Фон уязвимости

Уязвимость 0day относится к нераскрытым и неустраненным уязвимостям в безопасности, аналогичным концепции T+0 торговли на финансовых рынках. Как только такие уязвимости будут обнаружены, они могут быть использованы злоумышленниками незаметно, что может привести к огромному ущербу.

Обнаруженная уязвимость 0day в системе Windows позволяет злоумышленникам получить полный контроль над системой. Это может привести к утечке личной информации, сбоям системы, потере данных, материальным убыткам и другим серьезным последствиям. С точки зрения Web3 это может привести к краже приватных ключей, перемещению цифровых активов, а также повлиять на всю экосистему Web3, основанную на инфраструктуре Web2.

Numen эксклюзив: уязвимость 0day от Microsoft может разрушить Web3 на системном и физическом уровнях

Анализ патчей

Анализ кода патча показал, что проблема заключается в многократной обработке подсчета ссылок на объекты. Изучив комментарии в раннем исходном коде, можно понять, что ранее код блокировал только объект окна, не блокируя объект меню в окне, что могло привести к ошибочной ссылке на объект меню.

Numen эксклюзив: уязвимость 0day от Microsoft может разрушить Web3 игру на системном и физическом уровнях

Воспроизведение уязвимости

Анализируя контекст уязвимой функции, было обнаружено, что переданное xxxEnableMenuItem() меню обычно было заблокировано в верхнем уровне функции. Дальнейший анализ показал, что меню, возвращаемое функцией MenuItemState, может быть как основным меню окна, так и подменю или подподменю.

Чтобы вызвать уязвимость, была создана специальная четырехуровневая структура меню с установленными следующими характеристиками:

  1. ID нижнего уровня меню D должен быть типом системного меню
  2. Верхнее меню A также должно быть системным меню, но необходимо удалить соответствующий тип системного меню.
  3. Удалить ссылку меню C в меню B
  4. Наличие меню B, похоже, способствует выпуску меню C

При возврате пользовательского уровня из xxxRedrawTitle удалите ссылочные отношения меню C и B и освободите меню C. Таким образом, когда функция xxxEnableMenuItem возвращается, объект меню C, на который ссылаются, уже недействителен.

Numen эксклюзив: уязвимость 0day Microsoft может перевернуть игру Web3 на системном и физическом уровнях

Эксплуатация уязвимостей

Эксплуатация уязвимостей в основном рассматривает два направления:

  1. Выполнение кода shellcode: см. ранние уязвимости, такие как CVE-2017-0263, однако в более поздних версиях Windows могут возникнуть проблемы с точкой входа и безопасностью SMEP.

  2. Использование операций чтения и записи для изменения адреса токена: в последние годы было несколько публичных примеров, на которые можно сослаться, которые обладают универсальностью в отношении раскладки памяти на настольных ПК и операций чтения и записи. Ключевым моментом является анализ того, как впервые контролировать cbwndextra как очень большое значение при повторном использовании памяти UAF.

В этом случае используется второй вариант, который разделяет весь процесс на два этапа:

  1. Использование уязвимости UAF для контроля значения cbwndextra
  2. Управление cbwndextra для реализации стабильных операций чтения и записи

Numen эксклюзив: уязвимость 0day Microsoft может подорвать Web3 на системном и физическом уровнях

Первичная запись данных

После срабатывания уязвимости система может неправильно использовать данные управляемого объекта окна в MNGetPopupFromMenu() и xxxMNUpdateShownMenu(). Мы используем объект названия окна в классе окна WNDClass, занимающий освобожденный объект меню.

Ключевым моментом является найти место в структуре адреса, который мы можем построить, где можно записывать данные произвольным образом, даже если это всего лишь один байт. В конечном итоге был выбран вариант в функции xxxRedrawWindow, который контролирует данные памяти предыдущего объекта через разметку памяти для определения объекта по флагам в функции.

стабильная память

Создайте как минимум три последовательных объекта HWND по 0x250 байт, освободите один из них и используйте объект HWNDClass. Данные в конце предыдущего объекта HWND используются для проверки по флагам в xxxRedrawWindow, меню объекта последнего HWND и объект HWNDClass используются в качестве конечного средства записи и чтения.

Точно определить, расположены ли запрашиваемые объекты окон в ожидаемом порядке, можно с помощью утечки адреса ядровой дескриптора, находящегося в оперативной памяти.

Чтение и запись примитивов

Для произвольного чтения используйте GetMenuBarInfo(), для произвольной записи используйте SetClassLongPtr(). За исключением записи, заменяющей TOKEN, все остальные записи выполняются с использованием смещения на объекте класса первого объекта окна.

Numen эксклюзив: уязвимость 0day Microsoft может разрушить Web3 на системном и физическом уровне

Резюме

  1. Уязвимость win32k имеет долгую историю, но Microsoft пытается переписать соответствующий код на Rust, и в будущем в новых системах такие уязвимости могут быть устранены.

  2. Процесс эксплуатации этого уязвимости относительно прост, основная сложность заключается в том, как контролировать первую запись. Это сильно зависит от утечки адреса дескриптора кучи на настольной системе, что по-прежнему является проблемой безопасности старых систем.

  3. Обнаружение этого уязвимости, возможно, стало результатом более совершенного контроля покрытия кода.

  4. Для обнаружения уязвимостей, помимо внимания к ключевым точкам триггерных функций, также следует обратить внимание на аномальные схемы памяти и смещения чтения/записи данных окон.

Numen Эксклюзив: Уязвимость 0day от Microsoft может разрушить Web3 на системном и физическом уровнях

Numen эксклюзив: уязвимость 0day Microsoft может разрушить Web3 на системном и физическом уровнях

TOKEN2.22%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 5
  • Поделиться
комментарий
0/400
FarmToRichesvip
· 8ч назад
Хорошо, 11 не пострадает.
Посмотреть ОригиналОтветить0
ChainSauceMastervip
· 08-05 20:25
Что снова с старым вином? Каждый день есть уязвимости.
Посмотреть ОригиналОтветить0
FloorPriceWatchervip
· 08-05 20:23
win11 избежал беды
Посмотреть ОригиналОтветить0
MEVSandwichVictimvip
· 08-05 20:21
Уязвимости пакета, много спектаклей. Кто торгует, тот разыгрывайте людей как лохов.
Посмотреть ОригиналОтветить0
CryptoCrazyGFvip
· 08-05 20:13
11 уже не так хороша, да?
Посмотреть ОригиналОтветить0
  • Закрепить