In u servitore di posta Exim
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
Una correzione per e versioni precedenti chì cuntinueghjanu à esse aduprate in distribuzioni hè attualmente dispunibule solu cum'è
Source: opennet.ru