Vulnerabilità sfruttabili da remoto nel server di stampa CUPS.

Simone Margaritelli, autore del firewall OpenSnitch e dell'analizzatore di rete bettercap, ha rivelato in anticipo informazioni su vulnerabilità critiche precedentemente annunciate, che consentono attacchi remoti ai sistemi GNU/Linux, Solaris, FreeBSD e ad alcune altre varianti di BSD. Inizialmente, la pubblicazione era prevista per il 6 ottobre, ma a causa di una fuga di informazioni, i dettagli sono stati divulgati in anticipo, prima che la maggior parte delle distribuzioni potesse preparare un aggiornamento dei pacchetti. Le vulnerabilità interessano il server di stampa CUPS e consentono l'esecuzione di codice nel sistema senza autenticazione remota.

Il ricercatore che ha identificato il problema ha preparato un prototipo funzionante di exploit, che utilizza una combinazione di varie vulnerabilità e consente l'esecuzione remota di codice con i privilegi del processo di gestione delle stampe CUPS (di solito l'utente è «lp»). L'exploit permette di sostituire silenziosamente i parametri della stampante dell'utente o di aggiungere una nuova stampante associata a un server IPP attaccante, che restituisce una descrizione PPD opportunamente formattata. L'elaborazione di questo PPD durante l'invio della stampa porta all'esecuzione del codice dell'attaccante (è necessario che la vittima avvii la stampa su una stampante falsificata o sostituita dall'attaccante).

I sistemi vulnerabili sono quelli con server stampa CUPS e il processo cups-browsed in esecuzione, che accetta connessioni di rete sulla porta 631 (UDP). L'attacco può anche essere portato a termine da una rete locale, dove viene utilizzato per accedere alla server stampa il protocollo zeroconf, mDNS o DNS-SD. Sono vulnerabili solo le configurazioni di cups-browsed in cui nel file /etc/cups/cups-browsed.conf, il parametro BrowseRemoteProtocols è impostato su «cups». Nelle distribuzioni con systemd, è possibile controllare l'uso del servizio cups-browsed con il comando «sudo systemctl status cups-browsed».

La vulnerabilità si manifesta in tutti i sistemi di stampa basati su CUPS, in cui sono utilizzate versioni vulnerabili dei pacchetti cups-filters, libcupsfilters, libppd e cups-browsed. Le correzioni sono attualmente disponibili solo sotto forma di patch (1, 2, 3) — le versioni attuali cups-filters 2.0.1, libcupsfilters 2.1b1, libppd 2.1b1 e cups-browsed 2.0.1 sono soggette a vulnerabilità. Nei disguidi la problematica rimane non risolta, è possibile monitorare l'uscita di aggiornamenti sulle seguenti pagine: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Come misura di protezione provvisoria fino all'installazione dell'aggiornamento, è possibile bloccare l'accesso alla porta UDP 631 per le reti esterne, disabilitare il servizio cups-browsed o impostare l'opzione BrowseRemoteProtocols su "none".

Vulnerabilità identificate:

  • CVE-2024-47176 — vulnerabilità nel processo cups-browsed, che crea un socket di rete in ascolto sulle connessioni sulla porta 631, collegato a tutte le interfacce di rete disponibili nel sistema e accetta richieste IPP "Get-Printer-Attributes" da qualsiasi sistema esterno. Attraverso la manipolazione di questo servizio, è possibile aggiungere al sistema una stampante controllata dall'attaccante e sfruttarla mediante la trasmissione della configurazione PPD vulnerabile in altri componenti di CUPS.
  • CVE-2024-47177 — vulnerabilità nel gestore foomatic-rip del pacchetto cups-filters, che consente l'esecuzione di codice attraverso il passaggio del parametro FoomaticRIPCommandLine nel file PPD, che l'attaccante può inviare grazie alla vulnerabilità sopra descritta in cups-browsed. I comandi shell specificati nel parametro FoomaticRIPCommandLine vengono eseguiti così come sono, senza considerare che il parametro possa essere impostato da terzi. Ad esempio, per scrivere nel file /tmp/VULNERABLE è possibile specificare "FoomaticRIPCommandLine: "echo 1 > /tmp/VULNERABLE".
  • CVE-2024-47175 — vulnerabilità in libppd, causata dalla mancanza di verifica della correttezza del valore ppdCreatePPDFromIPP2 durante la scrittura degli attributi IPP in un file PPD temporaneo. Questa problematica consente di inserire dati arbitrari nel file PPD risultante tramite l'attacco di attributi utilizzando il carattere di nuova linea. Ad esempio, è possibile eludere il controllo e, insieme agli attributi consentiti, inserire l'attributo FoomaticRIPCommandLine per sfruttare la vulnerabilità sopra menzionata in cups-filters.
  • CVE-2024-47076 — vulnerabilità nella libreria libcupsfilters del pacchetto cups-filters, collegata alla mancanza di verifica dei valori cfGetPrinterAttributes5 restituiti da un server IPP esterno, che consente all'attaccante di gestire l'elaborazione di attributi IPP arbitrari in altre sottosistemi CUPS, ad esempio, durante la generazione di file PPD.

Lo scenario di attacco su CUPS si articola nei seguenti passaggi:

  • Implementazione da parte dell'attaccante di un proprio server IPP.
  • Invio alla vittima di un pacchetto UDP contenente un collegamento a una stampante associata al server IPP attivato dall'attaccante.
  • Dopo aver ricevuto questo pacchetto, il sistema della vittima si connette al server IPP dell'attaccante e richiede gli attributi della stampante.
  • In risposta alla richiesta della vittima, il server IPP dell'attaccante restituisce un file PPD con attributi, tra cui l'attributo FoomaticRIPCommandLine. Questo attributo viene allegato a uno degli attributi consentiti, utilizzando il carattere "\n" in una sola riga (ad esempio, "cupsPrivacyURI: "https://www.google.com/\n*FoomaticRIPCommandLine: "), il che consente di eludere il controllo e porta alla registrazione di FoomaticRIPCommandLine come attributo separato quando i dati ottenuti vengono salvati in un file temporaneo.
  • A seguito dell'elaborazione degli attributi trasmessi, nel sistema della vittima viene creato un file 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 -" …
  • Al momento della stampa sulla stampante sostituita dall'attaccante, sul sistema della vittima verrà eseguita il comando "echo 1 > /tmp/I_AM_VULNERABLE".

Il ricercatore che ha individuato la vulnerabilità segnala di aver impiegato un paio di giorni per trovarla, ma successivamente ha seguito una corrispondenza prolungata di 22 giorni con gli sviluppatori del progetto OpenPrinting nel tentativo di convincerli dell'importanza del problema e della necessità di preparare delle patch. La discussione si è arenata in dispute su se fosse opportuno o meno correggere questi problemi, e la situazione è cambiata solo sollevando un pubblico clamore riguardo all'individuazione di un problema critico. È inoltre interessante la fuga di informazioni, in cui un rapporto riservato e un exploit inviati al CERT sono apparsi in forum di breachforums.st in accesso libero, nonostante fosse stato imposto un embargo sulla divulgazione delle informazioni.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster