Уязвимость в Windows WalletService позволяет повысить привилегии до SYSTEM через подмену базы данных

Windows

Исследователь Дэвид Карли (David Carliez) опубликовал детали эксплуатации уязвимости локального повышения привилегий в компоненте Windows WalletService, отслеживаемой как CVE-2026-49176. Проблема позволяет стандартному аутентифицированному пользователю получить доступ уровня SYSTEM на уязвимых сборках Windows 11. Microsoft выпустила исправление в рамках июльского набора обновлений.

Уязвимость CVE-2026-49176

Уязвимость связана с обработкой WalletService путей к файлам, контролируемых пользователем, во время инициализации. Сервис, работающий в контексте LocalSystem, открывает базу данных Extensible Storage Engine (ESE) - движка для хранения данных - по пути, производному от папки Documents вызывающего пользователя. Если злоумышленник заранее перенаправляет указатель на папку Documents на свой каталог и помещает в него поддельную базу данных wallet.db с особым образом сформированной схемой, ESE при открытии таблицы Cards загружает указанную в колбэке DLL. Поскольку WalletService работает с системными привилегиями, загруженная библиотека исполняется с правами NT AUTHORITY\SYSTEM.

Атака не требует прав администратора, интерактивного подтверждения от привилегированного пользователя или прямого изменения защищённых системных расположений. Вектор начинается с вызова общедоступного WinRT-интерфейса: "Windows.ApplicationModel.Wallet.WalletManager.RequestStoreAsync()", за которым следует "GetItemsAsync()". Эти вызовы триггерят активацию WalletService и инициализацию его базы данных. В процессе сервис получает токен вызывающего, разрешает его папку Documents через "SHGetKnownFolderPath", затем возвращает себе исходный контекст и открывает "<Documents>\Wallet\wallet.db" уже от имени LocalSystem.

Для эксплуатации злоумышленник создаёт в своём каталоге структуру с папкой Wallet, внутри которой размещает базу данных с таблицей Cards. В схему таблицы добавляется столбец с флагом "JET_bitColumnUserDefinedDefault", где в качестве значения по умолчанию указывается путь к DLL и имя экспортируемой функции. После этого атакующий с помощью "SHSetKnownFolderPath" перенаправляет свою папку Documents на корневой каталог, содержащий Wallet. После вызова методов WinRT WalletService открывает созданную базу, и ESE, у которого включён параметр "JET_paramEnablePersistedCallbacks", загружает указанную DLL в процесс "svchost.exe", обслуживающий WalletService.

Карли продемонстрировал полную цепочку: от низкопривилегированного пользователя до интерактивной командной строки с правами SYSTEM. Для доставки шелла на рабочий стол использовался временный сервис, который запускал исполняемый файл из подконтрольного каталога, дублировал токен SYSTEM и устанавливал его в активную сессию через "CreateProcessAsUserW". После отработки сервис удалялся, минимизируя следы.

Microsoft присвоила уязвимости статус Important с оценкой CVSS 3.1 - 7,8. В бюллетене указаны соответствия CWE-269 (некорректное управление привилегиями) и CWE-59 (некорректное разрешение ссылок перед доступом к файлу). Честь обнаружения принадлежит Чен Ле Ци (Chen Le Qi) и Мотти Нишимия (Mochi Nishimiya) из STAR Labs SG; Карли провёл независимый анализ и разработал эксплойт.

Особую опасность уязвимость представляет в средах с общими рабочими станциями, корпоративными терминалами, виртуальными рабочими столами и киосками, где низкопривилегированная учётная запись может превратить локальный доступ в полный контроль над системой. Получение привилегий SYSTEM позволяет похищать учётные данные, отключать средства защиты, устанавливать постоянные механизмы закрепления, подготавливать боковое перемещение по сети и получать доступ к данным других пользователей на устройстве.

Исправление, выпущенное Microsoft, добавляет защитный компонент с идентификатором "Feature_Servicing_WalletServiceRedirectionGuard". На сборке 26200.8875 (фиксированная версия) WalletService перестал открывать базу данных, создавать файлы ESE, заменять дескриптор безопасности каталога Wallet и обрабатывать колбэки при инициализации. Сравнение с уязвимой сборкой 26200.8737 показало, что после патча вызов "GetItemsAsync()" приводит лишь к созданию пустой папки Wallet без каких-либо файлов базы.

Специалистам по защите рекомендуется в первую очередь установить обновления Microsoft для закрытия CVE-2026-49176. Группам обнаружения угроз стоит обратить внимание на следующие индикаторы: необычное перенаправление папки Documents перед активацией WalletService, запуск "WalletService" после вызовов WinRT Wallet API, открытие базы "wallet.db" из нестандартных родительских каталогов, загрузка DLL процессом "svchost.exe", обслуживающим WalletService, из пользовательских путей, а также появление процессов с токеном SYSTEM в интерактивных сессиях после обращений к Wallet. Высоким уровнем сигнала обладает загрузка модуля: WalletService не должен загружать библиотеки из каталогов уровня "LocalAppData" при обработке данных кошелька.

Эта уязвимость в очередной раз демонстрирует риски, связанные с доверием привилегированных сервисов к путям, контролируемым пользователем, особенно при использовании механизмов обратного вызова в базах данных. Своевременное обновление остаётся ключевой мерой защиты от подобных атак.

Ссылки

Комментарии: 0