problema
Ang code na tinatawag na string_interpret_escape() ay naglalaan ng buffer para sa drain batay sa aktwal na laki, at ang nakalantad na pointer ay napupunta sa isang lugar sa labas ng mga hangganan ng buffer. Alinsunod dito, kapag sinusubukang iproseso ang isang input string, isang sitwasyon ang lumitaw kapag nagbabasa ng data mula sa isang lugar sa labas ng mga hangganan ng inilalaang buffer, at ang isang pagtatangka na magsulat ng isang hindi nakatakas na string ay maaaring humantong sa pagsulat na lampas sa mga hangganan ng buffer.
Sa default na pagsasaayos, ang kahinaan ay maaaring samantalahin sa pamamagitan ng pagpapadala ng espesyal na idinisenyong data sa SNI kapag nagtatatag ng secure na koneksyon sa server. Ang isyu ay maaari ding pagsamantalahan sa pamamagitan ng pagbabago ng mga halaga ng perdn sa mga pagsasaayos na na-configure para sa pagpapatunay ng sertipiko ng kliyente o kapag nag-i-import ng mga sertipiko. Ang pag-atake sa pamamagitan ng SNI at perdn ay posible simula sa paglabas
Ang isang pagsasamantalang prototype ay inihanda para sa isang pag-atake sa pamamagitan ng SNI, na tumatakbo sa i386 at amd64 na mga arkitektura sa mga Linux system na may Glibc. Ang pagsasamantala ay gumagamit ng overlay ng data sa heap area, na nagreresulta sa pag-overwrite sa memorya kung saan naka-imbak ang pangalan ng log file. Ang pangalan ng file ay pinalitan ng "/../../../../../../../../etc/passwd". Susunod, ang variable na may address ng nagpadala ay na-overwrite, na unang nai-save sa log, na nagbibigay-daan sa iyong magdagdag ng bagong user sa system.
Mga update sa package na may mga pag-aayos sa kahinaan na inilabas ng mga pamamahagi
Bilang isang solusyon upang harangan ang kahinaan, maaari mong i-disable ang suporta o magdagdag ng TLS
Seksyon ng ACL "acl_smtp_mail":
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
Pinagmulan: opennet.ru