Уязвимость в Windows Installer присутствует во всех актуальных системах, начиная с Windows 7, и не была исправлена последними январскими обновлениями.
По информации 0patch проблема первоначально обнаружена SandboxEscaper и заключается в том, что злоумышленник использует собственный сценарий отката (файл *.rbs) вместо сценария, созданного msiexec.exe, для модификации реестра и системных файлов, что в свою очередь приводит к локальному повышению привилегий ограниченного пользователя до уровня системы.
Эту уязвимость уже пытались исправить 4 раза (CVE-2020-16902, CVE-2020-0814, CVE-2020-1302, CVE-2019-1415), но так полностью и не исправили - в проверке использования папки C:\Config.Msi для хранения файла отката была обнаружена ошибка, из-за которой CVE-2020-16902 продолжает работать. На текущий вариант ещё нет CVE и официального исправления, однако можно принять меры самостоятельно.
Хорошая новость в том, что в серверных системах по умолчанию установка msi-пакетов разрешена только администраторам, однако этот параметр можно переопределить групповой политикой или твиком реестра (кто так сделал также уязвим). Клиентские системы же уязвимы по умолчанию, так как в них msi-пакеты разрешено устанавливать всем пользователям, в том числе с ограниченными правами.
Команда 0patch предлагает для исправления собственный микропатч, для использования которого необходимо установить их утилиту. Плюс - изменения делаются в памяти и их можно применять без перезагрузки, минус - нужно регистрироваться и держать 0patch активным.
Мой анализ ситуации показал, что для устранения уязвимости достаточно (не совсем, смотрите P. S.) запретить пользователям с ограниченными правами установку msi-пакетов, перезагрузка не нужна.
Через групповую политику это делается так:
Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Установщик Windows -> Запретить установщик Windows -> Включить (Только для необслуживаемых программ).
Равноценный твик реестра:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer] "DisableMSI"=dword:00000001
Значения: 0 - установка разрешена всем; 1 - только администраторам; 2 - запрещена всем.
P.S. Позже обнаружил, что пользователи могут запускать Windows Installer с возможностью отмены (msiexec /fa *.msi) из папки %WinDir%\Installer для уже установленных приложений, даже если твик применён (он это не запрещает), а в этой папке могут присутствовать пакеты, не требующие для запуска прав администратора. Это означает, что уязвимы даже серверные системы, ведь там политика DisableMSI=1 действует по умолчанию. Для гарантированного исправления рекомендую запретить запуск %WinDir%\System32\msiexec.exe пользователям через AppLocker.
gazkom
Для изменения сценария отката уже установленного пакета разве не нужны админские права?
simplix Автор
Так в этом и суть проблемы — его можно подменить в папке C:\Config.Msi, доступной для записи пользователям, а потом msiexec от имени системы внесёт изменения по новому сценарию отката.
gazkom
У меня на компе вообще нет такой папки.
simplix Автор
Пользователям с ограниченными правами не запрещено создавать папки в корне системного диска.
y2k
Почему бы не отобрать у пользователей права на запись в эту папку?
Tsimur_S
Через 20 лет на хабре будет статья — «Артефакты минувшей эпохи. В Windows XXX нельзя создать папки CON, PRN и Config.Msi». И 100 комментариев на тему «костыли is never changes».