Detaliile vulnerabilității critice din Exim au fost dezvăluite

publicat eliberare corectivă Exim 4.92.2 cu eliminarea criticilor vulnerabilități (CVE-2019-15846), care în configurația implicită poate duce la executarea codului de la distanță de către un atacator cu privilegii root. Problema apare doar atunci când suportul TLS este activat și este exploatat prin transmiterea unui certificat de client special conceput sau a unei valori modificate către SNI. Vulnerabilitate identificat de Qualys.

problemă prezent în handler pentru evadarea caracterelor speciale din șir (string_interpretat_escape() din șir.c) și este cauzată de caracterul '\' de la sfârșitul șirului fiind interpretat înainte de caracterul nul ('\0') și scăpa de acesta. La evadare, secvența „\” și următorul cod nul de sfârșit de linie sunt tratate ca un singur caracter, iar indicatorul este mutat la datele din afara liniei, care este tratată ca o continuare a liniei.

Codul care apelează string_interpret_escape() alocă un buffer pentru scurgere pe baza mărimii reale, iar pointerul expus ajunge într-o zonă în afara limitelor tamponului. În consecință, atunci când se încearcă procesarea unui șir de intrare, apare o situație la citirea datelor dintr-o zonă din afara limitelor bufferului alocat și o încercare de a scrie un șir fără escape poate duce la scrierea dincolo de limitele tamponului.

În configurația implicită, vulnerabilitatea poate fi exploatată prin trimiterea de date special concepute către SNI atunci când se stabilește o conexiune securizată la server. Problema poate fi exploatată și prin modificarea valorilor peerdn în configurațiile configurate pentru autentificarea certificatelor client sau la importul certificatelor. Atacul prin SNI și peerdn este posibil începând de la lansare Exim 4.80, în care funcția string_unprinting() a fost folosită pentru a anula conținutul peerdn și SNI.

Un prototip de exploit a fost pregătit pentru un atac prin SNI, rulând pe arhitecturi i386 și amd64 pe sisteme Linux cu Glibc. Exploita-ul folosește suprapunerea datelor în zona heap, ceea ce duce la suprascrierea memoriei în care este stocat numele fișierului jurnal. Numele fișierului este înlocuit cu „/../../../../../../../../etc/passwd”. În continuare, este suprascrisă variabila cu adresa expeditorului, care este mai întâi salvată în jurnal, ceea ce vă permite să adăugați un nou utilizator în sistem.

Actualizări de pachete cu remedieri de vulnerabilități lansate de distribuții Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. Problemă RHEL și CentOS nu susceptibil, deoarece Exim nu este inclus în depozitul lor obișnuit de pachete (în EPEL обновление deja format, dar deocamdată neasezat către un depozit public). În codul Exim, problema este rezolvată cu o singură linie plasture, care dezactivează efectul de evadare al barei oblice inverse dacă se află la sfârșitul liniei.

Ca o soluție pentru a bloca vulnerabilitatea, puteți dezactiva suportul TLS sau adăugați
Secțiunea ACL „acl_smtp_mail”:

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

Sursa: opennet.ru

Adauga un comentariu