CUPS, falle nella stampa su Linux: esecuzione di codice con una finta stampante

Quattro vulnerabilità nel sistema di stampa CUPS permettono di aggiungere una stampante malevola e di eseguire comandi quando l'utente stampa. Il servizio coinvolto non è attivo ovunque: come verificarlo.

CUPS, falle nella stampa su Linux: esecuzione di codice con una finta stampante

Per giorni si è parlato di una falla critica «in tutti i sistemi Linux», con un punteggio di gravità altissimo e dettagli tenuti segreti. Il 26 settembre il ricercatore italiano Simone Margaritelli ha pubblicato tutto, in anticipo rispetto ai piani dopo una fuga di notizie. Le vulnerabilità riguardano CUPS, il sistema di stampa di Linux e di molti Unix. Sono serie, ma meno catastrofiche di quanto si temesse: servono condizioni precise e un’azione dell’utente.

Le falle sono quattro, e funzionano in catena. La prima, la CVE-2024-47176, sta in cups-browsed fino alla 2.0.1: il servizio ascolta sulla porta UDP 631 di tutte le interfacce, si fida di qualunque pacchetto e contatta l’indirizzo indicato dall’attaccante per registrare una nuova stampante. La CVE-2024-47076 in libcupsfilters e la CVE-2024-47175 in libppd fanno sì che gli attributi restituiti dalla finta stampante finiscano senza controlli nel suo file di configurazione. Infine la CVE-2024-47177 in cups-filters: il filtro foomatic-rip esegue comandi arbitrari passati attraverso un parametro di quel file.

Basta premere Stampa

Il risultato è che l’attaccante invia un pacchetto UDP, e il sistema aggiunge da solo una stampante controllata da lui, magari con il nome di una che esiste già. Tu non noti nulla. Quando avvii una stampa su quella stampante, parte il comando scelto dall’attaccante, con i privilegi dell’utente del servizio di stampa.

Il servizio cups-browsed, però, non è installato o attivo ovunque. È comune sulle distribuzioni desktop, molto meno sui server. Il rischio maggiore riguarda i sistemi con la porta UDP 631 raggiungibile da Internet, che secondo le scansioni sono comunque decine di migliaia, e le reti locali dove un attaccante è già presente.

Verifica con systemctl status cups-browsed. Se la scoperta automatica delle stampanti di rete non ti serve, fermalo e disattivalo con sudo systemctl stop cups-browsed e sudo systemctl disable cups-browsed. Blocca la porta UDP 631 sul firewall, soprattutto verso Internet, e installa gli aggiornamenti di cups-browsed, cups-filters, libcupsfilters e libppd appena la tua distribuzione li pubblica.

Già che ci sei, apri l’elenco delle stampanti configurate. Quelle che non riconosci, toglile.

Condividi LinkedIn X Telegram

Continua a leggere