Malayo na mapagsamantalang kahinaan sa qmail mail server

Mga mananaliksik sa seguridad mula sa Qualys nagpakita pagkakataon pagsasamantala mga kahinaan sa qmail mail server, sikat Mula noong 2005 (CVE-2005-1513), nanatili itong hindi na-patch dahil inangkin ng may-akda ng qmail na hindi makatotohanan ang paglikha ng isang gumaganang exploit na maaaring gamitin upang atakehin ang mga sistema sa kanilang default na configuration. Nagawa ng Qualys na bumuo ng isang exploit na nagpapabulaan sa palagay na ito at nagpapahintulot para sa remote code execution sa server sa pamamagitan ng pagpapadala ng isang espesyal na ginawang mensahe.

Ang isyu ay sanhi ng isang integer overflow sa stralloc_readyplus() function, na maaaring mangyari kapag pinoproseso ang isang napakalaking mensahe. Ang pagsasamantala ay nangangailangan ng isang 64-bit na sistema na may higit sa 4GB ng virtual memory. Nang unang suriin ni Daniel J. Bernstein ang kahinaan noong 2005, ikinatuwiran niya na ang pinagbabatayang palagay na ang inilaang laki ng array ay laging akma sa loob ng isang 32-bit na halaga ay batay sa katotohanan na walang nagbibigay ng gigabytes ng memorya sa bawat proseso. Sa nakalipas na 15 taon, pinalitan ng mga 64-bit na sistema ang mga 32-bit na sistema sa mga server, at ang dami ng memorya na ibinigay at bandwidth ng network ay tumaas nang malaki.

Sinunod ng mga tagapangalaga ng qmail package ang payo ni Bernstein at nilimitahan ang available na memorya nang simulan ang prosesong qmail-smtpd (halimbawa, sa Debian 10, ang limitasyon ay nakatakda sa 7MB). Gayunpaman, natuklasan ng mga inhinyero ng Qualys na hindi ito sapat, at bilang karagdagan sa qmail-smtpd, maaaring isagawa ang isang remote attack sa prosesong qmail-local, na nanatiling walang limitasyon sa lahat ng nasubukang pakete. Bilang patunay, isang prototype exploit ang inihanda, na angkop para sa pag-atake sa default na configuration ng qmail package na kasama ng Debian.
Upang maisaayos ang remote code execution sa panahon ng isang pag-atake, ang server ay dapat mayroong 4 GB ng libreng disk space at 8 GB ng RAM.
Pinapayagan ka ng exploit na patakbuhin ang anumang mga utos ng shell na may mga karapatan ng sinumang user sa system, maliban sa mga root at system user na walang sariling subdirectory sa direktoryong "/home" (ang prosesong qmail-local ay inilulunsad na may mga karapatan ng lokal na user kung kanino isinasagawa ang paghahatid).

Isinasagawa ang pag-atake
Sa pamamagitan ng pagpapadala ng napakalaking mensahe sa email, kabilang ang ilang linya ng header, na humigit-kumulang 4GB at 576MB ang laki. Ang pagproseso ng naturang linya sa qmail-local ay nagreresulta sa isang integer overflow kapag sinusubukang ihatid ang mensahe sa isang lokal na user. Ang integer overflow na ito ay humahantong sa isang buffer overflow kapag kinokopya ang data at ang posibilidad ng pag-overwrite sa mga pahina ng memorya na naglalaman ng libc code. Sa pamamagitan ng pagmamanipula sa layout ng ipinadalang data, posible, bukod sa iba pang mga bagay, na muling isulat ang address ng function na "open()", na pinapalitan ito ng address ng function na "system()".

Susunod, habang tinatawag ang qmesearch() sa qmail-local, ang file na “.qmail-extension” ay bubuksan sa pamamagitan ng open() function, na hahantong sa aktwal na pagpapatupad ng function.
system(«.qmail-extension»). Gayunpaman, dahil ang bahaging "extension" ng file ay nabubuo batay sa address ng tatanggap (hal., "localuser-extension@localdomain"), maaaring isaayos ng mga attacker ang pagpapatupad ng command, na tinutukoy ang user na "localuser-;command;@localdomain" bilang tatanggap ng mensahe.

Sa pagsusuri ng code, dalawang kahinaan din ang natukoy sa karagdagang qmail-verify patch, na kasama sa pakete ng Debian. Ang unang kahinaan (CVE-2020-3811) ay nagbibigay-daan sa iyong laktawan ang pag-verify ng email address, at ang pangalawa (CVE-2020-3812) ay humahantong sa isang lokal na pagtagas ng impormasyon. Sa partikular, ang unang kahinaan ay nagbibigay-daan sa pag-bypass sa pagsusuri ng pagpapatunay para sa address na ginamit sa exploit upang ipadala ang command (ang pagsusuri ay nabibigo para sa mga address na walang domain, tulad ng "localuser-;command;"). Ang pangalawang kahinaan ay maaaring gamitin upang i-verify ang presensya ng mga file at direktoryo sa system, kabilang ang mga naa-access lamang ng root (ang qmail-verify ay tumatakbo nang may mga pribilehiyo sa root), sa pamamagitan ng direktang pagtawag sa lokal na handler.

Upang malutas ang problema, inirerekomenda ni Bernstein ang pagpapatakbo ng mga proseso ng qmail na may limitasyon sa shared memory ("softlimit -m12345678"), na siyang makakapigil sa problema. Ang isa pang iminungkahing alternatibo ay ang paglilimita sa maximum na laki ng mensahe na pinoproseso sa pamamagitan ng file na "control/databytes" (na hindi nilikha bilang default, na nag-iiwan sa qmail na mahina sa ilalim ng mga default na setting). Bukod pa rito, ang "control/databytes" ay hindi nagpoprotekta laban sa mga lokal na pag-atake ng mga gumagamit ng system, dahil ang limitasyon ay ipinapatupad lamang ng qmail-smtpd.

Ang problema ay nakakaapekto sa pakete netqmail, na kasama sa mga repositoryo ng Debian. Isang hanay ng mga patch ang inihanda para sa paketeng ito, na tumutugon sa parehong mga lumang kahinaan mula 2005 (sa pamamagitan ng pagdaragdag ng mga limitasyon sa hard memory sa alloc() function) at mga bagong isyu sa qmail-verify. Hiwalay nakahanda Isang na-update na bersyon ng qmail-verify patch. Ang mga developer mga sanga hindiqmail Naghanda na kami ng sarili naming mga patch upang harangan ang mga lumang isyu at sinimulan na rin namin ang pag-aalis ng lahat ng posibleng integer overflows sa code.

Pinagmulan: opennet.ru

Magdagdag ng komento