Vzdáleně zneužitelné zranitelnosti v tiskovém serveru CUPS

Simone Margaritelli, autor firewallu OpenSnitch a síťového analyzátoru bettercap, předčasně odhalil informace o dříve oznámených kritických zranitelnostech, které umožňují vzdáleně napadat distribuce GNU/Linux, Solaris, FreeBSD a některé další BSD systémy. Původně mělo být zveřejnění naplánováno na 6. října, ale kvůli úniku informací bylo nutné je zveřejnit dříve, než většina distribucí stihne připravit aktualizace balíčků. Zranitelnosti zasahují server tisku CUPS a umožňují vzdálené vykonání kódu v systému bez autentizace.

Vědec, který problém odhalil, připravil funkční prototyp exploitu využívajícího kombinaci několika zranitelností, který umožňuje vzdálené vykonání kódu s právy procesu zpracování úloh tisku CUPS (obvykle uživatel 'lp'). Exploit nenápadně mění parametry tiskárny uživatele nebo přidává novou tiskárnu spojenou se spuštěným útočníkem IPP serverem, který poskytuje speciálně formátovaný popis tiskárny PPD. Zpracování tohoto PPD během spuštění tiskové úlohy vede k vykonání kódu útočníka (je nutné, aby oběť iniciovala tisk na nahrazené nebo podvodné tiskárně).

Útokem jsou ohroženy systémy s serverem tiskem CUPS a spuštěným procesem cups-browsed, který přijímá síťová spojení na portu 631 (UDP). Útok lze také provést z místní sítě, kde se používají protokoly pro přístup k serveru tisku zeroconf, mDNS nebo DNS-SD. Zranitelné jsou pouze konfigurace cups-browsed, ve kterých je v souboru /etc/cups/cups-browsed.conf v parametru BrowseRemoteProtocols uvedena hodnota 'cups'. V distribucích se systemd lze ověřit používání služby cups-browsed příkazem 'sudo systemctl status cups-browsed'.

Zranitelnost se projevuje ve všech tiskových systémech založených na CUPS, které používají zranitelné verze balíčků cups-filters, libcupsfilters, libppd a cups-browsed. Opravy jsou zatím dostupné pouze ve formě patchů (1, 2, 3) — aktuální verze cups-filters 2.0.1, libcupsfilters 2.1b1, libppd 2.1b1 a cups-browsed 2.0.1 jsou zranitelné. V distribucích problém zůstává neopravený; sledovat nové aktualizace můžete na následujících stránkách: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Jako dočasné ochranné opatření před instalací aktualizace můžete uzavřít přístup k UDP portu 631 pro externí sítě, vypnout službu cups-browsed nebo nastavit volbu BrowseRemoteProtocols na hodnotu „none“.

Zjištěné zranitelnosti:

  • CVE-2024-47176 — zranitelnost v procesu cups-browsed, který vytváří síťový socket, přijímající spojení na portu 631, který je přiřazen ke všem dostupným síťovým rozhraním v systému a přijímá IPP požadavky „Get-Printer-Attributes“ od jakýchkoli externích systémů. Manipulací s touto službou lze dosáhnout přidání tiskárny ovládané útočníkem do systému a zneužít ji prostřednictvím předání PPD konfigurace zranitelnosti v dalších komponentách CUPS.
  • CVE-2024-47177 — zranitelnost v handleru foomatic-rip z balíčku cups-filters, která umožňuje vykonávání kódu předáním parametru FoomaticRIPCommandLine v PPD souboru, který útočník může poslat díky výše popsané zranitelnosti v cups-browsed. V parametru FoomaticRIPCommandLine uvedené shellové příkazy se vykonávají tak, jak jsou, bez ohledu na to, kdo může tento parametr nastavit. Například pro zápis do souboru /tmp/VULNERABLE lze uvést „FoomaticRIPCommandLine: „echo 1 > /tmp/VULNERABLE“.
  • CVE-2024-47175 — zranitelnost v libppd, způsobená absencí kontroly správnosti hodnoty ppdCreatePPDFromIPP2 při zápisu IPP atributů do dočasného PPD souboru. Problém umožňuje dosažení vložení libovolných dat do výsledného PPD souboru prostřednictvím připojení atributů, použitím znaku nového řádku. Například lze obejít kontrolu a spolu s povolenými atributy vložit atribut FoomaticRIPCommandLine pro zneužití výše zmíněné zranitelnosti v cups-filters.
  • CVE-2024-47076 — zranitelnost v knihovně libcupsfilters z balíčku cups-filters, která souvisí s absencí kontroly hodnot cfGetPrinterAttributes5 vracených externím IPP serverem, což útočníkovi umožňuje organizovat zpracování libovolných IPP atributů v jiných subsystémech CUPS, například při generování PPD souborů.

Útokový scénář na CUPS se skládá z následujících kroků:

  • Nasazení vlastního IPP serveru útočníkem.
  • Odeslání UDP paketu oběti s odkazem na tiskárnu připojenou k běžícímu útočníkovu IPP serveru.
  • Po obdržení tohoto paketu se systém oběti připojuje k útočníkovu IPP serveru a žádá o atributy tiskárny.
  • Na žádost oběti vrací útočníkův IPP server PPD soubor s atributy, mezi kterými je zahrnut atribut FoomaticRIPCommandLine. Tento atribut je připojen k jednomu z povolených atributů pomocí znaku „\n“ v jednom řádku (například „cupsPrivacyURI: „https://www.google.com/\n*FoomaticRIPCommandLine: „), což umožňuje obrat kontrolu a vede k zápisu FoomaticRIPCommandLine jako samostatného atributu při ukládání obdržených dat do dočasného souboru.
  • V důsledku zpracování přenesených atributů v systému oběti je vytvořen PPD soubor: … *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 -“ …
  • Při tisku na dosazenou útočníkovu tiskárnu v systému oběti se vykoná příkaz „echo 1 > /tmp/I_AM_VULNERABLE“

Výzkumník, který odhalil zranitelnosti, poznamenává, že na vyhledávání zranitelnosti potřeboval několik dní, ale poté následovala dlouhá 22denní korespondence s vývojáři projektu OpenPrinting, v níž se snažil je přesvědčit o důležitosti problému a nutnosti přípravy záplat. Diskuze se utopila v sporech o tom, zda je vůbec nutné příslušné problémy opravovat, a situaci se podařilo zvrátit až vzestupem veřejného povědomí o odhalení kritického problému. Zajímavé bylo také zjevení úniků informací, kdy důvěrné zprávy a exploity předané CERT se objevily na fóru breachforums.st v otevřeném přístupu, a to navzdory vyhlášenému embargu na zveřejnění informací.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster