Sub anumite conditii, atacatorii pot exploata un set de vulnerabilitati in mai multe componente ale sistemului de imprimare open-source CUPS pentru a executa cod arbitrar la distanta pe masinile vulnerabile.
Cunoscute sub denumirile CVE-2024-47076 (libcupsfilters), CVE-2024-47175 (libppd), CVE-2024-47176 (cups-browsed) si CVE-2024-47177 (cups-filters) si descoperite de Simone Margaritelli, aceste probleme de securitate nu afecteaza sistemele in configuratia lor implicita.
CUPS (prescurtarea de la Common UNIX Printing System) este cel mai utilizat sistem de imprimare pe sistemele Linux si este de asemenea in general suportat pe dispozitive care ruleaza sisteme de operare de tip Unix cum ar fi FreeBSD, NetBSD si OpenBSD si derivatele acestora.
Una dintre componentele sale este daemonul cups-browsed, care cauta retelele locale pentru imprimantele publicate si le face disponibile pentru imprimare pe masina. Acest lucru este similar cu modul in care Windows si Mac-uri pot cauta retelele pentru imprimantele de retea remote la care sa imprime.
Margaritelli a descoperit ca, daca daemonul cups-browsed este activat, lucru care nu se intampla pe majoritatea sistemelor, acesta va asculta pe portul UDP 631. De asemenea, implicit, permite conexiuni remote de la orice dispozitiv din retea pentru a crea o noua imprimanta.
A descoperit ca poate crea o imprimanta malitioasa de tip PostScript Printer Description (PPD) care poate fi anuntata manual catre un serviciu cups-browsed expus care ruleaza pe portul UDP 631.
Aceasta face ca masina remote sa instaleze automat imprimanta malitioasa si sa o faca disponibila pentru imprimare. Daca utilizatorul de pe serverul expus imprima la noua imprimanta, comanda malitioasa din PPD va fi executata local pe calculator.
Comanda de executat la imprimare este adaugata printr-un filtru foomatic-rip, care executa comenzi pe un dispozitiv astfel incat un job de imprimare sa fie redat corect.
Desi este o lant de executie de cod la distanta, trebuie mentionat de la inceput ca atacatorii trebuie sa depaseasca anumite obstacole pentru a exploata vulnerabilitatile si de fapt pentru a realiza executia de cod la distanta.
Primul este ca sistemele tinta trebuie sa aiba activat daemonul cups-browsed, lucru care de obicei nu este activat implicit, pentru a expune porturile lor UDP pe o retea. Apoi, atacatorul trebuie sa pacaleasca un utilizator sa imprime de la un server de imprimanta malitioasa din reteaua lor locala care apare brusc pe masina lor.
„Este o lant de bug-uri care se bazeaza pe falsificarea unei imprimante in reteaua ta locala care este adaugata automat prin descoperirea retelei daca este activata in general – de obicei nu in configuratia sa implicita. Apoi o variabila neverificata care este folosita pentru a exploata alte vulnerabilitati in sistemul CUPS pentru a executa cod, dar doar cand este declansata o sarcina de imprimare,” a spus Ilkka Turunen, Field CTO la Sonatype.
„Vestile bune atunci – este un RCE dar cu mai multe mitigari, inclusiv faptul ca atacatorul trebuie sa poata conecta la un calculator prin UDP, care este larg dezactivat pe intrarea in retea si serviciul de obicei nu este activat implicit. Se pare ca impactul in lumea reala este redus.”
Din aceste motive, Red Hat a evaluat vulnerabilitatile ca avand un impact de severitate „Important” in loc de critic.
In timp ce testele BleepingComputer au aratat ca majoritatea serverelor noastre Linux nu aveau serviciul activat implicit, unul dintre VM-urile noastre Ubuntu a avut. Altele au mentionat de asemenea pe Twitter ca serviciul cups-browsed a fost activat implicit pe dispozitivele lor Linux.
In timp ce patch-urile sunt inca in dezvoltare, Red Hat a impartasit masuri de mitigare care cer administratorilor sa opreasca serviciul cups-browsed din rulare si sa impiedice pornirea sa la repornire folosind urmatoarele comenzi pentru a rupe lantul de exploit:
Utilizatorii Red Hat pot folosi de asemenea urmatoarea comanda pentru a afla daca cups-browsed ruleaza pe sistemele lor:
Daca rezultatul afiseaza „Active: inactive (dead),” atunci lantul de exploit este oprit si sistemul nu este vulnerabil. Daca rezultatul arata „running” sau „enabled,” iar directiva „BrowseRemoteProtocols” contine valoarea „cups” in fisierul de configurare /etc/cups/cups-browsed.conf, atunci sistemul este vulnerabil.
Leave a Reply