При определенных условиях злоумышленники могут использовать набор уязвимостей в нескольких компонентах открытого сервера печати 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, то система остается уязвимой.
Linux: обзоры и обновления
• VacuumTube — лучший способ смотреть YouTube на Steam Deck и SteamOS
• Steam Deck и SteamOS: более 20 000 игр получили статус «Полностью совместима» или «Можно играть»
• Proton Experimental получил исправления для Warframe, Enshrouded, Crysis 2 Remastered и других игр на Linux и Steam Deck
• Wine 10.10: новые функции и исправления для Windows-приложений
• 3DMark планирует выпустить версию для Linux
• Manjaro KDE Plasma переходит на Wayland по умолчанию