Attālināti izmantojama ievainojamība qmail pasta serverī

DroŔības pētnieki no Qualys ir parādÄ«juÅ”i iespēja ekspluatācija ievainojamÄ«bas qmail pasta serverÄ«, slavens tālajā 2005. gadā (CVE-2005-1513), taču palika bez ielāpiem, jo ā€‹ā€‹qmail autors apgalvoja, ka nav reāli izveidot funkcionējoÅ”u izmantoÅ”anu, ko varētu izmantot, lai uzbruktu sistēmām noklusējuma konfigurācijā. Qualys spēja sagatavot ekspluatāciju, kas atspēko Å”o pieņēmumu un ļauj uzsākt attālinātu koda izpildi serverÄ«, nosÅ«tot Ä«paÅ”i izstrādātu ziņojumu.

Problēmu izraisa vesela skaitļa pārpilde funkcijā stralloc_readyplus(), kas var rasties, apstrādājot ļoti lielu ziņojumu. DarbÄ«bai bija nepiecieÅ”ama 64 bitu sistēma ar vairāk nekā 4 GB virtuālās atmiņas. Kad ievainojamÄ«ba tika sākotnēji analizēta 2005. gadā, Daniels J. Bernsteins apgalvoja, ka kodā ietvertais pieņēmums, ka pieŔķirtā masÄ«va lielums vienmēr nepārsniedz 32 bitu vērtÄ«bu, ir balstÄ«ts uz faktu, ka neviens katram procesam nenodroÅ”ina gigabaitus atmiņas. Pēdējo 15 gadu laikā 64 bitu sistēmas serveros ir aizstājuÅ”as 32 bitu sistēmas, un piegādātās atmiņas apjoms un tÄ«kla joslas platums ir dramatiski palielinājies.

Qmail pakotņu uzturētāji ņēma vērā Bernstein piezīmi un ierobežoja pieejamo atmiņu, startējot qmail-smtpd procesu (piemēram, Debian 10 ierobežojums ir iestatīts uz 7 MB). Taču Qualys inženieri atklāja, ka ar to nepietiek, un papildus qmail-smtpd var veikt attālu uzbrukumu qmail-local procesam, kas palika neierobežots visās pārbaudītajās pakotnēs. Kā pierādījums tika sagatavots ekspluatācijas prototips, kas bija piemērots uzbrukumam Debian pakotnei ar qmail noklusējuma konfigurācijā.
Lai organizētu attālu koda izpildi uzbrukuma laikā, serverim ir nepiecieÅ”ami 4 GB brÄ«vas vietas diskā un 8 GB RAM.
Ekspluatācija ļauj palaist jebkuras čaulas komandas ar jebkura lietotāja tiesÄ«bām sistēmā, izņemot saknes un sistēmas lietotājus, kuriem direktorijā ā€œ/homeā€ nav sava apakÅ”direktorija (tiek palaists qmail-local process ar tiesÄ«bām vietējais lietotājs, kuram piegāde tiek veikta).

Uzbrukums tiek veikts
nosÅ«tot ļoti lielu pasta ziņojumu, ieskaitot vairākas galvenes, aptuveni 4 GB un 576 MB. Šādas virknes apstrāde programmā qmail-local rada veselu skaitļu pārpildÄ«Å”anu, mēģinot piegādāt ziņojumu vietējam lietotājam. Vesela skaitļa pārpilde noved pie bufera pārpildes, kopējot datus un iespēju pārrakstÄ«t atmiņas lapas ar libc kodu. Manipulējot ar pārsÅ«tÄ«to datu izkārtojumu, iespējams arÄ« pārrakstÄ«t funkcijas ā€œopen()ā€ adresi, aizstājot to ar funkcijas ā€œsystem()ā€ adresi.

Pēc tam, izsaucot qmesearch() programmā qmail-local, fails ā€œ.qmail-extensionā€ tiek atvērts, izmantojot funkciju open(), kas noved pie funkcijas faktiskās izpildes.
system(".qmail-extension"). Taču, tā kā faila daļa ā€œpaplaÅ”inājumsā€ tiek Ä£enerēta, pamatojoties uz adresāta adresi (piemēram, ā€œlocaluser-extension@localdomainā€), uzbrucēji var organizēt komandas nosÅ«tÄ«Å”anu, norādot lietotāju ā€œlocaluser-;commandā€. ;@localdomainā€ kā ziņojuma adresātu.

Koda analÄ«zes laikā tika konstatētas arÄ« divas ievainojamÄ«bas papildu qmail-verify ielāpā, kas ir daļa no Debian pakotnes. Pirmā ievainojamÄ«ba (CVE-2020-3811) ļauj apiet e-pasta adreses verifikāciju, bet otrā (CVE-2020-3812) noved pie vietējās informācijas noplÅ«des. Konkrēti, pirmā ievainojamÄ«ba ļauj apiet komandas nosÅ«tÄ«Å”anas izmantoÅ”anā izmantotās adreses pareizÄ«bas pārbaudi (pārbaude nedarbojas adresēm bez domēna, piemēram, ā€œlocaluser-;command;ā€). Otro ievainojamÄ«bu var izmantot, lai pārbaudÄ«tu failu un direktoriju klātbÅ«tni sistēmā, tostarp tos, kas pieejami tikai root (qmail-verify darbojas ar root tiesÄ«bām), izmantojot tieÅ”u zvanu vietējam apdarinātājam.

Lai novērstu problēmu, Bernstein ieteica palaist qmail procesus ar kopējo pieejamās atmiņas ierobežojumu (ā€œsoftlimit -m12345678ā€), un tādā gadÄ«jumā problēma tiek bloķēta. Kā alternatÄ«va aizsardzÄ«bas metode tiek minēta arÄ« apstrādātā ziņojuma maksimālā izmēra ierobežoÅ”ana, izmantojot failu ā€œcontrol/databaitesā€ (pēc noklusējuma tas netiek izveidots ar noklusējuma iestatÄ«jumiem, qmail paliek neaizsargāts). Turklāt "kontrole/databaiti" neaizsargā pret vietējiem sistēmas lietotāju uzbrukumiem, jo ā€‹ā€‹ierobežojumu ņem vērā tikai qmail-smtpd.

Problēma ietekmē iepakojumu netqmail, iekļauts Debian krātuvēs. Å ai pakotnei ir sagatavots ielāpu komplekts, kas novērÅ” gan vecās ievainojamÄ«bas no 2005.gada (pievienojot cietās atmiņas ierobežojumus funkcijas kodam alloc()), gan jaunas problēmas programmā qmail-verify. AtseviŔķi sagatavots qmail-verify ielāpa atjauninātā versija. Izstrādātāji filiāles notqmail sagatavoja savus ielāpus, lai bloķētu vecās problēmas, kā arÄ« sāka strādāt, lai novērstu visas iespējamās veselu skaitļu pārpildes kodā.

Avots: opennet.ru

Pievieno komentāru