
Уязвимость BDU:2024-09376 (CVE-2024-49039) Task Scheduler Windows
Уязвимость BDU:2024-09376 (CVE-2024-49039) в Windows Task Scheduler позволяет злоумышленникам повышать привилегии на уязвимых системах. Она связана с недостатками аутентификации в компоненте WPTaskScheduler.dll
, который обрабатывает RPC-вызовы (Remote Procedure Call). Эксплойт, опубликованный на GitHub, демонстрирует, как использовать эту уязвимость для persistence и выполнения произвольного кода.
Технический анализ уязвимости
Уровень опасности: 8.8 (Высокий)
Вектор атаки: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
-
AV:L (Вектор атаки: Локальный) – Требуется локальный/физический доступ к системе.
-
AC:L (Сложность атаки: Низкая) – Простая эксплуатация без сложных условий.
-
PR:L (Привилегии: Низкие) – Нужны базовые права доступа.
-
UI:N (Взаимодействие: Нет) – Участие пользователя не требуется.
-
S:C (Область: Изменённая) – Влияет на другие системы/компоненты.
-
C:H (Конфиденциальность: Высокое) – Полная утечка данных.
-
I:H (Целостность: Высокое) – Полное изменение данных/системы.
-
A:H (Доступность: Высокое) – Критическое нарушение работы.
Интерпретация: Уязвимость высокой опасности (8.8) требует локального доступа и базовых прав, но позволяет легко нарушить конфиденциальность, целостность и доступность системы, затрагивая другие компоненты (S:C). Риск максимален из-за низкой сложности эксплуатации и критического воздействия на все аспекты безопасности.
Корень проблемы
Уязвимость возникает из-за неправильной проверки уровня целостности (integrity level) при взаимодействии с RPC-интерфейсом WPTaskScheduler.dll
. Этот компонент, присутствующий в Windows начиная с версии 10 1507, позволяет создавать задачи с правами, превышающими текущие привилегии атакующего. До патча интерфейс был доступен для всех пользователей, включая процессы с низким уровнем целостности (например, AppContainer в браузерах).
Механизм эксплуатации
-
Обход ограничений целостности:
Атакующий с низкими привилегиями (например, пользователь в песочнице Chrome) может отправить специально сформированный RPC-запрос кWPTaskScheduler.dll
. Это позволяет создать задачу, которая выполняется с более высоким уровнем целостности (Medium или выше). -
Использование триггеров WNF:
Эксплойт использует Windows Notification Facility (WNF) для активации задачи. Например, триггерWNF_SHEL_LOGON_COMPLETE
(0xd83063ea3bc1875) запускает задачу при завершении входа пользователя в систему.
Список уязвимых ОС
- Windows 10 64-bit
- Windows 10 32-bit
- Windows 10 1607 64-bit
- Windows 10 1607 32-bit
- Windows Server 2016
- Windows Server 2016 Server Core installation
- Windows 10 1809 64-bit
- Windows 10 1809 32-bit
- Windows Server 2019
- Windows Server 2019 Server Core installation
- Windows Server 2022
- Windows Server 2022 Server Core installation
- Windows 10 21H2 64-bit
- Windows 10 21H2 32-bit
- Windows 10 21H2 ARM64
- Windows 11 22H2 64-bit
- Windows 11 22H2 ARM64
- Windows 10 22H2 64-bit
- Windows 10 22H2 ARM64
- Windows 10 22H2 32-bit
- Windows 11 23H2 64-bit
- Windows 11 23H2 ARM64
- Windows Server 2022 23H2 Edition Server Core installation
- Windows 11 24H2 64-bit
- Windows 11 24H2 ARM64
- Windows Server 2025
- Windows Server 2025 Server Core installation
Пример кода из эксплойта
// Создание задачи с триггером WNF TASK_TRIGGER_WNF TriggerWnf = { 0 }; TriggerWnf.WnfValue = 0xd83063ea3bc1875; // WNF_SHEL_LOGON_COMPLETE TriggerWnf.WnfStateTriggerType = 0; TASK_TRIGGER Trigger = { 0 }; Trigger.TriggerType = 1; Trigger.TaskWnf = &TriggerWnf; // Настройка действия (запуск dfrgui.exe) TASK_ACTION_LAUNCH Launch = { 0 }; Launch.ExecPath = L"dfrgui.exe"; // Может быть заменен на вредоносный исполняемый файл TASK_ACTION Action = { 0 }; Action.ActionType = 0; Action.LaunchAction = &Launch;
Этот код создает задачу, которая запускает указанный процесс при срабатывании триггера WNF.
Условия эксплуатации
-
Локальный доступ:
Атакующий должен иметь возможность выполнить код на целевой системе (например, через фишинг, эксплуатацию другой уязвимости или вредоносный скрипт). -
Ограничения процессов:
Эксплойт эффективен в контексте процессов с низким уровнем целостности (например, Chrome Renderer), но требует обхода ограничений на создание RPC-соединений. Для этого используются процессы с более высокими привилегиями, такие какaudio.mojom.AudioService
илиgpu-process
. -
Сетевой доступ:
Уязвимость не требует доступа к внутренней сети, но может использоваться для латерального перемещения после первоначального взлома.
Анализ эксплойта
Структура эксплойта
-
Использование RPC:
Эксплойт взаимодействует сWPTaskScheduler.dll
через RPC-биндинг (ncalrpc
), что позволяет создавать скрытые задачи, которые не отображаются в стандартном интерфейсе планировщика. -
Persistence:
ФлагTASK_PERSIST_FLAG
обеспечивает сохранение задачи после перезагрузки системы.
Пример создания задачи
// Инициализация RPC RPC_BINDING_HANDLE Binding = NULL; RpcStringBindingComposeW(NULL, (RPC_WSTR)L"ncalrpc", NULL, NULL, NULL, &StringBinding); RpcBindingFromStringBindingW(StringBinding, &Binding); // Регистрация задачи TASK_SCHEDULE WPTaskSchedule = { 0 }; WPTaskSchedule.pguidName = &TaskGuid; WPTaskSchedule.ScheduleName = L"MaliciousTask"; WPTaskSchedule.Trigger = &Trigger; WPTaskSchedule.Action = &Action; TaskSchedulerCreateSchedule(Binding, (Struct_498_t*)&WPTaskSchedule, TRUE);
Этот фрагмент кода регистрирует задачу, которая будет выполняться с повышенными привилегиями.
Рекомендации по защите
-
Установка патчей:
Microsoft исправила уязвимость в ноябрьском обновлении 2024 года, изменив политику доступа к RPC-интерфейсу (требуется уровень целостности Medium или выше). -
Ограничение привилегий:
-
Используйте принцип наименьших привилегий (Least Privilege) для пользователей и служб.
-
Блокируйте выполнение неподписанных бинарных файлов в критических системах36.
-
-
Мониторинг и анализ:
-
Отслеживайте создание скрытых задач через инструменты вроде Sysinternals Autoruns или Task Scheduler Revealer.
-
Анализируйте RPC-трафик, особенно вызовы к
WPTaskScheduler.dll
.
-
-
Сегментация сети:
Изолируйте системы с повышенными рисками и ограничьте взаимодействие между узлами.
