Спецпроекты

Все Windows, выпущенные с 1996 г., можно взломать простым и необычным способом

Безопасность Администратору Стратегия безопасности Пользователю Интеграция Системное ПО Маркет
Microsoft исправила уязвимость Printdemon, которая затрагивает все версии Windows, выпущенные с 1996 г. С ее помощью можно было добиться локального повышения привилегий, причем весьма простым и необычным способом.

Многолетняя ошибка в Windows

Исследователи безопасности Алекс Ионеску (Alex Ionescu) и Ярден Шафир (Yarden Shafir) опубликовали детальные сведения об опасной уязвимости в службе печати операционной системы Windows. Согласно представленному специалистами отчету, проблема присутствует во всех версиях ОС корпорации Microsoft, начиная с Windows NT 4, релиз которой состоялся летом 1996 г.

Уязвимость, получившая название Printdemon, связана с диспетчером очереди печати Windows или Windows Print Spooler. Зная о ней, злоумышленник с локальным доступом без особых привилегий, по сути, с помощью лишь одной команды в интегрированной среде сценариев Powershell может получить права администратора. Эксплуатация бреши возможна и в системах, не имеющих данного инструмента, но для этого потребуется несколько больше усилий.

Первыми Printdemon обнаружили специалисты компании Safebreach Labs Пелег Хадар (Peleg Hadar) и Томер Бар (Tomer Bar), сообщившие о ней Microsoft. Уязвимость CVE-2020-1048 была исправлена в обновлении безопасности, вышедшем в рамках традиционного «патчевого вторника» (Patch Tuesday), который в этот раз выпал на 13 мая 2020 г.

Эксплуатация уязвимости

По задумке разработчиков, служба Windows Print Spooler должна принимать задания на печать от любых запущенных приложений, вне зависимости от того, с какими полномочиями они выполняются.

Принцип эксплуатации уязвимости заключается в том, что злоумышленник, используя любую доступную учетную запись в Windows, может «отправить на печать» бинарный код собственной программы через порт, который на самом деле представляет собой файл, к примеру, системной библиотеки.

w600.jpg
Microsoft исправила уязвимость Printdemon, которая затрагивает все версии Windows, выпущенные с 1996 г.

Чтобы получить права на запись в такой файл, принудительно вызывается сбой службы Windows Print Spooler, в результате чего она автоматически перезапускается, причем уже с самыми широкими привилегиями (SYSTEM). Затем процесс печати в системный файл успешно доводится до завершения.

Напомним, при добавлении принтера в качестве порта вывода на печать, помимо обычных USB/LPT-интерфейсов или сетевого порта TCP, можно указать локальный файл. Авторы особо подчеркивают, что «печать в файл» и «печать через порт, указывающий на файл» не одно и то же. В рамках Windows Print Spooler это две принципиально разные концепции, причем последняя не очень хорошо документирована.

Основная проблема для злоумышленника в данном случае заключается в том, что ему необходимо обладать теми же привилегиями, которые нужны для доступа к файлу-порту, в который будет «заливаться» вредоносный код.

Однако, как выяснили ИБ-специалисты, и эта трудность решается, причем элементарно. В частности, при использовании Powershell команды "Add-PrinterPort -Name c:\windows\system32\ualapi.dll" будет достаточно, чтобы добавить в систему порт, указывающий на системную библиотеку ualapi.dll. После чего можно легко добавить в систему новый виртуальный принтер, который будет «печатать» прямо в нее от имени любого пользователя. Это возможно из-за ошибочной реализации проверки корректности имени порта – она в Windows осуществляется лишь на уровне пользовательского интерфейса (клиентской части). Используя же инструменты вроде того же Powershell, к серверной части службы управления очередью печати можно обратиться напрямую.

Другие критические баги в Windows

В январе 2020 г. CNews рассказывал о другой опасной уязвимости в экосистеме Windows. Microsoft обнаружила брешь, позволяющуюя производить удаленный запуск произвольного кода в контексте браузера Internet Explorer и текущей пользовательской сессии. В теории это могло привести к полной компрометации системы.

Неделей ранее сетевые источники предсказали, что в ближайшем патче Microsoft исправит чрезвычайно опасную уязвимость в Windows, которая затрагивает все выпущенные за последние 20 лет версии OC. Microsoft данную информацию комментировала уклончиво, но в итоге патч все-таки выпустила.