Симоне Маргарителли, автор на защитната стена 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 с опити да ги убеди за важността на проблема и необходимостта от подготовка на пачове. Обсъждането е заплетено в спорове дали изобщо да се поправят посочените проблеми, и ситуацията е успяла да вземе обрат единствено след публичен шум относно откритата критична уязвимост. Интересното също е появата на изтичане на информация, при което предадените в CERT конфиденциален отчет и експлойт се появили на форума breachforums.st в открит достъп, въпреки наложеното ембарго за разкриване на информация.
Източник: opennet.ru
