Все приложения, включая ОС, содержат уязвимости, поэтому регулярные обновления для их устранения — один из ключевых принципов кибербезопасности. Именно на механизм обновлений нацелились авторы атаки Windows Downdate, поставив себе задачу незаметно «откатить» актуальную версию Windows до старой, содержащей уязвимые версии служб и файлов. После выполнения этой атаки полностью обновленная система оказывается вновь уязвимой к старым и хорошо изученным эксплойтам и ее можно легко скомпрометировать до самого глубокого уровня, реализовав даже компрометацию гипервизора и безопасного ядра и кражу учетных данных. При этом обычные инструменты проверки обновлений и «здоровья» системы будут рапортовать, что все полностью актуально и обновлять нечего.
Механика атаки
Исследователи фактически нашли два разных дефекта с немного различным механизмом работы. Одна уязвимость, получившая идентификатор CVE-2024-21302 и чаще называемая Downdate, основана на недочете в процессе установки обновлений. Хотя компоненты, получаемые во время обновления, контролируются, защищены от модификаций, подписаны цифровой подписью, на одном из промежуточных этапов установки (между перезагрузками) процедура обновления создает, а затем применяет файл со списком планируемых действий (pending.xml). Если создать этот файл самостоятельно и занести информацию о нем в реестр, то доверенный установщик (Windows Modules Installer service, TrustedInstaller) выполнит инструкции из него при перезагрузке.
Вообще-то, содержимое pending.xml верифицируется, но на предыдущих этапах установки, TrustedInstaller не делает проверку заново. Прописать в него что попало и установить таким образом произвольные файлы не получится, они должны быть подписаны Microsoft, но вот заменить системные файлы более старыми файлами самой Microsoft вполне можно. Таким образом, система может быть вновь подвержена давно исправленным уязвимостям, включая критические. Чтобы добавить в реестр необходимые ключи, касающиеся pending.xml, требуются права администратора, а затем еще потребуется инициировать перезагрузку системы. Но это единственное весомое ограничение для проведения атаки. Повышенные права (при которых Windows запрашивает у администратора дополнительное разрешение на затемненном экране) для атаки не требуются, для большинства средств защиты выполняемые атакой действия также не входят в разряд подозрительных.
Второй дефект, CVE-2024-38202, основан на подмене содержимого папки Windows.old, в которой система обновления хранит старую версию Windows. Хотя файлы в этой папке невозможно модифицировать без специальных привилегий, обычный пользователь может переименовать папку целиком, создать Windows.old заново и положить в нее нужные ему файлы, например устаревшие опасные версии системных файлов Windows. Затем нужно инициировать восстановление системы — и откат Windows к уязвимой версии состоится. Для восстановления системы нужны определенные права, но это не права администратора, ими иногда обладают и обычные пользователи.
Обход мер защиты VBS и кража паролей
С 2015 года архитектура Windows переработана таким образом, чтобы компрометация ядра Windows не приводила к полной компрометации системы. Для этого применяется целый ряд мер, объединенных под названием Virtualization Based Security. В числе прочего гипервизор системы применяется для изоляции компонентов ОС и создания защищенного ядра (secure kernel), в котором выполняются наиболее чувствительные операции, хранятся пароли и так далее.
Чтобы злоумышленники не отключали VBS, Windows можно настроить так, чтобы это было невозможно сделать даже с правами администратора. Только перезагрузив компьютер в специальном режиме и дав с клавиатуры команду, эту систему можно отключить. Данная функция называется UEFI Lock. Атака Windows Downdate позволяет обойти и это ограничение. Реализация защиты VBS не проверяет файлы системы на актуальность, поэтому подмена их старыми уязвимыми версиями проходит без каких-либо внешних эффектов и ошибок. То есть отключения VBS формально не происходит, но эта защита больше не выполняет свои функции.
В результате атаки становится возможно подменить файлы безопасного ядра и гипервизора версиями двухлетней давности, содержащими сразу несколько уязвимостей, эксплуатация которых приводит к повышению привилегий. В результате такой атаки злоумышленник может получить максимальные привилегии в системе, полный доступ к гипервизору и процессам защиты памяти, возможность легко считать из памяти имена пользователей, хешированные пароли, а также хеши NTLM сами по себе полезные для развития атаки по сети.
Защита от Downdate
Microsoft получила информацию о дефектах в феврале 2024 года, однако информация о них была опубликована только в августе, в рамках очередного «вторника патчей». Устранить ошибки оказалось сложно и чревато побочными эффектами, некоторые Windows-системы могут отказываться загрузиться после применения обновлений. Поэтому Microsoft не торопится публиковать обновления, а дает советы, которые позволяют лишь снизить риски. Это:
- провести аудит пользователей, имеющих разрешение на операции восстановления системы и обновления; минимизировать количество таких пользователей, отозвать разрешения там, где это возможно;
- применить списки контроля доступа (ACL/DACL) чтобы ограничить доступ к файлам обновлений и их модификацию;
- настроить мониторинг событий, в которых эти привилегии используются для модификации или замены файлов обновлений — это может быть индикатором эксплуатации уязвимостей;
- аналогично отслеживать модификацию и замену файлов, связанных с подсистемой VBS и резервных копий системных файлов.
Отслеживать подобные события при помощи SIEM и EDR относительно несложно, но стоит ожидать ложноположительных срабатываний, поэтому отличать нормальную деятельность системных администраторов от хакерской активности в конечном счете придется ИБ-службе.
Все вышесказанное относится не только к физическим, но и виртуальным Windows-машинам в облачных средах. Для виртуальных машин в Azure дополнительно рекомендовано отслеживать необычные попытки входа с учетными данными администраторов, менять в таких случаях учетные данные и включать MFA.
От себя добавим более радикальный совет: отозвать привилегии администратора у тех сотрудников, которым они не нужны, а настоящих администраторов обязать выполнять под соответствующим аккаунтом только административные действия, а для прочей работы использовать другую учетную запись.
Рискованные исправления
Для тех, кто хочет большей безопасности, Microsoft предлагает обновление KB5042562, которое снижает остроту проблемы с CVE-2024-21302. После его установки устаревшие версии файлов системы VBS вносятся в список отозванных и более не могут быть запущены на обновленном компьютере. Эта политика (SkuSiPolicy.p7b) применяется на уровне UEFI, поэтому при ее использовании важно обновить не только ОС, но и резервные и съемные носители для запуска ОС, а также понимать, что откат к старым версиям Windows станет невозможен. Также обновление принудительно активирует функцию User Mode Code Integrity (UMCI), которая сама по себе может создавать проблемы совместимости и снижения производительности.
В общем, администратором рекомендовано тщательно взвешивать риски и детально изучить процедуру и ее побочные эффекты. В будущем Microsoft обещает выпустить патчи и дополнительные средства защиты для всех релевантных версий Windows вплоть до Windows 10 версии 1507 и Server 2016.