Kaugjuhtimisvõimalus qmaili meiliserveris

Qualys'i turvauuringute meeskond tulemustest selgus võimalus haavatavuse leidsid haavatavuse qmaili postiserveris, kuulsa mis on olemas olnud alates 2005. aastast (CVE-2005-1513), kuid jäi parandamata, kuna qmaili autor väitis, et töötava eksploidiga rünnaku tekitamine vaikimisi seadistustes on ebausutav. Qualys suutis koostada eksploidiga, mis tõestab seda arvamust ja võimaldab kaugelt koodi täitmist serveris, saates spetsiaalselt vormindatud sõnumi.

Probleem tuleneb täisarvu ületäitumisest funktsiooni stralloc_readyplus() käigus, mis võib esineda väga suurte sõnumite töötlemisel. Ärirakenduseks oli vajalik 64-bitine süsteem, mille virtuaalmälu maht ületab 4GB. Rikkumise esialgsel analüüsil 2005. aastal väitis Daniel Bernstein, et koodis esinev eeldus, et eraldatava massiivi suurus mahub alati 32-bitise väärtuse sisse, põhines sellel, et keegi ei paku iga protsessi jaoks gigabaite mälu. Viimase 15 aasta jooksul on 64-bitised süsteemid serverites asendanud 32-bitiseid, oluliselt on suurenenud saadetava mälu maht ja võrgukiirus.

Qmaili tugipaketid arvestasid Bernstein'i kommentaari ja piiravad qmail-smtpd protsessi käivitamisel kasutatavat mälu (nt Debian 10 puhul on limiit 7MB). Kuid Qualys'e insenerid avastasid, et see pole piisav, kuna qmail-smtpd kõrval saab kaugrünnak teha ka qmail-local protsessile, mis jäi kõikides kontrollitud pakettides piiramatuks. Tõendina oli valmis prototüüp eksploidiks, mis sobib Debian'i vaikimisi konfiguratsioonis oleva qmail paketi ründamiseks.
Kaugkoodi käivitamise 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" (protsess qmail-local käivitub kohaliku kasutaja õigustes, kellele toimub kohaliku kohaletoimetamine).

Rünnak toimub
suure e-kirja saatmise kaudu, mis sisaldab pealkirjas mitut rida, suurusega umbes 4GB ja 576MB. Sellise rea töötlemine qmail-localis põhjustab täisarvu ületäitumise kohaliku kasutaja jaoks meili kohaletoimetamise katse ajal. Täisarvu ületäitumine põhjustab seejärel puhveri ületäitumise andmete kopeerimise ajal ja võimaldab mälulehekülgede kirjutamist libc koodiga. Andmete edastamise koostisosade manipuleerimisega on võimalik ka funktsiooni "open()" aadressi kirjutamine, asendades selle funktsiooni "system()" aadressiga.

Edasi, qmail-locali qmesearch() kutse protsessis avatakse fail " .qmail-extension" funktsiooni open() kaudu, mis viib funktsiooni tegeliku käivitamiseni.
system(«.qmail-extension»). Kuid osa failist «extension» luuakse adressaadi põhjal (näiteks «localuser-extension@localdomain»), mistõttu võivad ründajad korraldada käsu edastamise, määrates kasutajaks «localuser-;command;@localdomain».

Koodi analüüsi käigus tuvastati ka kaks haavatavust lisapaketis qmail-verify, mis on osa Debian'i paketist. Esimene haavatavus (CVE-2020-3811) võimaldab mööda minna e-posti aadressi kontrollist, ja teine (CVE-2020-3812) toob kaasa kohaliku teabe lekke. Eelkõige võimaldab esimene haavatavus ümbersõite aadressi kontrollimisel, mis kasutatakse käsu edastamiseks (kontroll ei toimi domeenita aadresside, nagu «localuser-;command;», jaoks). Teist haavatavust saab kasutada failide ja kataloogide olemasolu kontrollimiseks süsteemis, sealhulgas selliste, mis on saadaval ainult root-juurdepääsuga (qmail-verify käivitatakse root-kasutaja õigustes), otse kohaliku töötleja poole pöördumise kaudu.

Berni soovitas probleemist möödamiseks käivitada qmaili protsessid, määrates üldise mälu piirangu („softlimit -m12345678“), ja sel juhul probleem blokeeritakse. Alternatiivse kaitsemeetodina mainitakse ka töödeldava sõnumi maksimaalse suuruse piiramist faili „control/databytes“ kaudu (vaikimisi ei loo see qmaili vaike seadetes kaitset). Lisaks ei kaitse „control/databytes“ kohalike süsteemi kasutajate rünnakute eest, kuna piirangut arvestatakse ainult qmail-smtpd korral.

Probleem puudutab paketti netqmail, mis on Debian'i hoidlatest. Selle paketi jaoks on välja töötatud komplekt patše, mis kõrvaldab nii vanad haavatavused aastast 2005 (lisades koodi funktsiooni alloc() jäikade mälu piiride seadmiseks) kui ka uued probleemid qmail-verify's. Eraldi on valmistatud uuendatud qmail-verify patš. haru notqmail arendajad on koostanud oma patšid vanade probleemide blokeerimiseks ning algatanud töö, et kõrvaldada kõik võimalike täisarvude ületäitumised koodis.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster