Vulnerabilità CUPS: RCE su Sistemi GNU/Linux
Un ricercatore di sicurezza ha recentemente rivelato una serie di vulnerabilità nel sistema di stampa CUPS, che colpiscono i sistemi GNU/Linux. Queste vulnerabilità possono consentire l'esecuzione di codice remoto (RCE) da parte di un attaccante non autenticato. Di seguito sono riportati i dettagli delle vulnerabilità scoperte:
Vulnerabilità Rilevate
- CVE-2024-47176: cups-browsed <= 2.0.1 si lega a UDP INADDR_ANY:631, accettando pacchetti da qualsiasi fonte per attivare una richiesta IPP verso un URL controllato dall'attaccante.
- CVE-2024-47076: libcupsfilters <= 2.1b1 non valida o sanifica gli attributi IPP restituiti da un server IPP, fornendo dati controllati dall'attaccante al resto del sistema CUPS.
- CVE-2024-47175: libppd <= 2.1b1 non valida o sanifica gli attributi IPP quando li scrive in un file PPD temporaneo, permettendo l'iniezione di dati controllati dall'attaccante nel PPD risultante.
- CVE-2024-47177: cups-filters <= 2.0.1 consente l'esecuzione di comandi arbitrari tramite il parametro PPD.
Altre problematiche di sicurezza sono state menzionate, ma sono state ignorate durante le discussioni con gli sviluppatori e il CERT. Un attaccante remoto può sostituire silenziosamente gli URL IPP delle stampanti esistenti (o installarne di nuove) con uno maligno, portando all'esecuzione di comandi arbitrari quando viene avviato un lavoro di stampa.
Modalità di Attacco
- WAN / Internet Pubblico: un attaccante remoto invia un pacchetto UDP alla porta 631 senza alcuna autenticazione.
- LAN: un attaccante locale può falsificare le pubblicità zeroconf / mDNS / DNS-SD, raggiungendo lo stesso percorso di codice che porta all'RCE.
Raccomandazioni
- Disabilitare e rimuovere il servizio se non necessario.
- Aggiornare il pacchetto CUPS sui propri sistemi.
- Se il sistema non può essere aggiornato e si fa affidamento su questo servizio, bloccare tutto il traffico verso la porta UDP 631 e possibilmente tutto il traffico DNS-SD.
Scoperta e Analisi
Durante la configurazione di un nuovo laptop con Ubuntu, il ricercatore ha notato che un processo stava ascoltando sulla porta UDP 631, il che è insolito poiché CUPS utilizza generalmente TCP. Dopo ulteriori indagini, è stato confermato che il processo è parte del sistema CUPS e si occupa della scoperta di nuove stampanti.
Il codice sorgente di questo servizio è stato esaminato e si è scoperto che ascolta su INADDR_ANY:631 UDP, accettando pacchetti da qualsiasi interfaccia di rete. La configurazione predefinita consente a chiunque di connettersi, il che rappresenta un grave rischio di sicurezza.
Esecuzione di Comandi Arbitrari
Il ricercatore ha scoperto che, inviando un pacchetto UDP con un URL specifico, il sistema CUPS si connetteva al server maligno, rivelando informazioni sensibili come la versione del kernel e l'architettura. Utilizzando il protocollo IPP, il sistema credeva di interagire con una stampante, permettendo così l'iniezione di attributi controllati.
Conclusioni
Le vulnerabilità nel sistema CUPS rappresentano un rischio significativo per i sistemi GNU/Linux. È fondamentale che gli utenti adottino misure preventive per proteggere i propri sistemi da potenziali attacchi. La comunità di sicurezza informatica deve continuare a monitorare e affrontare queste problematiche per garantire la sicurezza dei sistemi di stampa.