
Уязвимость BDU:2023-00067 (CVE-2023-21752) Windows Backup Service
Уязвимость BDU:2023-00067 (CVE-2023-21752) затрагивает службу резервного копирования Windows Backup Service и связана с некорректным управлением привилегиями при обработке путей к файлам. Успешная эксплуатация позволяет локальному злоумышленнику повысить привилегии до уровня SYSTEM, что эквивалентно полному контролю над системой.
Анализ уязвимости
Уровень опасности: 7.1 HIGH
Вектор атаки: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
-
AV:L (Attack Vector): Локальный – атакующий должен иметь физический или удаленный доступ к системе (например, через RDP или локальный сеанс).
-
AC:L (Attack Complexity): Низкая – эксплуатация не требует сложных условий.
-
PR:L (Privileges Required): Низкие – достаточно прав обычного пользователя.
-
UI:N (User Interaction): Не требуется – атака выполняется без участия пользователя.
-
S:U (Scope): Не оказывает влияния на другие компоненты.
-
C:N (Confidentiality): Нет воздействия на конфиденциальность.
-
I:H (Integrity): Высокое – полный контроль над системными ресурсами.
-
A:H (Availability): Высокое – возможен отказ в обслуживании.
Условия эксплуатации
-
Злоумышленник должен иметь возможность выполнить код на целевой системе (например, через RDP, SSH или локальный сеанс).
-
Требуются низкие привилегии (обычный пользователь без админских прав).
-
Уязвимые ОС: Windows 7/10/11.
Технический анализ эксплоита
Рассмотрим код эксплоита для понимания работы вектора атаки с использованием этой уязвимости.
Эксплоит использует комбинацию символических ссылок (symlinks), junction points и oplock (блокировок файлов) для манипуляции службой резервного копирования. Ключевые этапы:
1. Создание временного каталога
dir = GetTmpDir(); // C:\users\<user>\appdata\local\temp\<uuid> CreateDirectory(dir, NULL); hDir = CreateFile(dir, ..., FILE_FLAG_DELETE_ON_CLOSE, ...);
Каталог создается с флагом FILE_FLAG_DELETE_ON_CLOSE
, что гарантирует его удаление после закрытия дескриптора.
2. Отслеживание изменений в каталоге
CreateThread(..., FindFile, ...); VOID FindFile(HANDLE hDir) { ReadDirectoryChangesW(hDir, ...); // Мониторинг новых файлов if (fi->Action == FILE_ACTION_ADDED) { hFile = CreateFile(file, ...); // Открытие нового файла FileOpLock::CreateLock(hFile, cb); // Oplock на файл } }
При появлении файла (созданного службой) на него устанавливается oplock.
3. Механизм oplock
Когда служба пытается получить доступ к файлу, срабатывает callback:
void cb() { CreateJunction(hDir, L"\\RPC Control"); // Перенаправление каталога DosDeviceSymLink(object, BuildPath(target)); // Симлинк на целевой файл }
-
Junction перенаправляет путь в
\RPC Control
(глобальное пространство имён). -
DosDeviceSymLink связывает объект с целевым файлом (например, системным DLL).
4. Триггер уязвимости
BOOL Trigger() { CoCreateInstance(__uuidof(CLSID_SDC), ..., (LPVOID*)&sdc); sdc->Proc7(unc, ...); // Вызов уязвимого метода }
Метод Proc7
интерфейса ISdScheduledBackup
принимает контролируемый путь (unc
), что приводит к обработке символических ссылок с правами SYSTEM.
5. Результат
// После срабатывания oplock: DeleteJunction(hDir); // Очистка DelDosDeviceSymLink(object, BuildPath(target));
Служба, обрабатывая подменённый путь, выполняет операции (например, удаление) с целевым файлом от имени SYSTEM.
Что может получить злоумышленник?
-
Повышение привилегий до SYSTEM: Полный контроль над ОС.
-
Удаление системных файлов: Нарушение работы ОС (DoS).
-
Подмена системных компонентов: Например, замена
winlogon.exe
. -
Обход механизмов защиты: Отключение EDR, антивирусов.
Методы защиты
-
Установка обновлений:
Патч от Microsoft. -
Принцип минимальных привилегий:
-
Ограничить локальный доступ пользователей через GPO:
Computer Configuration → Policies → Windows Settings → Security Settings → Local Policies → User Rights Assignment
. -
Запретить выполнение неизвестных бинарников.
-
-
Контроль целостности файлов:
-
Включить Windows Defender Credential Guard.
-
Использовать Windows Defender Application Control (WDAC).
-
-
Мониторинг подозрительных действий:
-
События создания символических ссылок (
CreateFile
с флагомFILE_FLAG_OPEN_REPARSE_POINT
). -
Вызовы API
DefineDosDevice
иFSCTL_SET_REPARSE_POINT
.
-
Правила для Suricata (IPS)
alert tcp any any -> $HOME_NET 445 (msg:"CVE-2023-21752 Exploit Attempt"; flow:to_server; content:"|FF|SMB"; depth:4; content:"|00|"; distance:0; content:"CreateDirectory"; content:"GetTmpDir"; distance:0; sid:2023021752; rev:1;)
Где размещать IPS: На шлюзах доступа к критичным серверам (RDP-шлюзы, VPN-серверы) для детекта попыток передачи эксплоита.
Заключение
BDU:2023-00067 (CVE-2023-21752) — критичная уязвимость, требующая локального доступа, но позволяющая получить полный контроль над системой. Для защиты необходимо:
-
Срочно обновить ОС.
-
Внедрить политику минимальных привилегий.
-
Мониторить аномальную активность (создание symlinks, oplocks).
