Qualys un'altra vulnerabilità critica remota (CVE-2020-8794) nel server di posta , sviluppata dal progetto OpenBSD. Come quella identificata alla fine di gennaio , il nuovo problema consente l'esecuzione remota di comandi shell sul server con diritti utente root. La vulnerabilità in rilascio .
è causata da un errore nel codice che gestisce la consegna delle mail a un server di posta remoto (non nel codice che gestisce le connessioni in entrata). L'attacco è possibile sia dal lato client che dal lato server. Dal lato client, l'attacco è possibile nella configurazione predefinita di OpenSMTPD, in cui OpenSMTPD accetta richieste solo sull'interfaccia di rete interna (localhost) e invia messaggi di posta ai server esterni. Per sfruttare la vulnerabilità, è sufficiente che durante la consegna di un'email OpenSMTPD stabilisca una sessione con un server di posta controllato dall'attaccante o che l'attaccante possa intervenire nella connessione del client (MITM o reindirizzamento durante attacchi tramite DNS o BGP).
Per attaccare dal lato server, è necessario che OpenSMTPD sia configurato per ricevere richieste di rete esterne da altri server di posta o per gestire servizi di terze parti che consentono di inviare richieste a qualsiasi email (ad esempio, moduli di conferma indirizzo sui siti web). Ad esempio, un malintenzionato può connettersi al server OpenSMTPD e inviare un'email non valida (a un utente inesistente), che porterà a una risposta con un codice di errore (bounce) al server dell'attaccante. L'attaccante può sfruttare la vulnerabilità nel momento in cui OpenSMTPD si connette per consegnare una notifica al server dell'attaccante. I comandi shell introdotti durante l'attacco vengono salvati in un file che viene eseguito con diritti di root al riavvio di OpenSMTPD; quindi, l'attaccante deve attendere il riavvio di OpenSMTPD o indurre un crash di OpenSMTPD.
Il problema si trova nella funzione mta_io() nel codice per l'analisi della risposta multilinea restituita dal server remoto dopo l'instaurazione della connessione (ad esempio, "250-ENHANCEDSTATUSCODES" e "250 HELP"). In OpenSMTPD si assume che la prima riga contenga un numero di tre cifre e un testo, separati dal carattere "-", mentre la seconda riga contenga un numero di tre cifre e un testo separati da uno spazio. Se dopo il numero di tre cifre nella seconda riga non segue uno spazio e il testo, il puntatore utilizzato per determinare il testo è impostato sul byte successivo al carattere '\0' e viene tentato di copiare nel buffer dati che seguono la fine della riga.
Su richiesta del progetto OpenBSD, la pubblicazione dei dettagli sull'exploit della vulnerabilità è stata rinviata al 26 febbraio, per dare agli utenti la possibilità di aggiornare i propri sistemi. Il problema è presente nel codice sorgente dal dicembre 2015, ma l'esecuzione di codice con privilegi di root è possibile da maggio 2018. I ricercatori hanno preparato un prototipo funzionante dell'exploit, che è stato testato con successo nelle versioni di OpenSMTPD per OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testing) e Fedora 31.
In OpenSMTPD si trova anche un'altra vulnerabilità (CVE-2020-8793) che consente a un utente locale di leggere la prima riga di qualsiasi file nel sistema. Ad esempio, è possibile leggere la prima riga di /etc/master.passwd, in cui è memorizzato l'hash della password dell'utente root. La vulnerabilità consente anche di leggere tutto il contenuto di un file appartenente a un altro utente, se quel file si trova nello stesso file system della directory /var/spool/smtpd/. Il problema non è sfruttabile in molte distribuzioni Linux in cui il valore di /proc/sys/fs/protected_hardlinks è impostato su 1.
Il problema è causato da una rimozione incompleta , menzionati durante l'audit condotto da Qualys nel 2015. Un attaccante può ottenere l'esecuzione del proprio codice con i privilegi del gruppo «_smtpq», impostando la variabile «PATH=.» e posizionando nella directory corrente uno script con il nome makemap (l'utility smtpctl avvia makemap senza specificare esplicitamente il percorso). Ottenendo accesso al gruppo «_smtpq», l'attaccante può quindi innescare una condizione di gara (creare un grande file nella directory offline e inviare un segnale SIGSTOP) e, prima del completamento dell'elaborazione, sostituire il file nella directory offline con un link simbolico rigido che punta al file target, il cui contenuto deve essere letto.
È notevole che in Fedora 31 la vulnerabilità consente di ottenere immediatamente i privilegi del gruppo root, poiché il processo smtpctl è dotato del flag setgid root, anziché setgid smtpq. Ottenendo accesso al gruppo root, è possibile sovrascrivere il contenuto di /var/lib/sss/mc/passwd e ottenere accesso completo come root nel sistema.
Fonte: opennet.ru
