Vulnerabilità critica in Exim che consente l'esecuzione di codice sul server con privilegi di root

Nel server di posta Exim è stata rilevata critica una vulnerabilità (CVE-2019-10149), che può portare all'esecuzione remota di codice sul server con diritti di root durante l'elaborazione di una richiesta appositamente formattata. La possibilità di sfruttare questo problema è stata riscontrata nelle versioni dalla 4.87 alla 4.91 inclusive o quando compilato con l'opzione EXPERIMENTAL_EVENT.

Nella configurazione predefinita, l'attacco può essere effettuato senza complicazioni da un utente locale, poiché viene applicata l'ACL 'verify = recipient', che esegue controlli aggiuntivi per gli indirizzi esterni. L'esecuzione di un attacco remoto è possibile modificando le impostazioni, ad esempio, operando come MX secondario per un altro dominio, rimuovendo l'ACL 'verify = recipient' o apportando determinate modifiche al local_part_suffix). Un attacco remoto è anche possibile se l'attaccante riesce a mantenere la connessione aperta con il server per 7 giorni (ad esempio, inviando un byte al minuto per aggirare il timeout). Non si esclude che esistano anche vettori di attacco più semplici per sfruttare il problema da remoto.

La vulnerabilità è causata da un controllo errato dell'indirizzo del destinatario nella funzione deliver_message(), definita nel file /src/deliver.c. Attraverso la manipolazione della formattazione dell'indirizzo, l'attaccante può ottenere l'inserimento dei propri dati negli argomenti del comando invocato tramite la funzione execv() con diritti di root. Non è necessario utilizzare tecniche complesse, come quelle impiegate negli overflow di buffer o nella corruzione della memoria, basta semplicemente inserire caratteri.

Il problema è legato all'uso della seguente costruzione per la conversione degli indirizzi:

deliver_localpart = expand_string(
string_sprintf('${local_part:%s}', new->address));
deliver_domain = expand_string(
string_sprintf('${domain:%s}', new->address));

La funzione expand_string() è un combinatore eccessivamente complesso, che riconosce anche il comando '${run{comando argomenti}', che porta all'esecuzione di un gestore esterno. Pertanto, per attaccare all'interno di una sessione SMTP, è sufficiente che un utente locale invii un comando del tipo 'RCPT TO "username+${run{…}}@localhost"', dove localhost è uno degli host presenti nell'elenco local_domains, e username è il nome di un utente locale esistente.

Se il server opera come relay di posta, è sufficiente inviare da remoto il comando 'RCPT TO "${run{…}}@relaydomain.com"', dove relaydomain.com è uno degli host elencati nella sezione delle impostazioni relay_to_domains. Poiché per impostazione predefinita Exim non applica la modalità di riduzione dei privilegi (deliver_drop_privilege = false), i comandi trasmessi tramite '${run{…}}' verranno eseguiti con diritti di root.

È interessante notare che la vulnerabilità è stata risolto presente nella versione 4.92 rilasciata a febbraio, senza enfatizzare che la correzione potrebbe portare a problemi di sicurezza. Non ci sono motivi per ritenere che i sviluppatori di Exim abbiano tentato consapevolmente di nascondere la vulnerabilità, poiché il problema è stato risolto durante le patch un crash, che si verifica durante l'invio di indirizzi non validi, e la vulnerabilità è stata scoperta dalla società Qualys durante un audit delle modifiche apportate a Exim.

La correzione per le versioni precedenti, che continuano ad essere utilizzate nelle distribuzioni, è attualmente disponibile solo sotto forma di patch. Le versioni correttive per i rami precedenti con la risoluzione del problema sono programmate per il 11 giugno. Gli aggiornamenti dei pacchetti sono stati preparati per Debian, Ubuntu, openSUSE. Arch Linux e Fedora forniscono la versione 4.92, in cui il problema non si manifesta. RHEL e CentOS non colpiscono il problema non sono vulnerabili, poiché Exim non fa parte del loro repository di pacchetti standard.

Fonte: opennet.ru

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