Хакер #305. Многошаговые SQL-инъекции
Турецкий ИБ-специалист представил PoC-эксплоит для обхода функции Microsoft Kernel Patch Protection (KPP), более известной под названием PatchGuard. Его инструмент получил имя ByePg, и эксплоит касается HalPrivateDispatchTable, чтобы в итоге позволяет вредоносному приложению вмешиваться в работу ядра.
Функция Microsoft Kernel Patch Protection (KPP), более известная под названием PatchGuard, была представлена в далеком 2005 году в Windows XP. Она доступна только для 64-разрядных версий Windows, и ее роль заключается в том, чтобы приложения не могли вмешиваться в работу ядра. В сущности, до выхода PatchGuard многие приложения позволяли себе модифицировать ядро Windows для облегчения своей работы или получения доступа к различным функциям. Антивирусное ПО, драйверы, игровые читы и малварь часто «патчили» ядро с совершенно разными целями. В частности, подобные техники очень любили разработчики руткитов, ведь это позволяло им внедрить малварь на уровне ОС, предоставив ей беспрепятственный доступ к машине жертвы.
Со временем PatchGuard отошел на второй план, на фоне многочисленных защитных механизмов Windows, но ИБ-специалисты продолжали использовать эту функциональность и искать новые способы обхода защиты. Так, в 2015 году, после релиза Windows 10 специалисты CyberArk представили обход PatchGuard названный GhostHook. Он использовал функцию Intel Processor Trace (PT), чтобы обойти PatchGuard и внеси исправления в ядро. Затем, летом текущего года, эксперт Riot Games нашел еще один способ обхода защиты, который был назван InfinityHook и использовал для работы NtTraceEvent API.
Теперь же был создан ByePg, использующий для обхода защиты HalPrivateDispatchTable. Разработчик эксплоита отмечает, что потенциал его использования ограничен исключительно креативностью того, кто его применяет. Хуже того, ByePG помогает обойти не только PatchGuard, но и Hypervisor-Protected Code Integrity (HVCI), функцию, которую Microsoft использует для занесения «плохих» драйверов в черный список.
Все три перечисленные метода обхода защитных функций стали достоянием общественности, так как Microsoft не спешит выпускать исправления и закрывать эти бреши (хотя заплатки для GhostHook и InfinityHook в конечном счете все же были созданы). Дело в том, что для работы таким эксплоитам нужны права администратора, из-за чего в компании отказываются классифицировать их как проблемы безопасности.
Разработчики Microsoft уверены, что если злоумышленник получил доступ к локальной системе с правами администратора, далее он может выполнять любые операции. Вопрос в том, что к PatchGuard эта «отговорка» вряд ли применима, ведь защитный механизм был предназначен именно для защиты ядра от процессов с высокими привилегиями, таких как драйверы или антивирусное ПО.
Также дело осложняется тем, что проблемы в PatchGuard не подпадают пол программу bug bounty, и специалисты, обнаруживавшие такие баги, не могут рассчитывать на денежное вознаграждение. Сотрудник Microsoft, пожелавший остаться неизвестным, рассказал журналистам издания ZDNet, что проблемы PatchGuard компанией вовсе не игнорируются, и исправления для них выходят, пусть и немного медленнее других патчей. Однако исследователи, зная, что не получат денег, а обнаруженным уязвимостям не будут присвоены идентификаторы CVE, предпочитают публиковать результаты свои изысканий в открытом доступе и в целом занимаются изучением подобных проблем весьма неохотно.