Открыть сервис

PrintNightmare

PrintNightmare — это условное название уязвимости в службе очереди печати Windows (Print Spooler), позволяющей неавторизованному удалённому или локальному пользователю выполнить произвольный код с системными привилегиями на уязвимой системе. Уязвимость получила широкую известность в июне 2021 года после публикации исследователями из компании Sangfor Technologies доказательства эксплуатации (PoC) и последующего выпуска патчей корпорацией Microsoft.

История

Обнаружение и публикация

Уязвимость была обнаружена исследователями безопасности из китайской компании Sangfor Technologies. В июне 2021 года они опубликовали в открытом доступе технические детали и рабочий эксплойт для уязвимости, обозначенной как CVE-2021-1675. Первоначально Microsoft классифицировала эту уязвимость как «важную» (Important) и выпустила патч в рамках ежемесячного обновления безопасности 8 июня 2021 года. Однако вскоре выяснилось, что опубликованный эксплойт эксплуатирует не только CVE-2021-1675, но и другую, более критическую уязвимость, которая не была исправлена.

Присвоение названия и реакция Microsoft

После публикации эксплойта сообщество специалистов по безопасности присвоило уязвимости неофициальное название PrintNightmare. 29 июня 2021 года Microsoft подтвердила, что CVE-2021-34527 является отдельной, более опасной уязвимостью, связанной с удалённым выполнением кода в службе Print Spooler. Компания повысила уровень критичности до «критический» (Critical) и экстренно выпустила внеплановые обновления безопасности 6 июля 2021 года. Впоследствии были обнаружены и исправлены дополнительные варианты обхода защиты (CVE-2021-34481, CVE-2021-36958).

Последующие события

В течение 2021–2022 годов исследователи и злоумышленники неоднократно находили способы обхода выпущенных патчей. Microsoft выпустила серию обновлений, постепенно закрывающих векторы атаки. В августе 2022 года компания объявила, что уязвимость PrintNightmare полностью устранена во всех поддерживаемых версиях Windows. Однако отдельные случаи эксплуатации остаточных проблем в конфигурациях, не соответствующих рекомендациям Microsoft, фиксировались и в 2023 году.

Технические детали

Механизм уязвимости

Уязвимость PrintNightmare затрагивает службу Print Spooler (spoolsv.exe), которая отвечает за управление очередью печати в операционных системах Windows. Основная проблема заключается в недостаточной проверке прав доступа при вызове функции RpcAddPrinterDriver или RpcAsyncAddPrinterDriver. Злоумышленник может отправить специально сформированный запрос на добавление драйвера принтера, который будет выполнен с привилегиями SYSTEM — наивысшим уровнем доступа в Windows.

Векторы атаки

Существует два основных вектора эксплуатации:

  • Удалённая атака (Remote Code Execution — RCE): Злоумышленник, находящийся в одной сети с уязвимой системой, может отправить вредоносный запрос службе Print Spooler без какой-либо аутентификации. Атака возможна, если на целевом компьютере включена служба очереди печати и доступен удалённый вызов процедур (RPC).
  • Локальная атака (Local Privilege Escalation — LPE): Пользователь с ограниченными правами (например, обычный пользователь) может повысить свои привилегии до уровня SYSTEM, запустив эксплойт локально. Этот вектор часто используется для закрепления в системе после первоначального взлома.

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

Уязвимости были подвержены все поддерживаемые на момент обнаружения версии Windows, включая:

Классификация

CVE-идентификаторы

В рамках PrintNightmare было зарегистрировано несколько идентификаторов CVE (Common Vulnerabilities and Exposures):

ИдентификаторОписаниеТип
CVE-2021-1675Уязвимость удалённого выполнения кода в Print Spooler (первоначально исправлена, но позже обнаружена неполнота патча)RCE
CVE-2021-34527Критическая уязвимость удалённого выполнения кода, ставшая основой PrintNightmareRCE / LPE
CVE-2021-34481Уязвимость повышения привилегий, позволяющая локальному пользователю получить SYSTEMLPE
CVE-2021-36958Уязвимость, позволяющая обойти патчи для CVE-2021-34527 при определённых условияхRCE / LPE

Типы эксплуатации

  • Point-and-Print: Атака, использующая стандартный механизм Windows для установки драйверов принтера с сервера. Злоумышленник может подменить драйвер на вредоносный.
  • RPC-атака: Прямая отправка вредоносного RPC-запроса к службе Print Spooler.

Применение и значение

Вредоносное применение

PrintNightmare активно использовалась злоумышленниками для:

  • Первоначального взлома: Проникновение в корпоративные сети через уязвимые серверы печати.
  • Повышения привилегий: Получение полного контроля над системой после компрометации учётной записи обычного пользователя.
  • Распространения вредоносного ПО: Установка бэкдоров, шифровальщиков, программ-шпионов.
  • Кибершпионажа: Доступ к конфиденциальным данным на серверах.

Значение для безопасности

PrintNightmare стала одной из самых значимых уязвимостей Windows за последние годы по нескольким причинам:

  • Широкий охват: Уязвимыми оказались миллионы устройств по всему миру, включая критически важные серверы.
  • Простота эксплуатации: Публикация готового эксплойта сделала атаку доступной даже для малоопытных злоумышленников.
  • Длительность исправления: Несколько месяцев потребовалось для полного закрытия всех векторов атаки, что дало злоумышленникам значительное окно возможностей.
  • Влияние на архитектуру: Уязвимость выявила фундаментальные проблемы в архитектуре службы Print Spooler, что привело к пересмотру Microsoft подходов к безопасности встроенных компонентов Windows.

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

Официальные патчи Microsoft

Основным методом защиты является установка всех обновлений безопасности, выпущенных Microsoft, начиная с июля 2021 года. Для полной защиты необходимо установить накопительные обновления за июль, август и сентябрь 2021 года, а также последующие обновления, закрывающие обходные пути.

Временные меры

До установки патчей Microsoft рекомендовала следующие временные меры:

  • Отключение службы Print Spooler: Если печать не требуется, службу можно отключить на всех серверах и рабочих станциях. Это наиболее эффективная, но не всегда применимая мера.
  • Блокировка входящего RPC-трафика: Настройка брандмауэра для блокировки портов 135, 139, 445 и 49152-65535, используемых для RPC-коммуникаций.
  • Отключение функции Point-and-Print через групповые политики: Запрет на установку драйверов принтера с удалённых серверов без подтверждения администратора.

Рекомендации по конфигурации

  • Использование политики RestrictDriverInstallationToAdministrators для ограничения установки драйверов принтера только администраторами.
  • Настройка Package Point and Print — Approved servers для указания доверенных серверов печати.
  • Регулярный аудит журналов событий Windows на предмет попыток эксплуатации PrintNightmare (события с идентификаторами 316, 808, 814).

Интересные факты

  • Название «PrintNightmare» было придумано исследователями безопасности вскоре после публикации эксплойта. Оно обыгрывает игрушечного персонажа «Бонзи» из мультфильмов, а также слово «nightmare» (кошмар), отражая серьёзность проблемы.
  • Первоначально Microsoft ошибочно классифицировала уязвимость как «важную», а не «критическую», что привело к задержке с выпуском экстренного патча.
  • В августе 2021 года Microsoft выпустила обновление, которое по умолчанию отключает службу Print Spooler на контроллерах домена, если на них не установлена роль сервера печати.
  • PrintNightmare стала одной из первых уязвимостей, для которой Microsoft выпустила внеплановое обновление безопасности за пределами «вторника патчей» (Patch Tuesday) с 2020 года.

Критика

Действия Microsoft в связи с PrintNightmare подверглись критике со стороны сообщества специалистов по безопасности. Основные претензии касались:

  • Недостаточной первоначальной оценки: Занижение уровня критичности уязвимости.
  • Медленной реакции: Потребовалось несколько недель для выпуска полноценного патча после публикации эксплойта.
  • Неполноты исправлений: Первые патчи не закрывали все возможные векторы атаки, что потребовало выпуска дополнительных обновлений.
  • Архитектурных проблем: Критики отмечали, что уязвимость является следствием фундаментальных недостатков в архитектуре службы Print Spooler, которые не были исправлены десятилетиями.

Источники

  • Microsoft Security Response Center. (2021). CVE-2021-34527 | Windows Print Spooler Remote Code Execution Vulnerability.
  • Sangfor Technologies. (2021). Technical Analysis of PrintNightmare.
  • MITRE Corporation. (2021). CVE-2021-1675, CVE-2021-34527, CVE-2021-34481, CVE-2021-36958.
  • Национальный институт стандартов и технологий (NIST). (2021). National Vulnerability Database (NVD) — описания CVE.
  • Аналитические отчёты компаний в области кибербезопасности (Kaspersky, Positive Technologies, Group-IB) за 2021–2022 годы.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →