Kërkuesit e sigurisë nga kompania Qualys mundësia të metat në serverin e postës qmail, që nga viti 2005 (CVE-2005-1513), por që ka mbetur e pakorrigjuar, pasi autori i qmail pretendoi se krijimi i një eksploituesi funksional që mund të përdoret për të sulmuar sistemet në konfigurimin e tij të paracaktuar ishte jorealiste. Në Qualys u arrit të përgatitet një eksploit që e përgënjeshtron këtë supozim dhe lejon iniciimin e ekzekutimit të kodit në server përmes dërgimit të një mesazhi të formuar në mënyrë të veçantë.
Problemi është shkaktuar nga mbushja e skajshme e numrave të plotë në funksionin stralloc_readyplus(), e cila mund të ndodhë kur përpunoni një mesazh shumë të madh. Për të shfrytëzuar këtë, ishte kërkuar një sistem 64-bit me një volum të kujtesës virtuale më shumë se 4GB. Në analizën fillestare të të metës në vitin 2005, Daniel Bernstein, pretendonte se supozimi i pranishëm në kod që do të thoshte se madhësia e masës së alokuar gjithmonë do të binte brenda një vlere 32-bit ishte bazuar në faktin se askush nuk jep gigabajtë e kujtesës për çdo proces. Gjatë 15 vitëve të fundit, sistemet 64-bit në serverë kanë zëvendësuar ato 32-bit, duke rritur ndjeshëm sasinë e memories së ofruar dhe kapacitetin e rrjeteve.
Paketat shoqëruese me qmail kanë pasur parasysh vërejtjen e Bernstein dhe kur niste procesi qmail-smtpd, ata kufizuan memorien e disponueshme (p.sh., në Debian 10 vendoset një kufi prej 7MB). Por inxhinierët nga Qualys zbuluan se kjo nuk ishte e mjaftueshme dhe përveç qmail-smtpd, një sulm në distancë mund të bëhej edhe ndaj procesit qmail-local, i cili në të gjitha paketat e kontrolluara kishte mbetur pa kufizim. Si provë, u përgatit një prototip eksploiti i përshtatshëm për sulm ndaj paketës që ofrohet në Debian me konfigurimin e saj të paracaktuar.
Për organizimin e ekzekutimit të kodit në distancë gjatë sulmit kërkohet që serveri të ketë 4GB hapësirë të lirë në disk dhe 8GB RAM.
Eksploiti lejon të ekzekutoni çdo komandë shell me të drejtat e çfarëdo përdoruesi në sistem, përveç root dhe përdoruesve sistemorë që nuk kanë një nënkatallog në katalogun "\/home" (procesi qmail-local niset me të drejtat e përdoruesit lokal, të cilit i bëhet dorëzimi).
Sulmi realizohet
nëpërmjet dërgimit të një mesazhi shumë të madh postal, që përfshin disa rreshta në titull, me madhësi rreth 4GB dhe 576MB. Përpunimi i një rreshti të tillë në qmail-local shkakton mbivlerësim të numrave të plotë kur përpiqet të dërgojë mesazhin te përdoruesi lokal. Mbivlerësimi i numrave të plotë pastaj shkakton mbivlerësim të tamponit gjatë kopjimit të të dhënave dhe mundësinë e regjistrimit të faqeve të memories me kodin libc. Duke manipuluar me ndarjen e të dhënave të transmetuara, është e mundur gjithashtu të ri-shkruhet adresa e funksionit 'open()', duke e zëvendësuar atë me adresën e funksionit 'system()'.
Më pas, gjatë thirrjes së qmesearch() në qmail-local, hapet skedari '.qmail-extension' përmes funksionit open(), çka çon në aktivizimin real të funksionit
system(' .qmail-extension'). Por, pasi një pjesë e skedarit 'extension' formohet mbi bazën e adresës së marrësit (p.sh., 'localuser-extension@localdomain'), sulmuesit mund të organizojnë dërgimin e komandës për ekzekutimin, duke e caktuar përdoruesin 'localuser-;command;@localdomain' si marrës të mesazhit.
Gjatë analizës së kodit, u identifikuan gjithashtu dy vulnerabilitete në patch-in shtesë qmail-verify, që bën pjesë në paketin për Debian. Vulnerabiliteti i parë () lejon të anashkalohet verifikimi i adresës së email-it, ndërsa i dyti () çon në rrjedhjen e informacionit lokal. Në veçanti, vulnerabiliteti i parë lejon anashkalimin e kontrollit të saktësisë së adresës, e përdorur në eksploatimin për dërgimin e komandës (verifikimi nuk funksionon për adresat pa domain, si 'localuser-;command;'). Vulnerabiliteti i dytë mund të përdoret për të kontrolluar nëse ka skedarë dhe katalogë në sistem, përfshirë ata të disponueshëm vetëm për root (qmail-verify ekzekutohet me të drejtat e root), përmes qasjes direkte në përpunuesin lokal.
Për të anashkaluar problemin, Bernstein rekomandoi që proceset qmail të ekzekutohen duke vendosur një kufi të përbashkët mbi memorjen e disponueshme ('softlimit -m12345678'), dhe në këtë rast problemi bllokohet. Një mënyrë alternative për mbrojtje përmendet gjithashtu kufizimi i madhësisë maksimale të mesazhit të përpunuar përmes skedarit 'control/databytes' (me shërbimet default nuk krijohet natyrshëm, qmail mbetet vulnerabil). Për më tepër, 'control/databytes' nuk mbron nga sulmet lokale nga përdoruesit e sistemit, pasi kufizimi merren parasysh vetëm në qmail-smtpd.
Problemi prek paketin , i përfshirë në depozitat Debian. Për këtë paketë është përgatitur një grup patch-esh që eliminojnë jo vetëm vulnerabilitetet e vjetra nga viti 2005 (nëpërmjet shtimit në kodin e funksionit alloc() të kufizimeve të forta për memorien), por gjithashtu çështje të reja në qmail-verify. Veçmas varianti i azhurnuar i patch-it qmail-verify. Zhvilluesit përgatitën patch-et e tyre për bllokimin e problemeve të vjetra, dhe gjithashtu filluan punën për t'i eliminuar të gjitha mbushjet e mundshme të numrave në kod.
Burimi: opennet.ru
