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". В дистрибутивах с 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 обязательно


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

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

     
     
  • 2.3, Аноним (3), 10:39, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На Почте России уже отменяют договора на покупку лицензий.
     
  • 2.11, test (??), 10:52, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Apple просто так что ли CUPS купила ?
     
     
  • 3.19, Аноним (19), 11:26, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Там не всё так просто. Она его сначала купила, а потом выкинула на мороз. Но бывший разраб почему-то стал работать исключительно в интересах apple. Например, запланировано выкидывание PPD и Kerberos. Плюс обратная совместимость ломается, старые принтеры скорее всего отвалятся.
     

  • 1.4, Аноним (4), 10:45, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Зачем сишники встраивают уязвимости в свои программы? Это такая спец олимпиада?
     
     
  • 2.12, Аноним (12), 10:56, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты посмотри, кто там разработчик, и всё станет понятно. Это бекдор на бэкдоре и в основе максимально дефективная технология, которая была выбрана осознанно.
     
     
  • 3.18, Аноним (-), 11:25, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А почему тогда все этим пользуются?
    Почему линукс сообщество это терпит?

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

     
     
  • 4.39, Аноним (39), 12:09, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А почему тогда все этим пользуются?
    > Почему линукс сообщество это терпит?

    потому что systemd-cupsd еще не вышел)

     
  • 2.20, Аноним (20), 11:29, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ага, в данной ситуации, Хруст сильно бы помог? Скорее, бы даже затруднил обнаружение этой уязвимости своим синтаксисом.
     
  • 2.37, Аноним (37), 11:57, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем Растовики встраивают уязвимости в свои программы? Это такая спец олимпиада?
    https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=rust
     
     
  • 3.42, Аноним (-), 12:12, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Отличный пример
    Например
    cve.org/CVERecord?id=CVE-2019-13225

    A NULL Pointer Dereference in match_at() in regexec.c in Oniguruma 6.9.2 allows attackers to potentially cause denial of service by providing a crafted regular expression. Oniguruma issues often affect Ruby, as well as common optional libraries for PHP and Rust.

    Какие плохие растовики! Используют дырявое сишное овно!
    Осуждаю и порицаю!

     

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

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

     
     
  • 2.8, Минона (ok), 10:48, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но.. есть же Hardened Linux!
     
     
  • 3.41, Аноним (5), 12:12, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это костыли-подпорки. OpenBSD изначально разрабатывался с оглядкой на безопасность. Hardened Linux лишь пытается ослабить существующие дырени.
     
  • 3.49, Афроним (?), 12:26, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А вот, если на обычном профиле добавить флаг set и к CFLAGS="-fstack-protector-strong" Этого может быть достаточно или нужен обязательно закаленный профиль? (GCC пересобранный, как бы это само собой разумеющееся.)
     
  • 2.21, Аноним (20), 11:31, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >позволяющих удалённо атаковать ... и некоторые другие BSD-системы
     
     
  • 3.26, Аноним (5), 11:41, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    1. Cups в OpenBSD по умолчанию отключен, в отличие от популярных дистрибутивов Linux.
    2. Комментарий разработчика cusp (который написан выше) относится к Linux в целом, а не только конкретно к cups.
     
     
  • 4.32, Аноним (20), 11:50, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну т.е., нет печати - нет уязвимости. Ясно.
     
     
  • 5.36, Аноним (5), 11:54, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чего проигнорировали 2 пункт? Я изначально про него имел в виду.
     
  • 3.28, Аноним (5), 11:42, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >С _общей_ точки зрения безопасности _вся_ система Linux

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

     

  • 1.6, Минона (ok), 10:46, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Когда там выходит CUPS-RS?
     
     
  • 2.22, Аноним (20), 11:34, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чем он тебе поможет от этой тонкой манипуляции параметрами конфигурации? Или швященный Rust - щит от всего?
     
  • 2.23, Аноним (23), 11:35, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Когда там выходит CUPS-RS?

    Когда в стандартную библиотеку используемого языка добавят функцию ippValidateAttribute, которая будет автоматически вызываться в отсутствующем рантайме.

     
  • 2.25, Аноним (25), 11:38, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Только фанаты раста из-за своего большого ума считают, что этот язык избавляет от любых уязвимостей на свете.
     
     
  • 3.31, Аноним (31), 11:49, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вера в святой раст спасает.
     
  • 3.50, Аноним (-), 12:27, 27/09/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     

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



    -  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%, а не, не обязательно.
    Мы же тут профессионалы.

     
     
  • 2.27, Аноним (25), 11:42, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > C 92.5% C++ 4.1%, а не, не обязательно.
    > Мы же тут профессионалы.

    То ли дело раст, который  

    && ippValidateAttribute(attr)

    добавит автоматом во все поля.

     
     
  • 3.30, Аноним (20), 11:46, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это будет тогда, когда в компанию к чекеру боровов добавят AI.
     
     
  • 4.34, Аноним (31), 11:51, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Он будет отправлять тому кто забыл проверить атрибуты борова чтобы боров ему почикал кое что.
     
     
  • 5.38, Аноним (20), 11:58, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В том, что со временем rustc начнёт отправлять куда-то что-то, я не сомневаюсь.
     
  • 3.40, Аноним (-), 12:10, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет конечно, нзачем добавлять во все поля дырявую поделку которая помирает от UTF-8
    github.com/apple/cups/commit/d9f301dd149477803d806414bed14d0d75910eea
    -       if ((*ptr & 0xc0) != 0x80)
    +       if ((ptr[1] & 0xc0) != 0x80 || (ptr[2] & 0xc0) != 0x80)
     
  • 3.48, Аноним (-), 12:25, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А причем тут раст?
    Уверен что хороший программист проверял бы атрибуты на любом языке, хоть на паскале, хоть на джаве.
    Но самоуверенные "самые лучшие программисты" почему-то на это забивают.
     
  • 2.29, Аноним (20), 11:42, 27/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Ого, атрибуты надо оказывается проверять!

    Да, это не про безопасТную работу с памятью компутера, а про память программиста.

     

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

  • 1.43, Аноним (43), 12:13, 27/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И это только верхушка айсберга под названием "remote shell" через систему печати, который позволяет через жабаскрипт, загружаемый с сайта, гулять по локальным машинам.
     
  • 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 [^] [^^] [^^^] [ответить]  
  • +/
    Чем? Есть код, который запускает всё что ему пропишут в фуматик строку? По-моему это большая проблема чем неточный парсинг.
     

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



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

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