Анализ уязвимости нулевого дня в Windows: экосистема Web3 может понести серьезный ущерб

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

Анализ нулевого дня уязвимости в системе Microsoft Windows: может оказать серьезное влияние на экосистему Web3

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

Мы завершили все анализы в среде Windows Server 2016.

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

Последствия контроля системы злоумышленниками могут быть серьезными, включая, помимо прочего, утечку личной информации, сбой системы, потерю данных, финансовые потери, внедрение вредоносного ПО и т.д. Для индивидуальных пользователей это может привести к краже личных ключей к криптовалюте и переводу цифровых активов; в более широком масштабе эта уязвимость может даже повлиять на всю экосистему Web3, основанную на инфраструктуре Web2.

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

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

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

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

Доказательство концепции эксплуатации уязвимости ( PoC ) реализация

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

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

В PoC мы построили специальную четырехуровневую структуру меню, где соседние меню находятся в родительско-дочерних отношениях. Эти меню имеют некоторые специфические характеристики для проверки и определения с помощью функции xxxEnableMenuItem.

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

![Numen эксклюзив: уязвимость 0day от Microsoft может разрушить Web3 на системном и физическом уровнях])https://img-cdn.gateio.im/webp-social/moments-171ea7cb7c6f7190c3f49a2b914eed04.webp(

Уязвимость ) Эксплуатация ( реализовать

Перед тем как определиться с методами эксплуатации уязвимости, мы обычно проводим некоторые теоретические предварительные оценки, чтобы избежать потерь времени на неприемлемые решения. В данном случае использование уязвимости рассматривается в двух направлениях:

  1. Выполнение кода shellcode: см. ранние CVE-2017-0263 и CVE-2016-0167. Однако в более поздних версиях Windows этот метод может столкнуться с некоторыми трудными для решения проблемами.

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

Мы разделим весь процесс использования на два вопроса: как использовать уязвимость UAF для управления значением cbwndextra, а также как реализовать стабильные операции чтения и записи после управления значением cbwndextra.

![Numen эксклюзив: уязвимость 0day Microsoft может нарушить Web3 на системном и физическом уровнях])https://img-cdn.gateio.im/webp-social/moments-66af34ab04bec21e27be99bbe29c552a.webp(

В конечном итоге мы выбрали запись cb-extra HWNDClass через операцию AND 2 с флагом в функции xxxRedrawWindow. Это связано с тем, что смещение cb-extra HWNDClass невелико, и мы можем контролировать данные памяти предыдущего объекта через размещение памяти, тем самым определяя флаги объекта в функции xxxRedrawWindow.

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

![Numen эксклюзив: уязвимость 0day Microsoft может разрушить игры Web3 на системном и физическом уровнях])https://img-cdn.gateio.im/webp-social/moments-1cc94ddafacec491507491eef9195858.webp(

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

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

![Numen эксклюзив: уязвимость 0day Microsoft может перевернуть игру Web3 на системном и физическом уровне])https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(

Резюме

  1. Текущая ситуация с win32k: Microsoft пытается переписать соответствующий код ядра в предварительной версии Windows 11 с использованием Rust, в будущем новая система может исключить подобные уязвимости.

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

  3. Обнаружение уязвимостей: предполагается, что это может зависеть от более совершенного контроля покрытия кода. Как только API системы сможет достичь самой глубокой точки уязвимости в пути выполнения целевой функции, и объект окна находится в состоянии многократной вложенной ссылки, эта уязвимость может быть обнаружена с помощью模糊测试.

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

![Numen эксклюзив: уязвимость 0day от Microsoft может разрушить Web3 на системном и физическом уровнях])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(

![Numen эксклюзив: уязвимость 0day от Microsoft может разрушить Web3 на системном и физическом уровнях])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(

TOKEN-1.62%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 2
  • Поделиться
комментарий
0/400
AltcoinHuntervip
· 07-20 19:35
Смотреть, но не говорить, мир криптовалют старые неудачники.
Посмотреть ОригиналОтветить0
MelonFieldvip
· 07-20 19:31
Системе что-то не так~
Посмотреть ОригиналОтветить0
  • Закрепить