
Эксплойт для локального повышения привилегий (LPE) в Windows 11, использующий COM-объект сеанса Component Based Servicing (CBS) службы TrustedInstaller и точки соединения (junctions) для произвольной записи файлов.
Локальное повышение привилегий через неограниченный COM-метод CBS — запись произвольных файлов из medium-IL в SYSTEM в Windows 11
| Дата | Событие |
|---|---|
| 22 июля 2026 г. | Уязвимость сообщена в MSRC |
| 8 сентября 2026 г. | Microsoft исправляет стек обслуживания Windows Update (сентябрьский Patch Tuesday) |
| 29 октября 2026 г. | MSRC отвечает (см. ниже) |
COM-объект сеанса Component Based Servicing (CBS) выполняется внутри TrustedInstaller.exe с правами SYSTEM и может быть активирован любым интерактивным пользователем. Почти каждый метод интерфейса сеанса перед выполнением вызывает EnsureCallerIsAdministrator, кроме CreateExternalTransformerExecutor, который возвращал низкоуровневый исполнитель трансформера хранилища CSI без какой-либо проверки авторизации.
Метод Initialize() этого исполнителя выполняется с правами SYSTEM без имперсонации. Вызывающий процесс со средним уровнем целостности может заставить TrustedInstaller создать файл журнала куста реестра по контролируемому атакующим пути, используя NTFS-точки соединения (junctions) и символьные ссылки диспетчера объектов, для создания которых не требуется никаких особых привилегий.
CreateExternalTransformerExecutorРезультат: запись произвольных файлов в любой существующий каталог с правами SYSTEM из обычной учётной записи пользователя. Без прав администратора, без особых привилегий, без взаимодействия с пользователем.
MSRC оценил мой отчёт как низкую степень серьёзности / Defense in Depth, заявив, что «оценённые proof-of-concept не продемонстрировали записи файлов в несанкционированные локации». Дело было закрыто как не достигающее порога для немедленного обслуживания, дополнительный CVE не был выдан, вознаграждение не выплачено, и MSRC не будет дальше отслеживать проблему, что имеет смысл, если это дубликат.
PoC записывает контролируемое атакующим содержимое в C:\Windows\System32 из процесса со средним уровнем целостности (medium-IL), не являющегося администратором, и делал это стабильно на каждой непропатченной сборке, на которой тестировался.
Наиболее вероятное объяснение оценки MSRC — это тайминг: отчёт был подан в июле, исправление стека обслуживания вышло в сентябре, а ответ от MSRC пришёл в октябре, к тому моменту PoC действительно завершался бы с ошибкой E_ACCESSDENIED на любой актуальной системе.
Меня всё же добавили на страницу особых упоминаний MSRC, так что хотя бы это :)
Я подозреваю, что уязвимость, о которой здесь сообщается, покрывается CVE-2026-81963 («Windows Update Stack Elevation of Privilege Vulnerability»), которая была исправлена в упомянутом обновлении и описывает тот же класс уязвимости (CWE-59 / CWE-284, следование по ссылкам + неправильный контроль доступа в стеке обслуживания CBS). Эта CVE была приписана Romain Deperne (Airbus Helicopters) и Microsoft Threat Intelligence Center (MSTIC) и была подтверждена как активно эксплуатируемая в дикой природе до выпуска патча. НО: у меня нет официального подтверждения, что мой отчёт охватывает ту же проблему.
Оба PoC должны запускаться от имени обычного пользователя без прав администратора (средний уровень целостности) и содержат один и тот же базовый эксплойт. Если запустить их с повышенными правами, эксплойт сработает тривиально, поскольку у вас уже есть права администратора, что полностью лишает смысла всю затею.
PoC_Fun/Полноценный proof-of-concept с пользовательским интерфейсом. Графическая обвязка, написанная в вайб-кодинг-стиле, которая оборачивает технику эксплойта в интерактивный интерфейс. Хорошо подходит для демонстраций и для всех, кто не любит скучные PoC только для терминала (MAKE POCS FUN AGAIN!)
Моноширинный готический пиксельный шрифт, используемый в заголовках и баннере, был создан по моему заказу nico_n_art.
Сборка:
$ cd PoC_Fun
$ dotnet clean -c Release && dotnet publish -c Release
$ .\bin\Release\net8.0-windows\win-x64\publish\TrustedHive.exe
Использование: Просто дважды щёлкните по релизу, и интерфейс должен провести вас по шагам, либо используйте «?», чтобы открыть меню справки.
PoC_Boring/Отдельный C-файл для эксплойта. Без интерфейса и без зависимостей, кроме ole32.lib и advapi32.lib. Соберите с помощью MSVC (cl /O2 ...), укажите входной файл и выходной путь — и он сделает своё дело.
Сборка:
$ cd PoC_Boring
$ cl /nologo /W3 /O2 TrustedHive_PoC.c ole32.lib advapi32.lib /link
$ .\TrustedHive_PoC.exe
Использование:
$ .\TrustedHive_BoringPoC.exe <input_file> <output_path> [/keep]
<input_file> : file whose bytes are written to the target
<output_path> : destination (its parent directory must exist),
e.g. C:\Windows\System32\poc.dll
/keep : keep the Hidden+System attributes the Configuration Manager
stamps on the created hive-log file (default: clear them)
EvaluateApplicability) в рамках того же CVE