Уязвимости в CUPS: удаленное выполнение кода в Linux – с ограниченным риском

2024-09-27 1611 комментарии
В CUPS обнаружены уязвимости, позволяющие злоумышленникам удаленно выполнять код через принтеры. Однако для успешной атаки требуется включенный демон cups-browsed, который по умолчанию отключен

При определенных условиях злоумышленники могут использовать набор уязвимостей в нескольких компонентах открытого сервера печати CUPS для удаленного выполнения произвольного кода на уязвимых устройствах.

Уязвимости отслеживаются под идентификаторами:

  • CVE-2024-47076 (libcupsfilters)
  • CVE-2024-47175 (libppd)
  • CVE-2024-47176 (cups-browsed)
  • CVE-2024-47177 (cups-filters)

Уязвимости обнаружил Симоне Маргарителли (Simone Margaritelli). Данные уязвимости не затрагивают системы с настройками по умолчанию.

CUPS (Common UNIX Printing System) — самая распространенная система печати в Linux, поддерживаемая и на других Unix-подобных ОС, таких как FreeBSD, NetBSD и OpenBSD.

Один из компонентов системы — демон cups-browsed, который ищет в локальной сети принтеры, доступные для печати, и делает их доступными для системы. Это похоже на то, как Windows и macOS могут находить сетевые принтеры.

Маргарителли обнаружил, что если демон cups-browsed включен (что бывает не на всех системах), то он прослушивает UDP-порт 631 и позволяет удаленным устройствам подключаться к нему для создания новых принтеров.

Исследователь смог создать вредоносный принтер с описанием PostScript Printer Description (PPD), который вручную передавался уязвимой службе cups-browsed, работающей через UDP-порт 631.

Это приводит к тому, что удаленное устройство автоматически устанавливает вредоносный принтер и делает его доступным для печати. Если пользователь на уязвимом сервере отправит задание на печать через этот принтер, вредоносная команда, содержащаяся в файле PPD, будет выполнена на локальном компьютере.

Команда для выполнения добавляется через фильтр foomatic-rip, который исполняет команды на устройстве для корректного отображения задания на печать.

Команды, добавленные с помощью фильтра foomatic-rip

Ограниченное влияние

Хотя речь идет о цепочке для удаленного выполнения кода (RCE), злоумышленникам придется преодолеть несколько препятствий для ее успешной эксплуатации.

Во-первых, на целевой системе должен быть включен демон cups-browsed, который по умолчанию отключен. Во-вторых, злоумышленнику необходимо убедить пользователя печатать через вредоносный принтер, который внезапно появится в его локальной сети.

Илкка Турунен (Ilkka Turunen), технический директор Sonatype, отмечает:

Цепочка ошибок основывается на подмене принтера в вашей локальной сети, который автоматически добавляется через сетевое обнаружение. Затем переменная, которую не проверяют, используется для эксплуатации других уязвимостей системы CUPS, но только когда начинается печать.

Хорошая новость состоит в том, что данная уязвимость удаленного выполнения кода имеет много ограничений: злоумышленнику необходимо подключиться к компьютеру через UDP, который обычно отключен на сетевом уровне, и сам сервис cups-browsed обычно не включен по умолчанию. Кажется, что реальное воздействие довольно ограничено.

По этой причине компания Red Hat оценила данные уязвимости как «важные», а не критические.

Патчи недоступны, но есть меры по снижению риска

Хотя патчи еще находятся в разработке, Red Hat предложила меры по устранению проблемы: администраторы могут остановить службу cups-browsed и отключить ее автозапуск при помощи следующих команд:

sudo systemctl stop cups-browsed

sudo systemctl disable cups-browsed

Пользователи Red Hat также могут проверить, работает ли cups-browsed на их системе:

sudo systemctl status cups-browsed

Если в результате выводится Active: inactive (dead), значит, система защищена. Если же служба имеет статус running или enabled, и в конфигурационном файле /etc/cups/cups-browsed.conf указано значение cups для директивы BrowseRemoteProtocols, то система остается уязвимой.

© . По материалам Bleeping Computer
Комментарии и отзывы

Нашли ошибку?

Новое на сайте