Inihayag ang mga detalye ng kritikal na kahinaan sa Exim

Nai-publish corrective release Exim 4.92.2 sa pag-aalis ng kritikal mga kahinaan (CVE-2019-15846), na sa default na configuration ay maaaring humantong sa remote code execution ng isang attacker na may root privileges. Lumalabas lamang ang problema kapag pinagana ang suporta sa TLS at pinagsamantalahan sa pamamagitan ng pagpasa ng isang espesyal na idinisenyong sertipiko ng kliyente o binagong halaga sa SNI. kahinaan nakilala ni Qualys.

problema naroroon sa handler para sa pagtakas ng mga espesyal na character sa string (string_interpret_escape() mula sa string.c) at sanhi ng character na '\' sa dulo ng string na binibigyang-kahulugan bago ang null character ('\0') at tinatakasan ito. Kapag tumakas, ang sequence na '\' at ang sumusunod na null end-of-line na code ay ituturing bilang isang character at ang pointer ay inililipat sa data sa labas ng linya, na itinuturing bilang isang pagpapatuloy ng linya.

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 Exim 4.80, kung saan ginamit ang string_unprinting() function upang i-unprint ang mga nilalaman ng peern at SNI.

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 Debian, Ubuntu, Fedora, SUSE/openSUSE ΠΈ FreeBSD. Problema sa RHEL at CentOS hindi madaling kapitan, dahil hindi kasama ang Exim sa kanilang regular na imbakan ng package (sa MAINIT ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ na nabuo, Pero sa ngayon hindi nakalagay sa isang pampublikong imbakan). Sa Exim code ang problema ay naayos sa isang one-liner patch, na hindi pinapagana ang escaping effect ng backslash kung ito ay nasa dulo ng linya.

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

Magdagdag ng komento