The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Удалённо эксплуатируемые уязвимости в сервере печати CUPS

27.09.2024 09:49

Симоне Маргарителли (Simone Margaritelli), автор межсетевого экрана OpenSnitch и сетевого анализатора bettercap, досрочно раскрыл информацию о ранее анонсированных критических уязвимостях, позволяющих удалённо атаковать дистрибутивы GNU/Linux, Solaris, FreeBSD и некоторые другие BSD-системы. Изначально публикация была запланирована на 6 октября, но из-за утечки информации сведения пришлось опубликовать досрочно, до того как большинство дистрибутивов успеет подготовить обновление пакетов. Уязвимости затрагивают сервер печати CUPS и позволяют удалённо без прохождения аутентификации добиться выполнения кода в системе.

Выявившим проблему исследователем подготовлен рабочий прототип эксплоита, использующий комбинацию из нескольких уязвимостей и позволяющий удалённо выполнить код с правами процесса обработки заданий вывода на печать CUPS (обычно это пользователь "lp"). Эксплоит позволяет незаметно заменить параметры принтера пользователя или добавить новый принтер, связанный с запущенным атакующим IPP-сервером, который отдаёт специально оформленное PPD-описание принтера, Обработка данного PPD во время запуска работы вывода на печать приводит к выполнению кода атакующего (необходимо, чтобы жертва инициировала печать на подставленный или заменённый атакующим принтер).

Атаке подвержены системы с сервером печати CUPS и запущенным процессом cups-browsed, принимающим сетевые соединения на 631 порту (UDP). Атака также может быть совершена из локальной сети, в которой для доступа к серверу печати используются протоколы zeroconf, mDNS или DNS-SD. Уязвимы только конфигурации cups-browsed в которых в файле /etc/cups/cups-browsed.conf в параметре BrowseRemoteProtocols указано значение "cups". Во многих дистрибутивах Linux процесс cups-browsed запущен по умолчанию в конфигурации, допускающей эксплуатацию уязвимости. В дистрибутивах с systemd проверить использование сервиса cups-browsed можно командой "sudo systemctl status cups-browsed".

Уязвимость проявляется во всех системах печати на базе CUPS, в которых используются уязвимые версии пакетов cups-filters, libcupsfilters, libppd и cups-browsed. Исправления пока доступны только в виде патчей (1, 2, 3) - актуальные версии cups-filters 2.0.1, libcupsfilters 2.1b1, libppd 2.1b1 и cups-browsed 2.0.1 подвержены уязвимостям. В дистрибутивах проблема остаётся неисправленной, проследить за появлением обновлений можно на следующих страницах: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. В качестве обходного пути защиты до установки обновления можно закрыть для внешних сетей доступ к UDP-порту 631, отключить сервис cups-browsed или выставить настройку BrowseRemoteProtocols в значение "none".

Выявленные уязвимости:

  • CVE-2024-47176 - уязвимость в процессе cups-browsed, который создаёт сетевой сокет, принимающий соединения на 631 порту, прикрепляемый ко всем имеющимся в системе сетевым интерфейсам и принимающий IPP-запросы "Get-Printer-Attributes" от любых внешних систем. Через манипуляцию с данным сервисом можно добиться добавления в систему принтера, контролируемого атакующим, и эксплуатировать через передачу PPD-конфигурации уязвимости в других компонентах CUPS.
  • CVE-2024-47177 - узявимость в обработчике foomatic-rip из набора cups-filters, позволяющая добиться выполнения кода через передачу параметра FoomaticRIPCommandLine в PPD-файле, который атакующий может передать благодаря вышеописанной уязвимости в cups-browsed. Указанные в параметре FoomaticRIPCommandLine shell-команды выполняются как есть, без учёта того, что параметр может выставить посторонний. Например, для записи в файл /tmp/VULNERABLE можно указать "FoomaticRIPCommandLine: "echo 1 > /tmp/VULNERABLE".
  • CVE-2024-47175 - уязвимость в libppd, вызванная отсутствием проверки корректности значения ppdCreatePPDFromIPP2 при записи IPP-атрибутов во временный PPD-файл. Проблема позволяет добиться подстановки произвольных данных в результирующий PPD-файл через прикрепление атрибутов, используя символ перевода строки. Например, можно обойти проверку и вместе с разрешёнными атрибутами подставить атрибут FoomaticRIPCommandLine для эксплуатации вышеотмеченной уязвимости в cups-filters.
  • CVE-2024-47076 - уязвимость в библиотеке libcupsfilters из пакета cups-filters, связанная с отсутствием проверки значений cfGetPrinterAttributes5, возвращаемых внешним IPP-сервером, что даёт атакующему возможность организовать обработку произвольных IPP-атрибутов в других подсистемах CUPS, например, при генерации PPD-файлов.


Сценарий атаки на CUPS сводится к следующим шагам:

  • Развёртывание атакующим собственного IPP-сервера.
  • Отправка жертве UDP-пакета со ссылкой на принтер, привязанный к запущенному атакующим IPP-серверу.
  • После получения данного пакета система жертвы подключается к IPP-серверу атакующего и запрашивает атрибуты принтера.
  • В ответ на запрос жертвы IPP-сервер атакующего возвращает PPD-файл с атрибутами, среди которых указывается атрибут FoomaticRIPCommandLine. Данный атрибут прикрепляется к одному из допустимых атрибутов, используя символ "\n" в одной строке (например, "cupsPrivacyURI: "https://www.google.com/\n*FoomaticRIPCommandLine: "), что позволяет обойти проверку и приводит к записи FoomaticRIPCommandLine как отдельного атрибута при сохранении полученных данных во временный файл.
  • В результате обработки переданных атрибутов в системе жертвы создаётся PPD-файл:
    
    ...
    *cupsSNMPSupplies: False
    *cupsLanguages: "en"
    *cupsPrivacyURI: "https://www.google.com/"
    *FoomaticRIPCommandLine: "echo 1 > /tmp/I_AM_VULNERABLE"
    *cupsFilter2 : "application/pdf application/vnd.cups-postscript 0 foomatic-rip"
    *cupsSingleFile: True
    *cupsFilter2: "application/vnd.cups-pdf application/pdf 0 -"
    ...
    
  • При выводе на печать на подставленный атакующим принтер на системе жертвы будет выполнена команда "echo 1 > /tmp/I_AM_VULNERABLE"


Выявивший уязвимости исследователь отмечает, что на поиск уязвимости у него ушло пару дней, но затем последовала затянувшиеся на 22 дня переписка с разработчиками проекта OpenPrinting c попыткой убедить их в важности проблемы и необходимости подготовки патчей. Обсуждение погрязло в спорах о том, стоит ли вообще исправлять указанные проблемы, и ситуацию удалось переломить лишь подняв публичный хайп о выявлении критической проблемы. Интересно также появление утечки информации, в ходе которой переданные в CERT конфиденциальный отчёт и эксплоит появились на форуме breachforums.st в открытом доступе, несмотря на выставленное эмбарго на раскрытие информации.

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Первый выпуск Pwnagotchi, игрушки для взлома WiFi-сетей
  3. OpenNews: Проект OpenPrinting выпустил систему печати CUPS 2.4.0
  4. OpenNews: Уязвимости в системе печати CUPS
  5. OpenNews: Уязвимость в cups-filters, позволяющая выполнить код на сервере
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61942-cups
Ключевые слова: cups
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (46) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 10:36, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Уязвимость в сервере печати на линуксе

    Ребят, можете не переживать)

     
     
  • 2.3, Аноним (3), 10:39, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На Почте России уже отменяют договора на покупку лицензий.
     
  • 2.11, test (??), 10:52, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Apple просто так что ли CUPS купила ?
     
     
  • 3.19, Аноним (19), 11:26, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Там не всё так просто. Она его сначала купила, а потом выкинула на мороз. Но бывший разраб почему-то стал работать исключительно в интересах apple. Например, запланировано выкидывание PPD и Kerberos. Плюс обратная совместимость ломается, старые принтеры скорее всего отвалятся.
     
     
  • 4.52, adolfus (ok), 12:36, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В смысле, отвалятся? Никто не мешает любой принтер установить, как "Generic Postscript".
     
     
  • 5.54, Аноним (54), 12:41, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как Canon с своим ccpd выставить в Generic Postscript?
     
  • 5.61, Аноним (19), 13:02, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Большинство дешёвых принтеров кушают растр, так что с твоим PostScript заработает пара моделей от силы.
     
  • 4.63, Аноним (63), 13:13, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    установим виндового гостя
    и будем печатать оттуда
     

  • 1.5, Аноним (5), 10:46, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >Как сказал человек, непосредственно участвовавший в проекте CUPS:
    >С общей точки зрения безопасности вся система Linux в ее нынешнем виде представляет собой просто бесконечную и безнадежную мешанину дыр в безопасности, ожидающих, чтобы ими воспользовались.

    Переходим на OpenBSD, господа.

     
     
  • 2.8, Минона (ok), 10:48, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но.. есть же Hardened Linux!
     
     
  • 3.41, Аноним (5), 12:12, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это костыли-подпорки. OpenBSD изначально разрабатывался с оглядкой на безопасность. Hardened Linux лишь пытается ослабить существующие дырени.
     
  • 3.49, Афроним (?), 12:26, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А вот, если на обычном профиле добавить флаг set и к CFLAGS="-fstack-protector-strong" Этого может быть достаточно или нужен обязательно закаленный профиль? (GCC пересобранный, как бы это само собой разумеющееся.)
     
     
  • 4.62, Афроним (?), 13:08, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    cet**
     
  • 3.56, Аноним (56), 12:52, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Но.. есть же Hardened FreeBSD!

    // fixed.

     
  • 2.21, Аноним (21), 11:31, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >позволяющих удалённо атаковать ... и некоторые другие BSD-системы
     
     
  • 3.26, Аноним (5), 11:41, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    1. Cups в OpenBSD по умолчанию отключен, в отличие от популярных дистрибутивов Linux.
    2. Комментарий разработчика cusp (который написан выше) относится к Linux в целом, а не только конкретно к cups.
     
     
  • 4.32, Аноним (21), 11:50, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну т.е., нет печати - нет уязвимости. Ясно.
     
     
  • 5.36, Аноним (5), 11:54, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чего проигнорировали 2 пункт? Я изначально про него имел в виду.
     
     
  • 6.65, Аноним (63), 13:16, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ну т.е. всем пора на винду?
    а сам то разработчик где шарится?
     
  • 4.79, Аноним (-), 14:17, 27/09/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.28, Аноним (5), 11:42, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >С _общей_ точки зрения безопасности _вся_ система Linux

    Чёрным по белому: здесь про Linux в целом.

     
     
  • 4.66, Аноним (63), 13:17, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну так где она та самая тихая гавань?
    мы ж все про это
     
     
  • 5.68, Аноним (5), 13:34, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чел, есть грань между смешным троллингом и не смешным. На твой вопрос ответ есть. Не вижу в твоём комментарии чего-либо смешного.
     
     
  • 6.69, Аноним (69), 13:40, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так это твоя личная никого не интересующая проблема.
     
     
  • 7.71, Аноним (5), 13:42, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Бежала за вами чтобы сообщить, что вы мне безразличны...
     

  • 1.17, Аноним (-), 11:19, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Так-так-так, посмотрим как патчи



    -  else  
    +  else if (*ipp == '_' || *ipp == '.' || *ipp == '-' || isalnum(*ipp))
        {



    - if ((attr = ippFindAttribute(supported, "printer-requested-job-attributes", IPP_TAG_KEYWORD)) != NULL)
    + if ((attr = ippFindAttribute(supported, "printer-requested-job-attributes", IPP_TAG_KEYWORD)) != NULL && ippValidateAttribute(attr))


    Ого, атрибуты надо оказывается проверять!

    C 92.5% C++ 4.1%, а не, не обязательно.
    Мы же тут профессионалы.

     
  • 1.33, Бутерброд (?), 11:51, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Полагаю, коль скоро в новости нет упоминания о MacOS, данные системы не подвержены обсуждаемой уязвимости?
     
     
  • 2.35, Аноним (21), 11:53, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Очень даже, скорее всего. ;)
     
     
  • 3.46, анон (?), 12:20, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    отнюдь. подвержены как и все остальные, использующие CUPS
     
  • 2.45, анон (?), 12:19, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    плодово-ягодные обновились ещё 18-ого сентября: https://www.cisa.gov/news-events/alerts/2024/09/18/apple-releases-security-upd
     

  • 1.43, Аноним (43), 12:13, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И это только верхушка айсберга под названием "remote shell" через систему печати, который позволяет через жабаскрипт, загружаемый с сайта, гулять по локальным машинам.
     
     
  • 2.67, Аноним (63), 13:19, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    вот я хожу по сайтам с отключенными скриптами.
    это правильно?
     
     
  • 3.76, Аноним (76), 14:08, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В браузерах есть что-то типа своего встроенного avahi. Эту хрень тоже надо отключить.
     

  • 1.44, Аноним (44), 12:16, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-то пояснит каким образом левая строка
    *FoomaticRIPCommandLine: "echo 1 > /tmp/I_AM_VULNERABLE"

    будет выполнена на системе жертвы?

     
     
  • 2.47, Аноним (19), 12:23, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    При печати выполнится же.
     
     
  • 3.51, Аноним (44), 12:29, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чем? Есть код, который запускает всё что ему пропишут в фуматик строку? По-моему это большая проблема чем неточный парсинг.
     
     
  • 4.57, Аноним (19), 12:57, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так он и должен запуститься любой. Там же PostScript и куча других скриптов, чтобы документ из одного формата в преобразовать в тот, который будет кушать принтер.
     
  • 4.64, Аноним (64), 13:14, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Чем?

    Написано ведь,

    Указанные в параметре FoomaticRIPCommandLine shell-команды выполняются как есть.

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

     

  • 1.53, adolfus (ok), 12:39, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не очень понятно, как можно эксплуатировать эти уязвимости.
     
     
  • 2.58, Аноним (69), 12:58, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В пейцджерах тоже думали как же эксплуатировать уязвимость ими же никто не пользуется. А потом придумали.  
     
  • 2.59, Аноним (19), 12:58, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Как минимум надо cups-browsed поставить, который в большинстве случае нафиг не нужен.
     

  • 1.75, Вы забыли заполнить поле Name (?), 14:00, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не зря у меня cupsd отключен.
     
     
  • 2.81, Аноним (69), 14:21, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У тебя и принтера то никогда не было.
     

  • 1.77, Аноним (-), 14:14, 27/09/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.78, Аноним (78), 14:16, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > но затем последовала затянувшиеся на 22 дня переписка с разработчиками проекта OpenPrinting c попыткой убедить

    Вот так всегда. IT-индустрия это вечный бардак из технологий.

     
     
  • 2.80, Аноним (69), 14:21, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну конечно нигде больше бардака нет, а вот в айти бардак так бардак. Смешно.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру