Vulnerabilità critica in Exim chì permette à u codice per esse eseguitu nantu à u servitore cù privilegi di root

In u servitore di posta Exim identificatu criticu vulnerabilità (CVE-2019-10149), chì pò purtà à l'esekzione di codice remota nantu à u servitore cù diritti di root quandu si tratta una dumanda apposta. A pussibilità di sfruttamentu di u prublema hè stata nutata in versioni da 4.87 à 4.91 inclusive o quandu custruiscenu cù l'opzione EXPERIMENTAL_EVENT.

In a cunfigurazione predeterminata, l'attaccu pò esse realizatu senza complicazioni innecessarii da un utilizatore locale, postu chì l'ACL "verify = recipient" hè appiicata, chì esegue cuntrolli supplementari per l'indirizzi esterni. Un attaccu remota pò accade quandu i paràmetri sò cambiati, cum'è agiscenu cum'è un MX secundariu per un altru duminiu, sguassà l'ACL "verify=recipient", o certi cambiamenti à local_part_suffix). Un attaccu remotu hè ancu pussibule se l'attaccante hè capaci di mantene a cunnessione à u servitore aperta per 7 ghjorni (per esempiu, mandendu un byte per minutu per scaccià un timeout). In ogni casu, hè pussibule chì ci sò vettori di attaccu più simplici per u sfruttamentu remotu di u prublema.

A vulnerabilità hè causata da una verificazione incorrecta di l'indirizzu di u destinatariu in a funzione deliver_message() definita in u schedariu /src/deliver.c. Manipulendu u furmatu di l'indirizzu, un attaccu pò ottene a sustituzione di i so dati in l'argumenti di un cumandamentu chjamatu cù a funzione execv () cù diritti di root. L'operazione ùn hè micca bisognu di l'usu di tecniche cumplesse per i buffer overflows o a corruzzione di memoria hè abbastanza.

U prublema hè ligata à l'usu di a custruzzione per a cunversione di l'indirizzu:

delivery_localpart = expand_string(
string_sprintf ("${local_part:%s}", new->indirizzu));
delivery_domain = expand_string(
string_sprintf ("${domain:%s}", new->indirizzu));

A funzione expand_string() hè un combinatore eccessivamente cumplicatu, cumpresu a ricunniscenza di u cumandimu "${run{command arguments}", chì porta à u lanciu di un gestore esternu. Cusì, per attaccà in una sessione SMTP, un utilizatore locale hà solu bisognu di mandà un cumandamentu cum'è "RCPT TO "username+${run{...}}@localhost"', induve localhost hè unu di l'ospiti da a lista di domini_locali, è username hè u nome di un utilizatore locale esistente.

Se u servitore funziona cum'è un relay di mail, hè abbastanza per mandà remotamente u cumandamentu 'RCPT TO "${run{...}}@relaydomain.com"', induve relaydomain.com hè unu di l'ospiti listati in relay_to_domains. sezione paràmetri. Siccomu Exim ùn abbanduneghja micca u modu di privilegiu (deliver_drop_privilege = false), i cumandamenti passati via "${run{...}}" seranu eseguiti cum'è root.

Hè nutate chì a vulnerabilità era eliminatu in a versione 4.92 liberata in ferraghju, senza enfatizà chì a correzione puderia purtà à prublemi di sicurezza. Ùn ci hè nisuna ragione per crede chì ci hè stata una ocultazione deliberata di a vulnerabilità da i sviluppatori Exim, postu chì u prublema hè stata risolta durante ripara fallimentu chì accade quandu l'indirizzi sbagliati sò trasmessi, è a vulnerabilità hè stata identificata da Qualys durante un auditu di cambiamenti in Exim.

Una correzione per e versioni precedenti chì cuntinueghjanu à esse aduprate in distribuzioni hè attualmente dispunibule solu cum'è patch. E versioni currettive per i rami precedenti per risolve u prublema sò previste per l'11 di ghjugnu. L'aghjurnamenti di u pacchettu sò pronti per Debian, Ubuntu, openSUSE. Arch Linux и Fedora Fornite a versione 4.92, in quale u prublema ùn hè micca. Problema RHEL è CentOS micca suscettibile, postu chì Exim ùn hè micca inclusu in u so repositariu di pacchetti standard.

Source: opennet.ru

Add a comment