Dobësi e shfrytëzuar nga distanca në serverin e postës qmail

Studiuesit e sigurisë nga Qualys shfaqje mundësi shfrytëzimit dobësitë në serverin e postës qmail, i famshëm në vitin 2005 (CVE-2005-1513), por mbeti i pa rregulluar sepse autori i qmail argumentoi se ishte joreale të krijohej një shfrytëzim pune që mund të përdoret për të sulmuar sistemet në konfigurimin e paracaktuar. Qualys ishte në gjendje të përgatiste një shfrytëzim që hedh poshtë këtë supozim dhe lejon që dikush të fillojë ekzekutimin e kodit në distancë në server duke dërguar një mesazh të krijuar posaçërisht.

Problemi shkaktohet nga një tejkalim i plotë në funksionin stralloc_readyplus(), i cili mund të ndodhë kur përpunohet një mesazh shumë i madh. Operacioni kërkonte një sistem 64-bit me më shumë se 4 GB memorie virtuale. Kur dobësia u analizua fillimisht në 2005, Daniel J. Bernstein argumentoi se supozimi në kod se madhësia e grupit të alokuar është gjithmonë brenda vlerës 32-bit bazohet në faktin se askush nuk ofron gigabajt memorie për secilin proces. Gjatë 15 viteve të fundit, sistemet 64-bit në serverë kanë zëvendësuar sistemet 32-bit, dhe sasia e memories së furnizuar dhe gjerësia e brezit të rrjetit janë rritur në mënyrë dramatike.

Mbajtësit e paketës qmail morën parasysh shënimin e Bernstein dhe kufizuan memorien e disponueshme kur nisi procesi qmail-smtpd (për shembull, në Debian 10 kufiri është vendosur në 7MB). Por inxhinierët nga Qualys zbuluan se kjo nuk mjafton dhe, përveç qmail-smtpd, mund të kryhet një sulm në distancë në procesin qmail-local, i cili mbeti i pakufizuar në të gjitha paketat e testuara. Si provë, u përgatit një prototip exploit që ishte i përshtatshëm për të sulmuar paketën Debian me qmail në konfigurimin e paracaktuar.
Për të organizuar ekzekutimin e kodit në distancë gjatë një sulmi, serveri kërkon 4 GB hapësirë ​​të lirë në disk dhe 8 GB RAM.
Exploit ju lejon të ekzekutoni çdo komandë shell me të drejtat e çdo përdoruesi në sistem, me përjashtim të përdoruesve rrënjë dhe të sistemit që nuk kanë nëndirektorinë e tyre në direktorinë "/home" (procesi qmail-local niset me të drejtat të përdoruesit lokal tek i cili kryhet dorëzimi).

Sulmi është kryer
përmes dërgimit të një mesazhi postar shumë të madh, duke përfshirë disa rreshta kokë, me përmasa afërsisht 4 GB dhe 576 MB. Përpunimi i një vargu të tillë në qmail-local rezulton në një tejkalim të numrit të plotë kur përpiqet t'i japë një mesazh përdoruesit lokal. Një tejkalim i numrave të plotë çon më pas në një tejmbushje buferi gjatë kopjimit të të dhënave dhe mundësinë e mbishkrimit të faqeve të kujtesës me kodin libc. Duke manipuluar paraqitjen e të dhënave të transmetuara, është gjithashtu e mundur të rishkruhet adresa e funksionit “open()”, duke e zëvendësuar atë me adresën e funksionit “system()”.

Më pas, në procesin e thirrjes së qmesearch() në qmail-local, skedari “.qmail-extension” hapet përmes funksionit open(), i cili çon në ekzekutimin aktual të funksionit.
system(".qmail-extension"). Por meqenëse pjesa “extension” e skedarit gjenerohet në bazë të adresës së marrësit (për shembull, “localuser-extension@localdomain”), sulmuesit mund të organizojnë që komanda të dërgohet për të ekzekutuar duke specifikuar përdoruesin “localuser-;command”. ;@localdomain” si marrës i mesazhit.

Gjatë analizës së kodit, dy dobësi u identifikuan gjithashtu në patch-in shtesë të qmail-verify, i cili është pjesë e paketës për Debian. cenueshmëria e parë (CVE-2020-3811) ju lejon të anashkaloni verifikimin e adresës së emailit, dhe e dyta (CVE-2020-3812) çon në rrjedhje të informacionit lokal. Në veçanti, cenueshmëria e parë ju lejon të anashkaloni verifikimin e korrektësisë së adresës së përdorur në shfrytëzimin për të dërguar një komandë (verifikimi nuk funksionon për adresat pa një domen, si p.sh. "localuser-;command;"). Dobësia e dytë mund të përdoret për të kontrolluar praninë e skedarëve dhe direktorive në sistem, duke përfshirë ato të aksesueshme vetëm për root (qmail-verify ekzekutimet me të drejta rrënjësore), përmes një thirrjeje të drejtpërdrejtë me mbajtësin lokal.

Për të zgjidhur problemin, Bernstein rekomandoi ekzekutimin e proceseve qmail me një kufi total në memorien e disponueshme (“softlimit -m12345678”), në të cilin rast problemi bllokohet. Si një metodë alternative e mbrojtjes, përmendet edhe kufizimi i madhësisë maksimale të mesazhit të përpunuar përmes skedarit "control/databytes" (si parazgjedhje nuk është krijuar me cilësimet e paracaktuara qmail mbetet i cenueshëm). Për më tepër, "control/databytes" nuk mbron nga sulmet lokale nga përdoruesit e sistemit, pasi kufiri merret parasysh vetëm nga qmail-smtpd.

Problemi prek paketën netqmail, të përfshira në magazinat Debian. Për këtë paketë është përgatitur një grup arnimesh, duke eliminuar dobësitë e vjetra nga viti 2005 (duke shtuar kufijtë e memories së fortë në kodin e funksionit alloc()) dhe problemet e reja në qmail-verify. Veçmas përgatitur versioni i përditësuar i patch-it të verifikimit të qmail. Zhvilluesit degët notqmail përgatitën arnimet e tyre për të bllokuar problemet e vjetra dhe gjithashtu filluan të punojnë për të eliminuar të gjitha tejkalimet e mundshme të numrave të plotë në kod.

Burimi: opennet.ru

Shto një koment