Simone Margaritelli, OpenSnitch'i ja bettercap'i autor, avaldas ennetavalt teavet eelnevalt kuulutatud kriitiliste haavatavuste kohta, mis vĂ”imaldavad kaugelt rĂŒnnata GNU/Linuxi, Solaris, FreeBSD ja mitmeid teisi BSD-sĂŒsteeme. Algne avaldamise kuupĂ€ev oli 6. oktoober, kuid teabe lekke tĂ”ttu tuli see avaldada enne tĂ€htaega, enne kui enamik jaotusi suudab pakettide uuendamise ette valmistada. Haavatavused mĂ”jutavad CUPS-i printimisteenust ja vĂ”imaldavad kaugelt, ilma autentimiseta, saavutada koodi tĂ€itmine sĂŒsteemis.
Probleemi tuvastanud teadlane on valmistanud töötava eksploidiga prototĂŒĂŒbi, mis kasutab kombinatsiooni mitmest haavatavusest ja vĂ”imaldab kaugelt tĂ€ita koodi CUPS-i printimistööde töötlemise protsessi Ă”igustes (tavaliselt on see kasutaja 'lp'). Eksploid vĂ”imaldab mĂ€rkamatult asendada kasutaja printeri seadeid vĂ”i lisada uue printeri, mis on seotud kĂ€ivitatud rĂŒndaja IPP-serveriga, mis edastab spetsiaalselt vormindatud PPD-printeri kirjeldust. Selle PPD töötlemine printimistöö kĂ€ivitamise ajal viib rĂŒndaja koodi tĂ€itmiseni (on vajalik, et ohver kĂ€ivitaks printimise asendatud vĂ”i rĂŒndaja asendatud printerile).
RĂŒnnakule on haavatavad sĂŒsteemid, serverilt kus töötab CUPS-i printimisteenus ja kĂ€ivitatud protsess cups-browsed, mis aktsepteerib vĂ”rguĂŒhendusi 631 pordil (UDP). RĂŒnnakut on vĂ”imalik teostada ka kohalikus vĂ”rgus, kus ligipÀÀsuks kasutatakse serveri printimise protokolle zeroconf, mDNS vĂ”i DNS-SD. Haavatavad on ainult need cups-browsed konfiguratsioonid, kus failis /etc/cups/cups-browsed.conf parameetris BrowseRemoteProtocols on vÀÀrtuseks mÀÀratud 'cups'. Systemd-pĂ”histes jaotustes saab kontrollida cups-browsed teenuse kasutamist kĂ€suga 'sudo systemctl status cups-browsed'.
Haavatavus avaldub kĂ”igis CUPS-i pĂ”hjal kĂ€ivitatavates printerites, kus kasutatakse haavatavaid pakette cups-filters, libcupsfilters, libppd ja cups-browsed. Parandused on praegu saadaval ainult patch'ide kujul (1, 2, 3) â kehtivad versioonid cups-filters 2.0.1, libcupsfilters 2.1b1, libppd 2.1b1 ja cups-browsed 2.0.1 on haavatavad. Distro-des on probleem endiselt lahendamata; uuenduste ilmumist saab jĂ€lgida jĂ€rgnevatelt lehtedelt: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Kiiruslahenduseks kaitsemeetmena enne uuenduse installimist on vĂ”imalik sulgeda vĂ€listele vĂ”rkudele juurdepÀÀs UDP-pordile 631, keelata cups-browsed teenus vĂ”i seada BrowseRemoteProtocols seade vÀÀrtusele "none".
Tuletatud haavatavused:
- CVE-2024-47176 â haavatavus cups-browsed protsessis, mis loob vĂ”rgu sokli, mis aktsepteerib ĂŒhendusi pordil 631, seotuna kĂ”igi sĂŒsteemis olemasolevate vĂ”rgu liideste ja aktsepteerib IPP-pĂ€ringuid "Get-Printer-Attributes" igalt vĂ€liselt sĂŒsteemilt. Selle teenuse manipuleerimise kaudu on vĂ”imalik lisada sĂŒsteemi printer, mida rĂŒndaja kontrollib, ning Ă€ra kasutada selle kaudu edastatavaid PPD-konfiguratsiooni haavatavusi CUPS-i teistes komponentides.
- CVE-2024-47177 â haavatavus foomatic-rip protsessoris, mis kuulub cups-filters kompositsiooni, mis vĂ”imaldab koodi tĂ€itmist, edastades FoomaticRIPCommandLine parameetri PPD-failis, mille rĂŒndaja saab edastada tĂ€nu ĂŒlaltoodud haavatavusele cups-browsed teenuses. Parameetris FoomaticRIPCommandLine mÀÀratud shell-kĂ€sud tĂ€idetakse tĂ€pselt sellisena, ilma et arvestataks, et parameetri vĂ”ib seada vĂ€ljastpoolt. NĂ€iteks failisse /tmp/VULNERABLE kirjutamiseks saab mÀÀrata "FoomaticRIPCommandLine: "echo 1 > /tmp/VULNERABLE".
- CVE-2024-47175 â haavatavus libppd-s, mis on pĂ”hjustatud ppdCreatePPDFromIPP2 vÀÀrtuse Ă”iguse kontrollimise puudumisest IPP-atribuutide kirjutamisel ajutisse PPD-faili. Probleem vĂ”imaldab toimetada suvalisi andmeid lĂ”plikku PPD-faili, lisades atribuute, kasutades reavahetusmĂ€rke. NĂ€iteks saab kontrolli vĂ€ltimiseks lĂŒlitada lisaks lubatud atribuutidele ka FoomaticRIPCommandLine atribuudi, et Ă€ra kasutada ĂŒlaltoodud haavatavust cups-filters-is.
- CVE-2024-47076 â haavatavus libcupsfilters teegus CUPS-pakettis, mis on seotud cfGetPrinterAttributes5 vÀÀrtuste kontrollimise puudumisega, mis tagastatakse vĂ€lise IPP-serveri poolt, andes rĂŒndajale vĂ”imaluse korraldada erinevate IPP-atribuutide töötlemist CUPS-i muudes alamises, nĂ€iteks PPD-failide genereerimisel.
CUPSi rĂŒnde stsenaarium hĂ”lmab jĂ€rgmisi samme:
- RĂŒndaja kĂ€ivitab oma IPP-serveri.
- Saadab ohvrile UDP-paketi, mis sisaldab linki printerile, mis on seotud rĂŒndaja kĂ€ivitatud IPP-serveriga.
- PĂ€rast selle paketi vastuvĂ”tmist ĂŒhendab ohvri sĂŒsteem rĂŒndaja IPP-serveriga ja kĂŒsib printeri atribuute.
- RĂŒndaja IPP-server vastab ohvri pĂ€ringule, tagastades PPD-faili, mille atribuutide seas on ka FoomaticRIPCommandLine atribuut. See atribuut kinnitatakse ĂŒhe lubatud atribuudi kĂŒlge, kasutades sĂŒmbolit â\nâ ĂŒhes reas (nt âcupsPrivacyURI: âhttps://www.google.com/\n*FoomaticRIPCommandLine: â), mis vĂ”imaldab kontrolli mööda minna ja viib FoomaticRIPCommandLine eraldi atribuudina salvestatavate andmete ajutisse faili salvestamise juurde.
- Edastatud atribuutide töötlemisel ohvri sĂŒsteemis luuakse PPD-fail: ⊠*cupsSNMPSupplies: Vale *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: TĂ”si *cupsFilter2: âapplication/vnd.cups-pdf application/pdf 0 -â âŠ
- Prindimise korral rĂŒndaja printerile ohvri sĂŒsteemis tĂ€idetakse kĂ€sk âecho 1 > /tmp/I_AM_VULNERABLEâ
Haavatavuste avastanud uurija mĂ€rkis, et haavatavuse leidmiseks kulus tal paar pĂ€eva, kuid seejĂ€rel jĂ€rgnes 22 pĂ€eva kestev suhtlemine OpenPrinting projekti arendajatega, et veenda neid probleemi tĂ€htsuses ja patchide ettevalmistamise vajaduses. Arutelu jĂ”udis vaidlusesse, kas neid probleeme ĂŒldse parandada, ja olukorra suudeti pöörata vaid selle kaudu, et teema suhtes tĂ”statati avalik tĂ€helepanu. Samuti on huvitav, et teabe lekkimisel, mille kĂ€igus anti CERT-ile konfidentsiaalne raport ja eksploit, ilmusid need breachforums.st foorumisse avatud juurdepÀÀsuga, hoolimata teabe avalikustamise embargost.
Allikas: opennet.ru
