Анализ уязвимости 0day в системе Microsoft Windows: возможное значительное влияние на экосистему Web3
В прошлом месяце в обновлении безопасности Microsoft был обнаружен уязвимость повышения привилегий win32k, которая используется в дикой природе. Эта уязвимость, похоже, не может быть эксплуатирована в версиях Windows 11, а существует только в более ранних системах. В этой статье будет проанализировано, как злоумышленники могут продолжать использовать эту уязвимость на фоне продолжающихся улучшений новых мер смягчения. Анализ проводился в среде Windows Server 2016.
0day уязвимость относится к уязвимостям, которые не были раскрыты и исправлены, и могут быть злонамеренно использованы злоумышленниками без обнаружения, часто обладая высокой разрушительной силой. Обнаруженная на этот раз 0day уязвимость существует на уровне операционной системы Windows, и хакеры могут получить полный контроль над Windows через эту уязвимость. Это может привести к кражам личной информации, сбоям системы, потере данных, финансовым убыткам и внедрению вредоносного ПО. С точки зрения Web3, приватные ключи пользователей могут быть украдены, а цифровые активы переведены. В более широком масштабе эта уязвимость может даже повлиять на всю экосистему Web3, работающую на инфраструктуре Web2.
Анализ патча показал, что проблема заключалась в том, что счетчик ссылок объекта был обработан один раз больше. Судя по ранним комментариям в коде, в предыдущем коде только блокировался объект окна, но не блокировался объект меню в объекте окна, что могло привести к неправильной ссылке на объект меню.
Для проверки уязвимости мы реализовали концептуальную проверку ( PoC ). Создавая специальные многоуровневые вложенные меню, можно вызвать уязвимость в функции xxxEnableMenuItem. Ключевым моментом является удаление ссылочной зависимости между меню C и меню B в подходящий момент, что позволяет успешно освободить объект меню C. Таким образом, когда функция xxxEnableMenuItem возвращает значение, объект меню C, на который ссылаются, уже недействителен.
При реализации эксплуатации уязвимости (Exp) мы в основном рассматривали два варианта: выполнение кода shellcode и использование операций чтения и записи для изменения адреса токена. В конечном итоге был выбран второй вариант, так как этот метод все еще имеет открытые exp для ссылки в последние два года. Весь процесс эксплуатации делится на два этапа: сначала используется уязвимость UAF для управления значением cbwndextra, а затем создаются стабильные операции чтения и записи.
С помощью тщательно спроектированной структуры памяти мы можем добиться точного контроля над целевым объектом. Используя функции GetMenuBarInfo() и SetClassLongPtr(), мы можем реализовать произвольные операции чтения и записи. За исключением записи, зависящей от объекта класса второго окна, все остальные записи используют объект класса первого окна с использованием смещения.
В общем, хотя уязвимость win32k существует уже давно, Microsoft пытается переписать эту часть кода ядра на Rust, и в будущем в новых системах такие уязвимости могут быть устранены. В настоящее время процесс эксплуатации таких уязвимостей в основном не сложен и в значительной степени зависит от утечки адресов десктопных хендлов кучи. Для устаревших систем это все еще представляет собой небезопасную угрозу.
С точки зрения обнаружения уязвимостей, более совершенное обнаружение покрытия кода может помочь в выявлении таких уязвимостей. Для обнаружения эксплуатации уязвимостей, помимо внимания к ключевым точкам функций, вызывающим уязвимости, также следует целенаправленно проверять аномальное размещение в памяти и аномальные смещения чтения/записи дополнительных данных класса окон, что может быть одним из эффективных способов выявления уязвимостей того же типа.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
10 Лайков
Награда
10
4
Поделиться
комментарий
0/400
LiquidityWitch
· 07-12 03:38
темные времена надвигаются... демоны 0day feast на наших приватных ключах rn
Уязвимость Windows 0day угрожает безопасности Web3, риск кражи Закрытый ключ Подъем
Анализ уязвимости 0day в системе Microsoft Windows: возможное значительное влияние на экосистему Web3
В прошлом месяце в обновлении безопасности Microsoft был обнаружен уязвимость повышения привилегий win32k, которая используется в дикой природе. Эта уязвимость, похоже, не может быть эксплуатирована в версиях Windows 11, а существует только в более ранних системах. В этой статье будет проанализировано, как злоумышленники могут продолжать использовать эту уязвимость на фоне продолжающихся улучшений новых мер смягчения. Анализ проводился в среде Windows Server 2016.
0day уязвимость относится к уязвимостям, которые не были раскрыты и исправлены, и могут быть злонамеренно использованы злоумышленниками без обнаружения, часто обладая высокой разрушительной силой. Обнаруженная на этот раз 0day уязвимость существует на уровне операционной системы Windows, и хакеры могут получить полный контроль над Windows через эту уязвимость. Это может привести к кражам личной информации, сбоям системы, потере данных, финансовым убыткам и внедрению вредоносного ПО. С точки зрения Web3, приватные ключи пользователей могут быть украдены, а цифровые активы переведены. В более широком масштабе эта уязвимость может даже повлиять на всю экосистему Web3, работающую на инфраструктуре Web2.
Анализ патча показал, что проблема заключалась в том, что счетчик ссылок объекта был обработан один раз больше. Судя по ранним комментариям в коде, в предыдущем коде только блокировался объект окна, но не блокировался объект меню в объекте окна, что могло привести к неправильной ссылке на объект меню.
Для проверки уязвимости мы реализовали концептуальную проверку ( PoC ). Создавая специальные многоуровневые вложенные меню, можно вызвать уязвимость в функции xxxEnableMenuItem. Ключевым моментом является удаление ссылочной зависимости между меню C и меню B в подходящий момент, что позволяет успешно освободить объект меню C. Таким образом, когда функция xxxEnableMenuItem возвращает значение, объект меню C, на который ссылаются, уже недействителен.
При реализации эксплуатации уязвимости (Exp) мы в основном рассматривали два варианта: выполнение кода shellcode и использование операций чтения и записи для изменения адреса токена. В конечном итоге был выбран второй вариант, так как этот метод все еще имеет открытые exp для ссылки в последние два года. Весь процесс эксплуатации делится на два этапа: сначала используется уязвимость UAF для управления значением cbwndextra, а затем создаются стабильные операции чтения и записи.
С помощью тщательно спроектированной структуры памяти мы можем добиться точного контроля над целевым объектом. Используя функции GetMenuBarInfo() и SetClassLongPtr(), мы можем реализовать произвольные операции чтения и записи. За исключением записи, зависящей от объекта класса второго окна, все остальные записи используют объект класса первого окна с использованием смещения.
В общем, хотя уязвимость win32k существует уже давно, Microsoft пытается переписать эту часть кода ядра на Rust, и в будущем в новых системах такие уязвимости могут быть устранены. В настоящее время процесс эксплуатации таких уязвимостей в основном не сложен и в значительной степени зависит от утечки адресов десктопных хендлов кучи. Для устаревших систем это все еще представляет собой небезопасную угрозу.
С точки зрения обнаружения уязвимостей, более совершенное обнаружение покрытия кода может помочь в выявлении таких уязвимостей. Для обнаружения эксплуатации уязвимостей, помимо внимания к ключевым точкам функций, вызывающим уязвимости, также следует целенаправленно проверять аномальное размещение в памяти и аномальные смещения чтения/записи дополнительных данных класса окон, что может быть одним из эффективных способов выявления уязвимостей того же типа.