Simone Margaritelli, autori i firewall-it OpenSnitch dhe analizuesit të rrjetit bettercap, zbuloi më herët informacione në lidhje me vulnerabilitetet kritike që mundësojnë sulme të largëta mbi shpërndarjet GNU/Linux, Solaris, FreeBSD dhe disa sisteme të tjera BSD. Fillimisht, publikimi ishte planifikuar për më 6 tetor, por për shkak të një rrjedhje informacioni, ato u publikuan më herët, para se shumica e shpërndarjeve të arrijnë të përgatisin azhurnimin e paketave. Vulgaritetet ndikojnë në serverin e printimit CUPS dhe lejojnë ekzekutimin e kodit në sistem pa autentifikim.
Hulumtuesi që identifikoi problemin ka përgatitur një prototip funksional të eksploitit, duke përdorur një kombinim të disa vulnerabiliteteve që lejon ekzekutimin e kodit në mënyrë të largët me të drejtat e procesit që merret me dërgimin e printimit në CUPS (zakonisht përdoruesi "lp"). Eksploitimi lejon që në mënyrë të padukshme të zëvendësohen parametrat e printerit të përdoruesit ose të shtohet një printer i ri, i lidhur me serverin IPP të sulmuesit, i cili ofron një përshkrim të PPD të dizajnuar në mënyrë të veçantë, duke bërë që përpunimi i këtij PPD gjatë nisjes së printimit të çojë në ekzekutimin e kodit të sulmuesit (është e nevojshme që viktima të nisim printimin në printerin e manipuluar ose të zëvendësuar nga sulmuesi).
Sistemet që janë të ndjeshme ndaj sulmit janë serverin CUPS dhe procesi cups-browsed, i cili ndihmon në pranimet e lidhjeve rrjetësore në portin 631 (UDP). Sulmi gjithashtu mund të realizohet nga një rrjet lokal, në të cilin për aksesin ndaj server printimit përdoren protokollet zeroconf, mDNS ose DNS-SD. Vetëm konfigurimet e cups-browsed, në të cilat në skedarin /etc/cups/cups-browsed.conf në parametrin BrowseRemoteProtocols është caktuar vlera "cups" janë të ndjeshme. Në shpërndarjet me systemd, mund të kontrolloni përdorimin e shërbimit cups-browsed duke përdorur komandën "sudo systemctl status cups-browsed."
Vulnerabiliteti shfaqet në të gjitha sistemet e printimit të bazuara në CUPS, të cilat përdorin versionet e ndjeshme të pakove cups-filters, libcupsfilters, libppd dhe cups-browsed. Rregullimet aktualisht janë të disponueshme vetëm si patch-e (1, 2, 3) - versionet aktuale cups-filters 2.0.1, libcupsfilters 2.1b1, libppd 2.1b1 dhe cups-browsed 2.0.1 janë të ndjeshme ndaj vulnerabiliteteve. Në shpërndarjet, problemi mbetet i pazgjidhur, dhe mund të ndiqni shfaqjen e azhurnimeve në këto faqe: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Si një mënyrë e përkohshme për mbrojtje para instalimit të azhurnimeve, mund të bllokoni aksesin për rrjetet e jashtme në portin UDP 631, të çaktivizoni shërbimin cups-browsed ose të vendosni parametrin BrowseRemoteProtocols në vlerën "none."
Vulnerabilitetet e identifikuara:
- CVE-2024-47176 - një vulnerabilitet në procesin cups-browsed, i cili krijon një soket rrjeti që pranon lidhjet në portin 631, i cili lidhet me të gjitha ndërfaqet rrjetësore të disponueshme në sistem dhe pranon kërkesat IPP "Get-Printer-Attributes" nga çdo sistem të jashtëm. Nëpërmjet manipulimit të këtij shërbimi, mund të bëhet shtimi i një printeri në sistem, i kontrolluar nga sulmuesi, dhe të shfrytëzohet përmes transmetimit të konfigurimit PPD të vulnerabiliteteve në komponentët e tjerë të CUPS.
- CVE-2024-47177 - një vulnerabilitet në trajtuesin foomatic-rip nga grupi cups-filters, i cili lejon ekzekutimin e kodit përmes transmetimit të parametrit FoomaticRIPCommandLine në skedarin PPD, të cilin sulmuesi mund ta transmetojë falë vulnerabilitetit të përmendur më parë në cups-browsed. Komandat shell të përcaktuara në parametrin FoomaticRIPCommandLine ekzekutohen ashtu si janë, pa marrë parasysh se parametri mund të përcaktohet nga ndonjë palë të tretë. Përshembull, për të shkruar në skedarin /tmp/VULNERABLE, mund të përcaktohet "FoomaticRIPCommandLine: "echo 1 > /tmp/VULNERABLE."
- CVE-2024-47175 - një vulnerabilitet në libppd, e shkaktuar nga mungesa e kontrollit të vlefshmërisë së vlerës ppdCreatePPDFromIPP2 gjatë shkrimit të atributeve IPP në skedarin përkohës PPD. Problemi lejon futjen e të dhënave të rastësishme në skedarin rezultues PPD duke anashkaluar kontrollin dhe duke bashkangjitur atribute, duke përdorur simbolin e kalimit të rreshtit. Përshembull, është e mundur të kaloni kontrollin dhe, së bashku me atributet e lejueshme, të përfshini atributin FoomaticRIPCommandLine për të shfrytëzuar vulnerabilitetin e përmendur më parë në cups-filters.
- CVE-2024-47076 - një vulnerabilitet në bibliotekën libcupsfilters nga paketa cups-filters, i lidhur me mungesën e kontrollit të vlerave cfGetPrinterAttributes5, të cilat kthehen nga një server IPP të jashtëm, gjë që i jep sulmuesit mundësinë për të organizuar përpunimin e atributeve të rastësishme IPP në sistemet e tjera CUPS, për shembull, gjatë gjenerimit të skedarëve PPD.
Skema e sulmit ndaj CUPS përfshin hapat e mëposhtëm:
- Zhvillimi nga sulmuesi i serverit të tij IPP.
- Dërgimi i viktimës një pakete UDP që lidhet me printerin, i lidhur me serverin IPP që është iniciuar nga sulmuesi.
- Pas marrjes së kësaj pakete, sistemi i viktimës lidhet me serverin IPP të sulmuesit dhe kërkon atributet e printerit.
- Në përgjigje të kërkesës së viktimës, serveri IPP i sulmuesit kthen një skedar PPD me atribute, midis të cilave përfshihet atributi FoomaticRIPCommandLine. Ky atribut lidhet me një nga atributet e pranueshme, duke përdorur simbolin "\n" në një rresht (për shembull, "cupsPrivacyURI: "https://www.google.com/\n*FoomaticRIPCommandLine: " ), duke lejuar kalimin e verifikimit dhe duke çuar në regjistrimin e FoomaticRIPCommandLine si një atribut të veçuar kur ruhet informacioni në një skedar të përkohshëm.
- Si rezultat i pĂ«rpunimit tĂ« atributeve tĂ« dĂ«rguara nĂ« sistemin e viktimĂ«s krijohet njĂ« skedar 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 -" âŠ
- Kur printohet në printerin e shtruar nga sulmuesi në sistemin e viktimës do të ekzekutohet komanda "echo 1 > /tmp/I_AM_VULNERABLE"
Hulumtuesi që zbuloi vulnerabilitetet shënon se kërkimi për vulnerabilitetin i ka marrë disa ditë, por më pas pasoi një korrespondencë që zgjati 22 ditë me zhvilluesit e projektit OpenPrinting me përpjekjen për t'i bindur ata për rëndësinë e problemit dhe nevojën për të përgatitur patches. Diskutimi u ngatërrua në polemika mbi nëse duhet të korrigjoheshin problemet e caktuara, dhe situata u ndryshua vetëm duke krijuar një bujë publike mbi identifikimin e problemit kritik. është interesante gjithashtu dalja e informacionit, gjatë së cilës raporti konfidencial dhe eksploitimi të dërguara në CERT u shfaqën në forumine breachforums.st në qasje të hapur, pavarësisht nga embargoja e vendosur për zbulimin e informacionit.
Burimi: opennet.ru
