Уязвимость службы фоновой интеллектуальной передачи файлов между клиентом и HTTP-сервером Windows
Уязвимость службы фоновой интеллектуальной передачи файлов между клиентом и HTTP-сервером Windows
Категория: Программы Теги: Уязвимости Опубликовано: 19 июня 2025

Уязвимость BDU:2020-01189 (CVE-2020-0787) Windows

Уязвимость BDU:2020-01189 (CVE-2020-0787) обработки символьных ссылок в службе фоновой передачи данных (BITS) Windows, позволяющая повысить привилегии через arbitrary file move.

Анализ уязвимости

Уровень опасности: 7.8 HIGH
Вектор атаки: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

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

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

  • PR:N (Требуемые привилегии: Нет) - Достаточно стандартных пользовательских прав

  • UI:R (Вовлечение пользователя: Требуется) - Необходимо выполнение вредоносного приложения

  • S:U (Область воздействия: Неизменна) - Не оказывает влияния на другие компоненты

  • C:H (Влияние на конфиденциальность: Высокое) - Полный доступ к системным данным

  • I:H (Влияние на целостность: Высокое) - Полный контроль над системой

  • A:H (Влияние на доступность: Высокое) - Возможность полного отказа системы

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

  1. Локальный доступ к уязвимой системе Windows

  2. Возможность выполнения произвольного кода (стандартные пользовательские права)

  3. Отсутствие установленных патчей

  4. Целевая система должна использовать уязвимые версии BITS (включена по умолчанию)

Уязвимые версии ОС

  • Windows 10 1607 32-bit
  • Windows 10 1607 64-bit
  • Windows 10 1709 32-bit
  • Windows 10 1709 64-bit
  • Windows 10 1709 ARM64
  • Windows 10 1803 32-bit
  • Windows 10 1803 64-bit
  • Windows 10 1803 ARM64
  • Windows 10 1809 32-bit
  • Windows 10 1809 64-bit
  • Windows 10 1809 ARM64
  • Windows 10 1903 32-bit
  • Windows 10 1903 64-bit
  • Windows 10 1903 ARM64
  • Windows 10 1909 32-bit
  • Windows 10 1909 64-bit
  • Windows 10 1909 ARM64
  • Windows 10 32-bit
  • Windows 10 64-bit
  • Windows 7 SP1 32-bit
  • Windows 7 SP1 64-bit
  • Windows 8.1 32-bit
  • Windows 8.1 64-bit
  • Windows 8.1 RT
  • Windows Server 1803 Server Core Installation
  • Windows Server 1903 Server Core Installation
  • Windows Server 1909 Server Core Installation
  • Windows Server 2008 R2 SP1 64-bit
  • Windows Server 2008 R2 SP1 Itanium
  • Windows Server 2008 R2 SP1 Server Core installation 64-bit
  • Windows Server 2008 SP2 32-bit
  • Windows Server 2008 SP2 64-bit
  • Windows Server 2008 SP2 Itanium
  • Windows Server 2008 SP2 Server Core installation 32-bit
  • Windows Server 2008 SP2 Server Core installation 64-bit
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2012 R2 Server Core installation
  • Windows Server 2012 Server Core installation
  • Windows Server 2016
  • Windows Server 2016 Server Core installation
  • Windows Server 2019
  • Windows Server 2019 Server Core installation

Технический механизм уязвимости

Служба BITS (Background Intelligent Transfer Service) неправильно обрабатывает символьные ссылки при работе с файлами. Злоумышленник может создать специальную цепочку reparse points, чтобы перенаправить операцию перемещения файла в системную директорию:

// Эксплуатация через подмену путей
BitsArbitraryFileMove::Run(L"C:\\malware.dll", L"C:\\Windows\\System32\\SysFxUI.dll")

Ключевые этапы эксплуатации:

  1. Создание рабочего каталога с поддиректориями mountpoint и bait

  2. Инициализация BITS-задачи для "загрузки" файла

  3. Перехват временного файла BITS (BIT*.tmp) через oplock

  4. Замена mountpoint на \RPC Control

  5. Создание символьных ссылок:

    • \RPC Control\BITXXXX.tmp → Исходный вредоносный файл

    • \RPC Control\<target_file> → Системный файл

  6. Автоматическое перемещение файла службой BITS

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

Рассмотрим код эксплоита для понимания работы вектора атаки с использованием уязвимости CVE-2020-0787.

Основные компоненты:

  1. Манипуляция с COM-объектами BITS:

// Создание BITS job
CoCreateInstance(__uuidof(BackgroundCopyQMgr), NULL, CLSCTX_LOCAL_SERVER, 
                 __uuidof(IBackgroundCopyQMgr), (void**)&m_pBackgroundCopyQMgr);
m_pBackgroundCopyQMgr->CreateGroup(m_guidGroup, &m_pBackgroundCopyGroup);
m_pBackgroundCopyGroup->CreateJob(m_guidJob, &m_pBackgroundCopyJob1);
  1. Создание reparse points:

// Перенаправление файловых операций
ReparsePoint::CreateMountPoint(m_wszMountpointDirPath, L"\\RPC Control", L"");
CreateSymlink(nullptr, L"\\RPC Control\\BIT84A4.tmp", L"\\??\\C:\\malware.dll");
CreateSymlink(nullptr, L"\\RPC Control\\test.txt", L"\\??\\C:\\Windows\\System32\\SysFxUI.dll");
  1. Обработка oplock для перехвата операций:

// Перехват момента записи файла
FileOpLock* oplock = FileOpLock::CreateLock(m_wszBitsTempFilePath, L"", nullptr);
oplock->WaitForLock(INFINITE); // Ожидание триггера

Практические последствия эксплуатации

  1. Повышение привилегий: Замена системных DLL (например, SysFxUI.dll) позволяет выполнить код с правами SYSTEM

  2. Установка руткитов: Модификация драйверов или системных компонентов

  3. Обход UAC: Подмена компонентов контроля учетных записей

  4. Персистентность: Создание неизвлекаемых backdoor

Пример вредоносной нагрузки:

<!-- Скрипт в эксплоите для выполнения команд -->
<script language='JScript'>
<![CDATA[
  new ActiveXObject('Wscript.Shell').exec('cmd /c net user hacker P@ssw0rd /add');
]]>
</script>

Методы защиты

  1. Системные обновления:

    • Установить обновления Windows

  2. Контроль целостности:

# Мониторинг изменений системных DLL
Get-CimInstance -ClassName Win32_FileMonitor -Filter "TargetDirectory='C:\\Windows\\System32'" 
  1. AppLocker Policy:

<!-- Блокировка неразрешенных COM-объектов -->
<RuleCollection Type="Dll">
  <FilePathRule Id="1" Name="Block BITS Exploit" Action="Deny">
    <Conditions>
      <FilePathCondition Path="C:\Windows\System32\bitsadmin.exe" />
    </Conditions>
  </FilePathRule>
</RuleCollection>
  1. Правила Suricata/IPS:

alert tcp any any -> any any (
    msg:"CVE-2020-0787 BITS Exploit Attempt";
    flow:established,to_server;
    content:"|08|CreateJob"; depth:12;
    content:"|0C|AddFiles"; within:100;
    content:"|0C|ResumeJob"; within:10;
    sid:20200787;
    rev:1;
)

Рекомендации для SOC

  1. Мониторинг создания BITS-задач:

Get-WinEvent -LogName "Microsoft-Windows-Bits-Client/Operational" | 
    Where-Object {$_.Id -eq 59} # Событие создания задачи
  1. Детектирование подозрительных символьных ссылок:

fsutil reparsepoint query C:\workspace\mountpoint
  1. Аудит доступа к системным DLL:

auditpol /set /subcategory:"Object Access" /success:enable /failure:enable
Алексей Черемных Алексей Черемных
31