Remotely exploitable vulnerabilities in the CUPS print server

Simone Margaritelli, az OpenSnitch tűzfal és a bettercap hálózatelemző szerzője, előre bejelentette a korábban bejelentett kritikus sebezhetőségeket, amelyek lehetővé teszik a GNU/Linux, Solaris, FreeBSD és néhány más BSD-disztribúció távoli támadását. Eredetileg a publikálás október 6-ára volt tervezve, de az információ kiszivárgása miatt azt előre kellett hozni, mielőtt a legtöbb disztribúció fel tudta volna készíteni a csomagfrissítéseket. A sebezhetőségek a CUPS nyomtatószervereket érintik, és lehetővé teszik a kód végrehajtását a rendszerben hitelesítés nélkül.

A problémát felfedező kutató egy működő exploit prototípust készített, amely több sebezhetőség kombinációját használja, és lehetővé teszi a kód távoli végrehajtását a CUPS nyomtatáskezelő folyamat jogosultságain. Az exploit lehetővé teszi, hogy észrevétlenül módosítsa a felhasználó nyomtatóparamétereit vagy új nyomtatót adjon hozzá, amely csatlakoztatható a támadó által üzemeltetett IPP-szerverhez, amely egy különlegesen kialakított PPD nyomtatóleírást ad vissza. E PPD feldolgozása a nyomtatási feladat indításakor a támadó kódjának végrehajtásához vezet (a sértett felhasználónak el kell indítania a nyomtatást a támadó által megváltoztatott vagy helyettesített nyomtatón).

A támadásra fogékony rendszerek a szerverrel CUPS nyomtatáskezelővel és a cups-browsed folyamattal rendelkeznek, amely a 631-es porton (UDP) fogadja a hálózati kapcsolatokat. A támadás lokális hálózatból is végrehajtható, ahol a nyomtatás során a szerverhez zeroconf, mDNS vagy DNS-SD protokollokat használják. Csak azok a cups-browsed konfigurációk sebezhetők, amelyek a /etc/cups/cups-browsed.conf fájlban a BrowseRemoteProtocols beállításban a "cups" értéket tartalmazzák. Systemd alapú disztribúciókban a cups-browsed szolgáltatás állapotának ellenőrzésére használható a "sudo systemctl status cups-browsed" parancs.

A sebezhetőség minden CUPS-alapú nyomtatási rendszerben megjelenik, ahol a sebezhető verziójú cups-filters, libcupsfilters, libppd és cups-browsed csomagokat használják. A javítások egyelőre csak patch formájában érhetők el (1, 2, 3) – a cups-filters 2.0.1, libcupsfilters 2.1b1, libppd 2.1b1 és cups-browsed 2.0.1 verziók sebezhetők. A disztribúciókban a probléma továbbra is megoldatlan, a frissítések megjelenését a következő oldalakon lehet nyomon követni: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Ideiglenes védelemként a frissítés telepítése előtt le lehet tiltani a külső hálózatok számára a 631-es UDP-port hozzáférését, le lehet állítani a cups-browsed szolgáltatást, vagy beállítható a BrowseRemoteProtocols értéke „none”-ra.

Feltárt sebezhetőségek:

  • CVE-2024-47176 – sebezhetőség a cups-browsed folyamatában, amely egy hálózati socketet hoz létre, amely a 631-es porton fogadja a kapcsolatokat, csatlakoztatva az összes rendszerben található hálózati interfészhez, és IPP-requests-t fogad „Get-Printer-Attributes” bármely külső rendszertől. Ezen szolgáltatás manipulálásával lehetőség nyílik egy támadó által kontrollált nyomtató hozzáadására a rendszerhez, valamint kihasználni a PPD-konfiguráció továbbításán keresztül a CUPS többi komponensében található sebezhetőségeket.
  • CVE-2024-47177 – sebezhetőség a cups-filters készlet foomatic-rip kezelőjében, amely lehetővé teszi kód végrehajtását a FoomaticRIPCommandLine paraméter PPD-fájlba történő átadásával, amelyet a támadó a cups-browsed fenti sebezhetőségén keresztül adhat át. A FoomaticRIPCommandLine paraméterben megadott shell parancsok végrehajtásra kerülnek, függetlenül attól, hogy a paramétert egy külső fél állította be. Például a /tmp/VULNERABLE fájlba való íráshoz meg lehet adni a „FoomaticRIPCommandLine: „echo 1 > /tmp/VULNERABLE” parancsot.
  • CVE-2024-47175 – sebezhetőség a libppd-ban, amelyet a ppdCreatePPDFromIPP2 helyességi értékének ellenőrzése hiánya okoz az IPP-attribútumok ideiglenes PPD-fájlba való írásakor. A probléma lehetővé teszi tetszőleges adatok beillesztését az eredmény PPD-fájlba attribútumok csatolásával, új sor karakter használatával. Például megkerülhető az ellenőrzés, és az engedélyezett attribútumok mellett a FoomaticRIPCommandLine attribútum is beilleszthető a fent említett cups-filters sebezhetőség kihasználásához.
  • CVE-2024-47076 — sebezés a libcupsfilters könyvtárban a cups-filters csomagban, amely a cfGetPrinterAttributes5 értékeinek ellenőrzésének hiányával kapcsolatos, amelyeket egy külső IPP-szerver ad vissza. Ez lehetővé teszi a támadó számára, hogy tetszőleges IPP-attribútumok feldolgozását kezdeményezze más CUPS alrendszerekben, például PPD-fájlok generálásakor.

A CUPS ellen végrehajtott támadás forgatókönyve a következő lépésekre redukálódik:

  • A támadó saját IPP-szerverének telepítése.
  • UDP-csomag küldése az áldozatnak, amely hivatkozik a támadó által üzemeltetett IPP-szerverhez kötött nyomtatóra.
  • A csomag megérkezése után az áldozat rendszere csatlakozik a támadó IPP-szerveréhez, és kérni kezdi a nyomtató attribútumait.
  • Az áldozat kérésére a támadó IPP-szerver visszaad egy PPD-fájlt attribútumokkal, köztük a FoomaticRIPCommandLine attribútummal. Ez az attribútum az egyik megengedett attribútumhoz van csatolva, a '\n' karakter használatával egy sorban (például 'cupsPrivacyURI: "https://www.google.com/\n*FoomaticRIPCommandLine: "'), amely lehetővé teszi az ellenőrzés megkerülését, és a FoomaticRIPCommandLine-t külön attribútumként rögzíti a kapott adatok ideiglenes fájlba való mentésekor.
  • A továbbított attribútumok feldolgozása után az áldozat rendszerében létrejön egy PPD-fájl: … *cupsSNMPSupplies: False *cupsLanguages: "hu" *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 -" …
  • Amikor az áldozat rendszerén a támadó által becsempészett nyomtatóra történik a nyomtatás, végrehajtódik a következő parancs: "echo 1 > /tmp/I_AM_VULNERABLE".

A sebezhetőségeket felfedező kutató megjegyzi, hogy a sebezhetőség keresése pár napot vett igénybe, majd ezt követően 22 napos levelezés következett a projekt OpenPrinting fejlesztőivel, hogy meggyőzze őket a problémák fontosságáról és a javítópontok szükségességéről. A vita elmerült abban, hogy érdemes-e egyáltalán javítani a megjelölt problémákat, és a helyzet csak akkor fordult kedvezően, amikor nyilvános figyelmet keltettek a kritikus probléma felfedezése miatt. Érdekes, hogy információszivárgás történt, amely során a CERT-nek átadott bizalmas jelentés és exploit megjelent a breachforums.st fórumon, nyilvános hozzáférésben, a nyilvánosságra hozatalra vonatkozó embargó ellenére.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster