Уязвимость планировщика заданий Task Scheduler операционных систем Windows
Уязвимость планировщика заданий Task Scheduler операционных систем Windows
Категория: Программы Теги: Уязвимости Опубликовано: 19 мая 2025

Уязвимость 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

  1. AV:L (Вектор атаки: Локальный) – Требуется локальный/физический доступ к системе.

  2. AC:L (Сложность атаки: Низкая) – Простая эксплуатация без сложных условий.

  3. PR:L (Привилегии: Низкие) – Нужны базовые права доступа.

  4. UI:N (Взаимодействие: Нет) – Участие пользователя не требуется.

  5. S:C (Область: Изменённая) – Влияет на другие системы/компоненты.

  6. C:H (Конфиденциальность: Высокое) – Полная утечка данных.

  7. I:H (Целостность: Высокое) – Полное изменение данных/системы.

  8. A:H (Доступность: Высокое) – Критическое нарушение работы.

Интерпретация: Уязвимость высокой опасности (8.8) требует локального доступа и базовых прав, но позволяет легко нарушить конфиденциальность, целостность и доступность системы, затрагивая другие компоненты (S:C). Риск максимален из-за низкой сложности эксплуатации и критического воздействия на все аспекты безопасности.

Корень проблемы

Уязвимость возникает из-за неправильной проверки уровня целостности (integrity level) при взаимодействии с RPC-интерфейсом WPTaskScheduler.dll. Этот компонент, присутствующий в Windows начиная с версии 10 1507, позволяет создавать задачи с правами, превышающими текущие привилегии атакующего. До патча интерфейс был доступен для всех пользователей, включая процессы с низким уровнем целостности (например, AppContainer в браузерах).

Механизм эксплуатации

  1. Обход ограничений целостности:
    Атакующий с низкими привилегиями (например, пользователь в песочнице Chrome) может отправить специально сформированный RPC-запрос к WPTaskScheduler.dll. Это позволяет создать задачу, которая выполняется с более высоким уровнем целостности (Medium или выше).

  2. Использование триггеров 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.


Условия эксплуатации

  1. Локальный доступ:
    Атакующий должен иметь возможность выполнить код на целевой системе (например, через фишинг, эксплуатацию другой уязвимости или вредоносный скрипт).

  2. Ограничения процессов:
    Эксплойт эффективен в контексте процессов с низким уровнем целостности (например, Chrome Renderer), но требует обхода ограничений на создание RPC-соединений. Для этого используются процессы с более высокими привилегиями, такие как audio.mojom.AudioService или gpu-process.

  3. Сетевой доступ:
    Уязвимость не требует доступа к внутренней сети, но может использоваться для латерального перемещения после первоначального взлома.


Анализ эксплойта

Структура эксплойта

  • Использование 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);

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


Рекомендации по защите

  1. Установка патчей:
    Microsoft исправила уязвимость в ноябрьском обновлении 2024 года, изменив политику доступа к RPC-интерфейсу (требуется уровень целостности Medium или выше).

  2. Ограничение привилегий:

    • Используйте принцип наименьших привилегий (Least Privilege) для пользователей и служб.

    • Блокируйте выполнение неподписанных бинарных файлов в критических системах36.

  3. Мониторинг и анализ:

    • Отслеживайте создание скрытых задач через инструменты вроде Sysinternals Autoruns или Task Scheduler Revealer.

    • Анализируйте RPC-трафик, особенно вызовы к WPTaskScheduler.dll.

  4. Сегментация сети:
    Изолируйте системы с повышенными рисками и ограничьте взаимодействие между узлами.

Алексей Черемных Алексей Черемных
103