Сводка
Уязвимость: Неаутентифицированное повышение локальных привилегий до SYSTEM через TCP-порт 24801 демона Barrier
Вендор: debauchee (проект Barrier)
Продукт: Barrier 2.4.0 (финальный выпуск, 01.11.2021)
CWE: CWE-306: Отсутствие аутентификации для критической функции
Описание
Служба Windows Barrier (barrierd.exe), устанавливаемая и запускаемая как LocalSystem, привязывает TCP IPC-сервер управления на 127.0.0.1:24801 без аутентификации, без проверки личности клиента и без контроля доступа. Любой локальный процесс, независимо от уровня привилегий, может подключиться к этому порту и отправить сообщение kIpcCommand ("ICMD"), содержащее произвольную командную строку и 1-байтовый флаг "elevate". При этом дублируется основной токен SYSTEM процесса winlogon.exe — и готово: у вас выполняется код от имени NT AUTHORITY\SYSTEM. Как показывает POC, можно также вызвать появление нового окна cmd.exe, работающего от имени SYSTEM.
Шаги воспроизведения
- Получите возможность локального выполнения кода с низкими привилегиями на хосте Windows, где установлена и запущена служба Barrier (barrierd.exe, LocalSystem).
- Откройте TCP-соединение к 127.0.0.1:24801.
- Отправьте IPC-приветствие: b"IHEL" + b"\x00" (идентифицирует как kIpcClientGui).
- Отправьте командное сообщение: b"ICMD" + struct.pack(">I", len(cmd)) + cmd.encode("utf-8") + b"\x01" (elevate=1), где cmd = " -d x /c <команда атакующего>" (для разовой команды) или " -d x /k <команда атакующего>" (чтобы избежать цикла перезапуска watchdog-демона, если сам payload не поддерживает процесс в живых, например при использовании
start для вызова видимого окна). Префикс "-d x" ОБЯЗАТЕЛЕН, чтобы избежать падения демона из-за сопутствующей ошибки разыменования NULL.
- Поток watchdog в barrierd.exe перечисляет активную консольную сессию, открывает winlogon.exe и дублирует его основной токен SYSTEM.
- CreateProcessAsUser(systemToken, NULL, cmd, ...) запускает команду атакующего от имени NT AUTHORITY\SYSTEM -- собственный снисходительный парсер параметров cmd.exe игнорирует начальный мусор "-d x" и корректно обрабатывает "/c"/"/k" как "выполнить остаток как команду".
- ЗАКРЕПЛЕНИЕ: выполненная команда автоматически сохраняется и будет запускаться заново от имени SYSTEM при каждом перезапуске службы/перезагрузке системы без дальнейших действий атакующего, пока не будет явно очищена отправкой пустой команды или прямым редактированием HKLM\SOFTWARE\Barrier.
Затронутый код
- src/lib/ipc/IpcClientProxy.cpp - Команда + байт elevate
- src/lib/ipc/IpcServer.cpp -- Отсутствие аутентификации на пути accept в IPC
- src/lib/barrier/win32/DaemonApp.cpp -- Отбрасывает результаты и сохраняет команду в реестр HKLM\SOFTWARE\Barrier
- src/lib/platform/MSWindowsWatchdog.cpp -- Получен токен SYSTEM
Код: https://github.com/debauchee/barrier/releases/tag/v2.4.0
Proof-of-Concept (POC) или ничего
В комплект включён один Proof-of-Concept (POC), доказывающий, что это реально.
POC -- Debauchee_Barrier_Privesc.py

Воздействие
Атакующий может использовать эту уязвимость для получения привилегий уровня SYSTEM. Хуже того, выполненная команда будет автоматически срабатывать при перезапуске/запуске.
Рекомендуемое исправление
Barrier не поддерживается и не получит исправления. Организациям, всё ещё использующим Barrier, следует перейти на исправленную сборку Deskflow (активно поддерживаемого преемника), в которой устранена та же уязвимость: CVE-2026-41477 / GHSA-6rx5-g478-775c.
График раскрытия
- 20 апреля 2026 г. -- Обнаружено. Проект не поддерживается, и сообщить некому.
- 25 июля 2026 г. -- Решено, что стоит обратиться в NoCVE, так как этот проект потенциально может быть форкнут.