Turvauuringute töötajad Qualysest vĂ”imaluse haavatavused qmailâi postiserveris, olenud teada alates 2005. aastast (CVE-2005-1513), kuid jÀÀnud lahendamata, kuna qmailâi autor vĂ€itis, et töökindla eksploitatsioonivahendi loomine, mis vĂ”iks rĂŒnnata vaikekonfiguratsiooniga sĂŒsteeme, on ebatĂ”enĂ€oline. Qualysel Ă”nnestus valmistada eksploit, mis tĂ”estab selle oletuse vale ja vĂ”imaldab algatada kaugel kĂ€ivitatavat koodi serveris, saates spetsiaalselt kujundatud sĂ”numi.
Probleem on pĂ”hjustatud tĂ€isarvu ĂŒlevoolust funktsioonis stralloc_readyplus(), mis vĂ”ib tekkida vĂ€ga suure sĂ”numi töötlemise ajal. Ekspluateerimiseks oli vajalik 64-bitine sĂŒsteem, millel on rohkem kui 4 GB virtuaalset mĂ€lu. Kui 2005. aastal uuris haavatavust, vĂ€itis Daniel J. Bernstein, et koodis olemasolev eeldus, et eraldatud massiivi suurus ei ĂŒleta 32-bitist vÀÀrtust, pĂ”hineb sellel, et keegi ei anna igale protsessile gigabaite mĂ€lu. Viimase 15 aasta jooksul on 64-bitised sĂŒsteemid serverites tĂ”rjunud 32-bitiseid, mĂ€lu maht on oluliselt suurenenud ja vĂ”rgukiirus on kasvanud.
qmailâiga kaasnevad paketid vĂ”tsid Bernsteinile adresseeritud mĂ€rkuse arvesse ja qmail-smtpd protsessi kĂ€ivitamisel piirati kĂ€ttesaadavat mĂ€lu (nĂ€iteks Debian 10 seades on piir 7MB). Kuid Qualyse insenerid avastasid, et see on ebapiisav ja lisaks qmail-smtpd-le on kaugrĂŒnnak vĂ”imalik ka qmail-local protsessi vastu, mis jĂ€i kĂ”ikides kontrollitud pakettides piiranguteta. TĂ”endusena valmistati ette eksploitatsiooni prototĂŒĂŒp, mis sobib rĂŒnnakuks vaikekonfiguratsiooniga Debian paketti qmailâiga.
Kaugel kĂ€ivitatava koodi korraldamiseks rĂŒnnaku kĂ€igus on serveris vajalik 4 GB vaba kettaruumi ja 8 GB RAM-i.
Eksploit vĂ”imaldab kĂ€ivitada mis tahes shell-kĂ€sklusi mis tahes sĂŒsteemi kasutaja Ă”igustes, vĂ€lja arvatud root ja sĂŒsteemi kasutajad, kellel pole oma alamkausta kaustas "/home" (qmail-local protsess kĂ€ivitatakse kohaliku kasutaja Ă”igustes, kellele toimub kohaletoimetamine).
RĂŒnnak toimub
lĂ€bi vĂ€ga suure e-kirja saatmise, mis sisaldab mitmeid ridu pĂ€ises, suurusega umbes 4GB ja 576MB. Sellise rea töötlemine qmail-local toob kaasa tĂ€isarvu ĂŒlevoolu, kui ĂŒritatakse kohaliku kasutaja jaoks sĂ”numit edastada. TĂ€isarvu ĂŒlevool toob omakorda kaasa puhverserveri ĂŒlevoo andmete kopeerimise kĂ€igus ja vĂ”imaluse kirjutada ĂŒmber mĂ€lulehekĂŒlgi libc-koodiga. Andmete edastamise paigutuse manipuleerimise kaudu on vĂ”imalik ka kirjutada funktsiooni "open()" aadress, asendades selle funktsiooni aadressiga "system()".
Edasi, qmail-localis meetodi qmesearch() vÀljakutsumise kÀigus avatakse fail " .qmail-extension" funktsiooni open() kaudu, mis toob kaasa funktsiooni kÀivitamise
system(".qmail-extension"). Kuid kuna osa failist "extension" moodustatakse saaja aadressi pĂ”hjal (nĂ€iteks "localuser-extension@localdomain"), saavad rĂŒndajad korraldada kĂ€su edastamise, mÀÀrates saajaks "localuser-;command;@localdomain".
Koodi analĂŒĂŒsi kĂ€igus avastati ka kaks haavatavust tĂ€iendavas qmail-verify plaastris, mis kuulub Debian'i paketti. Esimene haavatavus () vĂ”imaldab vĂ€ltida e-posti aadressi kontrollimist, teine () toob kaasa kohaliku teabe leket. EelkĂ”ige vĂ”imaldab esimene haavatavus vĂ€ltida aadressi kehtivuse kontrolli, mis on kasutusele vĂ”etud kĂ€skude edastamiseks (kontroll ei tööta domainta aadresside puhul, nagu "localuser-;command;"). Teist haavatavust saab kasutada failide ja kataloogide olemasolu kontrollimiseks sĂŒsteemis, sealhulgas ainult root'ile kĂ€ttesaadavate, kuna qmail-verify kĂ€ivitatakse root'i Ă”igustega, tehakse otse kohaliku töötleja juurde.
Probleemi vĂ€ltimiseks soovitas Bernstein kĂ€ivitada qmail-protsessid, seades ĂŒldise piiri saadaval olevale mĂ€lule ("softlimit -m12345678"), ja sel juhul probleem blokeeritakse. Alternatiivse kaitsemeetodina mainitakse ka töötlemiseks lubatava sĂ”numi maksimaalse suuruse piirangut lĂ€bi faili "control/databytes" (vaikimisi ei loo see qmaili vaikeseadistustes haavatavust). Lisaks ei kaitse "control/databytes" kohalike sĂŒsteemi kasutajate rĂŒnnakute eest, kuna piirangut arvestatakse ainult qmail-smtpd juures.
Probleem puudutab paketti , mis sisaldu on Debiani hoidlas. Selle paketi jaoks on ette valmistatud plekkide kogum, mis kĂ”rvaldab nii vanad 2005. aasta haavatavused (lisa kaudu alloc() funktsiooni mĂ€lu piirangud) kui ka uued probleemid qmail-verify-s. Eristi uuendatud versioon patch'ist qmail-verify. Arendajad valmistasid ette oma plaastrid vanade probleemide blokeerimiseks ning alustasid tööd, et kĂ”rvaldada kĂ”ik vĂ”imalikes koodis esinevad tĂ€isarvude ĂŒletĂ€itumised.
Allikas: opennet.ru
