Анализ уязвимости 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, и в будущем в новых системах такие уязвимости могут быть устранены. В настоящее время процесс эксплуатации таких уязвимостей в основном не сложен и в значительной степени зависит от утечки адресов десктопных хендлов кучи. Для устаревших систем это все еще представляет собой небезопасную угрозу.
С точки зрения обнаружения уязвимостей, более совершенное обнаружение покрытия кода может помочь в выявлении таких уязвимостей. Для обнаружения эксплуатации уязвимостей, помимо внимания к ключевым точкам функций, вызывающим уязвимости, также следует целенаправленно проверять аномальное размещение в памяти и аномальные смещения чтения/записи дополнительных данных класса окон, что может быть одним из эффективных способов выявления уязвимостей того же типа.
Посмотреть Оригинал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Уязвимость 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, и в будущем в новых системах такие уязвимости могут быть устранены. В настоящее время процесс эксплуатации таких уязвимостей в основном не сложен и в значительной степени зависит от утечки адресов десктопных хендлов кучи. Для устаревших систем это все еще представляет собой небезопасную угрозу.
С точки зрения обнаружения уязвимостей, более совершенное обнаружение покрытия кода может помочь в выявлении таких уязвимостей. Для обнаружения эксплуатации уязвимостей, помимо внимания к ключевым точкам функций, вызывающим уязвимости, также следует целенаправленно проверять аномальное размещение в памяти и аномальные смещения чтения/записи дополнительных данных класса окон, что может быть одним из эффективных способов выявления уязвимостей того же типа.