Джеймс Форшоу, один из «этичных хакеров» проекта Google Project Zero, обнаружил новый класс уязвимостей, которые затрагивают драйверы Windows уровня ядра. В случае успешной эксплуатации эти бреши обеспечат злоумышленнику эскалацию привилегий.
Уязвимости присутствуют из-за отсутствия необходимых проверок во время обработки специфических запросов. Windows использует поля PreviousMode для установки UserMode или KernelMode — следовательно, определяет, поступили ли аргументы вызова от надежного или ненадежного источника.
Этот же механизм используется для создания и открытия файлов, где код уровня ядра может выбрать из различных функций API, включая функцию IopCreateFile. В этом случае PreviousMode назначается специальной переменной, чтобы определить, проверять ли параметры на валидность.
Windows также использует эту переменную для проверки привилегий, если это UserMode. Таким образом, параметр Options в IopCreateFile становится доступным для API-функций, которые могут быть вызваны только из режима ядра — это позволяет установить KernelMode в качестве AccessMode.
Форшоу опубликовал технические детали уязвимости, с которыми можно ознакомиться по этой ссылке.
Microsoft в курсе данной проблемы, разработчики пообещали устранить ее в будущих наборах патчей для Windows.