problemă
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
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
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