Vulnerabilità in OpenSMTPD che consentono di ottenere diritti root in remoto e localmente

Azienda Qualys ha identificato un'altra vulnerabilità critica remota (CVE-2020-8794) nel server di posta OpenSMTPD, sviluppato dal progetto OpenBSD. Come quella identificata a fine gennaio vulnerabilità, il nuovo problema consente di eseguire comandi shell arbitrari sul server con i privilegi dell'utente root. La vulnerabilità è stato risolto in rilascio OpenSMTPD 6.6.4p1.

è causata da un errore nel codice che gestisce la consegna delle email a un server di posta remoto (non nel codice che gestisce le connessioni in ingresso). L'attacco può avvenire sia dalla parte del client che da quella del 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 a 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, oppure che l'attaccante possa insinuarsi nella connessione del client (MITM o reindirizzamento durante attacchi tramite DNS o BGP).

Per un attacco lato server è necessario che OpenSMTPD sia configurato per accettare richieste di rete esterne da altri server di posta o per gestire servizi esterni che consentono di inviare richieste a qualsiasi email (ad esempio, moduli di conferma degli indirizzi sui siti). Ad esempio, un malintenzionato può collegarsi a un server OpenSMTPD e inviare una email non valida (a un utente inesistente), il che porterà a un invio di risposta con un codice di errore (bounce) al server dell'attaccante. L'attaccante può sfruttare la vulnerabilità nel momento in cui OpenSMTPD si collega per consegnare una notifica al server dell'attaccante. I comandi shell iniettati durante l'attacco vengono memorizzati in un file che viene eseguito con privilegi di root durante il riavvio di OpenSMTPD, quindi l'attaccante deve attendere il riavvio di OpenSMTPD o causare un crash di OpenSMTPD.

Il problema si presenta nella funzione mta_io() nel codice per il parsing della risposta multilinea restituita dal server remoto dopo l'instaurazione della connessione (ad esempio, «250-ENHANCEDSTATUSCODES» e «250 HELP»). In OpenSMTPD è previsto che la prima riga contenga un numero a tre cifre e un testo, separati dal carattere «-», mentre la seconda riga contiene un numero a tre cifre e un testo, separati da uno spazio. Se nella seconda riga dopo il numero a tre cifre non segue uno spazio e il testo, il puntatore utilizzato per determinare il testo viene impostato sul byte successivo al carattere ‘\0’ e viene tentato di copiare nel buffer dei dati successivi alla fine della riga.

Su richiesta del progetto OpenBSD, la pubblicazione dei dettagli sull'exploit della vulnerabilità è stata posticipata al 26 febbraio, per consentire agli utenti di aggiornare i propri sistemi. Il problema è presente nel codice sorgente dal dicembre 2015, ma l'exploit per l'esecuzione di codice con i privilegi di root è possibile dal maggio 2018. I ricercatori hanno preparato un prototipo funzionante dell'exploit, che è stato testato con successo nelle build di OpenSMTPD per OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testing) e Fedora 31.

In OpenSMTPD c'è anche identificata 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, dove è 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 nella stessa partizione del catalogo /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 è il risultato di una minuziosa indagine di problemi, esposta durante l'audit condotto da Qualys nel 2015. L'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 chiamato makemap (l'utility smtpctl esegue makemap senza specificare esplicitamente il percorso). Ottenendo accesso al gruppo «_smtpq», l'attaccante può quindi innescare una condizione di competizione (creare un grande file nella directory offline e inviare il segnale SIGSTOP) e, prima che il processo si concluda, sostituire il file nella directory offline con un collegamento simbolico rigido che punta al file di destinazione il cui contenuto deve essere letto.

È notevole che in Fedora 31 la vulnerabilità consenta di ottenere immediatamente i privilegi del gruppo root, poiché il processo smtpctl è dotato del flag setgid root, invece di setgid smtpq. Ottenendo l'accesso al gruppo root, è possibile riscrivere il contenuto di /var/lib/sss/mc/passwd e ottenere accesso completo come root nel sistema.

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