
CVE-2026-66804 EoP виртуальной камеры Windows Cross Device - от обычного пользователя до SYSTEM
Я независимо обнаружил и сообщил о проблеме, которая сейчас отслеживается как CVE-2026-66804. MSRC подтвердил, что моя заявка является дубликатом более раннего отчёта с той же первопричиной в Windows Camera FrameServer.
Обычный пользователь Windows может создать отсутствующий доверенный путь в C:\ProgramData\CrossDevice, разместить зарегистрированную COM DLL виртуальной камеры Cross Device и заставить Windows Camera Frame Server загрузить код, контролируемый атакующим, от имени NT AUTHORITY\LOCAL SERVICE. Прилагаемая цепочка доказательства использует включённую привилегию SeImpersonatePrivilege токена службы для получения NT AUTHORITY\SYSTEM.
Основное видео: отсутствующий путь в свежей ВМ до SYSTEM
| CVE | CVE-2026-66804 |
| Название Microsoft | Microsoft Windows Cross Device Service Elevation of Privilege Vulnerability |
| Дело MSRC | 119805 |
| Заявка MSRC | VULN-192287 |
| Решение MSRC | Complete - Duplicate |
| Благодарность Microsoft | Daniel Wade with nadsec |
| Дата выпуска | 2026-08-11 |
| Степень серьёзности Microsoft | Важно |
| Microsoft CVSS | 7.8 High - CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Microsoft CWE | CWE-284: Improper Access Control |
| Класс ошибки | Подмена DLL через отсутствующий путь / перехват COM-объекта |
| Компонент | Cross Device Virtual Camera / Windows Camera FrameServer |
| COM-класс | {E9F83CF2-E0C0-4CA7-AF01-E90C70BEF496} |
| Основная протестированная сборка | Windows 11 Pro 25H2 build 26200.8524 |
| Воздействие | От обычного локального пользователя до NT AUTHORITY\SYSTEM |
В Windows зарегистрирован COM-сервер виртуальной камеры Cross Device по пути:
%PROGRAMDATA%\CrossDevice\CrossDevice.Streaming.Source.dll
В свежей/стандартной виртуальной машине Windows 11, использовавшейся для проверки, общесистемная регистрация существовала до того, как появился соответствующий каталог. Обычный пользователь создал отсутствующий каталог, разместил ожидаемую DLL и вызвал API виртуальной камеры. Camera Frame Server загрузил DLL от имени LOCAL SERVICE, после чего цепочка доказательства получила токен SYSTEM и записала подтверждение в защищённый путь.
Это проблема отсутствующего пути или предварительной инициализации. Это не утверждение о том, что обычный пользователь может перезаписать существующую защищённую DLL Microsoft.
Соответствующая общесистемная регистрация:
HKLM\SOFTWARE\Classes\CLSID\{E9F83CF2-E0C0-4CA7-AF01-E90C70BEF496}\InProcServer32
(Default) REG_EXPAND_SZ %PROGRAMDATA%\CrossDevice\CrossDevice.Streaming.Source.dll
Продемонстрированная цепочка:
C:\ProgramData\CrossDevice отсутствует.SeImpersonatePrivilege.NT AUTHORITY\SYSTEM.Запускайте этот PoC только в одноразовой уязвимой лабораторной ВМ, которая принадлежит вам или на тестирование которой у вас есть явное разрешение. Сделайте снимок ВМ перед использованием.
Из командной строки обычного пользователя:
cd /d path\to\fresh-vm-repro
Run-CrossDevicePoC.cmd
Сценарий запуска проверяет ожидаемую регистрацию и отказывается затрагивать уже существующий каталог Cross Device или неожиданный вспомогательный бинарный файл. При успешном выполнении создаются подтверждения LOCAL SERVICE, привилегии и SYSTEM.
Полные предварительные требования, ожидаемые результаты, хеши, команды сборки и шаги по очистке приведены в fresh-vm-repro/README.md.
Обе записи сохранены, поскольку фиксируют дополняющие друг друга части исследования.
| Видео | Роль |
|---|---|
fresh-vm-missing-path-to-system.mp4 | Основная повторная проверка на свежей/стандартной ВМ: размещение от имени обычного пользователя, выполнение в LOCAL SERVICE и подтверждения SYSTEM. В записи просматривается более раннее состояние отсутствующего пути через прокрутку терминала; в транскрипте сохранён явный вывод, предшествующий созданию. |
guided-full-chain-standard-user-to-system.mp4 | Сопроводительный разбор исходной заявки. Более подробно показывает цепочку эксплуатации и имперсонации. Полезная нагрузка уже присутствует в начале, поэтому эта запись даёт контекст цепочки, а не независимое доказательство свежего состояния. |
Сохранённый вывод консоли со свежей ВМ находится в fresh-vm-transcript.txt.
docs/technical-report.mddocs/msrc-fresh-vm-clarification.mddocs/archive/| Дата | Событие |
|---|---|
| 2026-06-01 | Первоначальный отчёт отправлен в MSRC как VULN-192287; открыто дело MSRC 119805 |
| 2026-06-04 | Предоставлены разъяснение об отсутствующем пути/предварительной инициализации и чистый архив воспроизведения |
| 2026-06-05 | MSRC подтвердил получение разъяснения |
| 2026-07-27 | MSRC подтвердил поведение, после чего определил, что заявка дублирует более раннюю проблему с той же первопричиной в Windows Camera FrameServer; планировалось указание авторства, награда не выплачивалась |
| 2026-08-11 | Microsoft опубликовал CVE-2026-66804 и выпустил обновления безопасности |
| 2026-08-13 | Подтверждена формулировка благодарности Daniel Wade with nadsec |
Части логики резолвера OXID, имперсонации через именованные каналы, создания OBJREF и получения токена SYSTEM были адаптированы и переведены на C из GodPotato авторства BeichenDream и участников проекта.
Сведения об атрибуции и лицензии см. в THIRD_PARTY_NOTICES.md и LICENSES/Apache-2.0.txt.
fresh-vm-repro/docs/technical-report.md