Ang kritikal nga kahuyangan sa Exim nga nagtugot sa code nga ipatuman sa server nga adunay mga pribilehiyo sa gamut

Sa Exim mail server giila kritikal pagkahuyang (CVE-2019-10149), nga mahimong mosangpot sa remote code execution sa server nga adunay root rights sa pagproseso sa usa ka espesyal nga gihimo nga hangyo. Ang posibilidad sa pagpahimulos sa problema namatikdan sa mga bersyon gikan sa 4.87 hangtod 4.91 lakip o kung nagtukod gamit ang EXPERIMENTAL_EVENT nga kapilian.

Sa default nga pag-configure, ang pag-atake mahimo nga himuon nga wala’y kinahanglan nga mga komplikasyon sa usa ka lokal nga tiggamit, tungod kay ang "verify = recipient" nga ACL gipadapat, nga nagpahigayon dugang nga pagsusi alang sa mga eksternal nga adres. Ang usa ka hilit nga pag-atake mahimong mahitabo kung ang mga setting gibag-o, sama sa paglihok ingon usa ka sekondaryang MX alang sa lain nga domain, pagtangtang sa "verify=recipient" ACL, o pipila nga mga pagbag-o sa local_part_suffix). Posible usab ang usa ka hilit nga pag-atake kung ang tig-atake makahimo sa pagpadayon sa koneksyon sa server nga bukas sulod sa 7 ka adlaw (pananglitan, pagpadala usa ka byte matag minuto aron makalikay sa usa ka timeout). Sa samang higayon, posible nga adunay mas simple nga mga vector sa pag-atake alang sa hilit nga pagpahimulos sa problema.

Ang kahuyang tungod sa sayop nga pag-verify sa adres sa nakadawat sa deliver_message() function nga gihubit sa /src/deliver.c file. Pinaagi sa pagmaniobra sa pag-format sa adres, makab-ot sa usa ka tig-atake ang pag-ilis sa iyang datos ngadto sa mga argumento sa usa ka sugo nga gitawag pinaagi sa execv() function nga adunay mga katungod sa gamut. Ang operasyon wala magkinahanglan sa paggamit sa komplikadong mga teknik nga gigamit alang sa buffer overflows o memory corruption; igo na ang yano nga pag-ilis sa karakter.

Ang problema nalangkit sa paggamit sa construct para sa address conversion:

deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", bag-o->adres));
deliver_domain = expand_string(
string_sprintf("${domain:%s}", bag-o->adres));

Ang expand_string() function kay usa ka overcomplicated combiner, apil ang pag-ila sa command "${run{command arguments}", nga motultol sa paglusad sa external handler. Busa, aron atakehon sulod sa sesyon sa SMTP, ang usa ka lokal nga user kinahanglan lang magpadala ug command sama sa 'RCPT TO β€œusername+${run{...}}@localhost”', diin ang localhost maoy usa sa mga host gikan sa local_domains list, ug ang username mao ang ngalan sa usa ka kasamtangan nga lokal nga tiggamit.

Kung ang server nagtrabaho isip usa ka mail relay, igo na nga ipadala sa layo ang command 'RCPT TO "${run{...}}@relaydomain.com"', diin ang relaydomain.com usa sa mga host nga nalista sa relay_to_domains seksyon sa mga setting. Tungod kay ang Exim dili default sa pagtangtang sa privilege mode (deliver_drop_privilege = false), ang mga sugo nga gipasa pinaagi sa "${run{...}}" ipatuman isip gamut.

Mamatikdan nga ang pagkahuyang giwagtang sa 4.92 nga pagpagawas nga gipagawas kaniadtong Pebrero, nga wala gipasiugda nga ang pag-ayo mahimong mosangpot sa mga problema sa seguridad. Walay rason sa pagtuo nga adunay usa ka tinuyo nga pagtago sa kahuyang sa Exim developers, tungod kay ang problema naayo sa panahon sa pagtul-id kapakyasan nga mahitabo kung ang dili husto nga mga adres gipasa, ug ang pagkahuyang giila ni Qualys sa panahon sa pag-audit sa mga pagbag-o sa Exim.

Ang usa ka pag-ayo alang sa nangaging mga bersyon nga padayon nga gigamit sa mga pag-apod-apod sa pagkakaron magamit ra ingon patch. Ang corrective releases para sa nangaging mga branch aron ayuhon ang problema gikatakda sa Hunyo 11. Ang mga update sa package andam na Debian, Ubuntu, openSUSE. Arch Linux ΠΈ Fedora Naghatag sila og bersyon 4.92, diin ang problema dili makita. Ang problema sa RHEL ug CentOS dili delikado, tungod kay ang Exim wala maapil sa ilang regular nga repository sa package.

Source: opennet.ru

Idugang sa usa ka comment