Sono stati divulgati i dettagli di una vulnerabilità critica in Exim

Pubblicato rilascio corretto Exim 4.92.2 con la risoluzione critica vulnerabilità (CVE-2019-15846), che nella configurazione predefinita può portare all'esecuzione remota di codice da parte di un attaccante con diritti di root. Il problema si manifesta solo quando viene abilitato il supporto TLS e viene sfruttato tramite l'invio di un certificato client appositamente formattato o un valore modificato in SNI. La vulnerabilità identificata da Qualys.

Problema è presente nel gestore di escape dei caratteri speciali nella stringa (string_interpret_escape() da string.c) ed è causata dal fatto che il carattere ‘\’ alla fine della stringa viene interpretato prima del carattere nullo (‘\0’) e lo scappa. Durante l'escape, la sequenza ‘\’ e il successivo codice nullo di fine stringa vengono elaborati come un simbolo e il puntatore viene spostato su dati al di fuori della stringa, che vengono trattati come sua continuazione.

Il codice che chiama string_interpret_escape() assegna un buffer alla stringa in ingresso, basandosi sulla dimensione effettiva, e il puntatore risultante si trova nella zona al di fuori dei confini del buffer. Di conseguenza, quando si tenta di elaborare la stringa in ingresso, si verifica una lettura di dati da un'area oltre i confini del buffer allocato e un tentativo di scrivere la stringa de-escaped potrebbe portare a una scrittura oltre il buffer.

Nella configurazione predefinita, la vulnerabilità può essere sfruttata inviando dati appositamente formattati in SNI durante la creazione di una connessione sicura al server. Il problema può anche essere sfruttato modificando i valori di peerdn nelle configurazioni impostate per l'autenticazione tramite certificato client, o durante l'importazione dei certificati. L'attacco tramite SNI e peerdn è possibile a partire dalla versione Exim 4.80, in cui la funzione string_unprinting() è stata utilizzata per de-escape il contenuto di peerdn e SNI.

Per l'attacco tramite SNI è stato preparato un prototipo di exploit, funzionante su architetture i386 e amd64 nei sistemi Linux con Glibc. L'exploit utilizza l'overlapping dei dati nell'area heap, portando alla sovrascrittura della memoria in cui è memorizzato il nome del file di log. Il nome del file viene sostituito con «/..../..../..../..../..../..../..../..../etc/passwd». Successivamente, viene sovrascritta la variabile con l'indirizzo del mittente, che viene prima memorizzato nel log, permettendo di aggiungere un nuovo utente al sistema.

Le aggiornamenti dei pacchetti contenenti la correzione della vulnerabilità sono stati rilasciati dalle distribuzioni Debian, Ubuntu, Fedora, SUSE/openSUSE e FreeBSD. La problematica su RHEL e CentOS non è soggetto, poiché Exim non è incluso nel loro repository di pacchetti (in EPEL l'aggiornamento ha già è stato creato, ma al momento non incluso nel repository pubblico). Nel codice Exim il problema viene risolto con una riga patch, disattivando l'azione di escape del backslash se si trova alla fine della riga.

Come soluzione alternativa per bloccare la vulnerabilità, è possibile disattivare il supporto TLS o aggiungere alla
sezione ACL «acl_smtp_mail»:

deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

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