qmail posta zerbitzarian urrunetik ustia daitekeen ahultasuna

Qualyseko segurtasun ikertzaileak erakutsi zuen aukera esplotazioa ahultasunak qmail posta zerbitzarian, ospetsua 2005ean (CVE-2005-1513), baina adabakirik gabe geratu zen qmail-en egileak argudiatu zuelako ez zela errealista konfigurazio lehenetsian sistemei erasotzeko erabil zitekeen lan-explotazioa sortzea. Qualys-ek hipotesi hori ezeztatzen duen ustiapena prestatu ahal izan zuen eta zerbitzarian urruneko kodea exekutatzen hasteko aukera ematen zuen bereziki diseinatutako mezu bat bidaliz.

Arazoa stralloc_readyplus() funtzioan oso-osoko gainezkatze batek eragiten du, oso mezu handi bat prozesatzen denean gerta daitekeena. Funtzionamenduak 64 biteko sistema behar zuen, 4 GB baino gehiagoko memoria birtualarekin. Zaurgarritasuna jatorriz 2005ean aztertu zenean, Daniel J. Bernstein-ek argudiatu zuen kodean esleitutako arrayaren tamaina beti 32 biteko balioaren barruan dagoelako hipotesiak prozesu bakoitzari gigabyte-ko memoria ematen ez diola oinarrian. Azken 15 urteotan, zerbitzarietako 64 biteko sistemek 32 biteko sistemak ordezkatu dituzte, eta hornitutako memoria eta sareko banda-zabalera izugarri handitu dira.

qmail paketeen arduradunek Bernstein-en oharra hartu zuten kontuan eta qmail-smtpd prozesua abiaraztean eskuragarri dagoen memoria mugatu zuten (adibidez, Debian 10-n muga 7MB-n ezartzen da). Baina Qualys-eko ingeniariek hori nahikoa ez dela eta, qmail-smtpd-az gain, qmail-local prozesuan urruneko erasoa egin daiteke, probatutako pakete guztietan mugarik gabe geratu zena. Froga gisa, ustiapen-prototipo bat prestatu zen, konfigurazio lehenetsian Debian paketea qmail-ekin erasotzeko egokia zena.
Eraso batean urruneko kodearen exekuzioa antolatzeko, zerbitzariak 4 GB libreko diskoko espazioa eta 8 GB RAM behar ditu.
Explotazioak sistemako edozein erabiltzaileren eskubideekin shell komandoak exekutatzeko aukera ematen du, "/home" direktorioan beren azpidirektorio propiorik ez duten root eta sistemako erabiltzaileak izan ezik (qmail-local prozesua eskubideekin abiarazten da. entrega egiten zaion tokiko erabiltzailearen).

Erasoa egiten da
posta-mezu oso handi bat bidaliz, goiburuko hainbat lerro barne, 4GB eta 576MB gutxi gorabehera. Qmail-local-en halako kate bat prozesatzeak osoko gainezka egiten du erabiltzaile lokalari mezu bat bidaltzen saiatzean. Osoko gainezkatze batek buffer gainezkatzea dakar datuak kopiatzerakoan eta memoria-orriak libc kodearekin gainidazteko aukera. Igorritako datuen diseinua manipulatuz, β€œopen()” funtzioaren helbidea berridatzi ere egin daiteke, β€œsystem()” funtzioaren helbidearekin ordezkatuz.

Ondoren, qmesearch() qmail-local-en deitzeko prozesuan, ".qmail-extension" fitxategia irekitzen da open() funtzioaren bidez, eta horrek funtzioaren benetako exekuziora eramaten du.
system(".qmail-extension"). Baina fitxategiaren "luzapena" zatia hartzailearen helbidean oinarrituta sortzen denez (adibidez, "localuser-extension@localdomain"), erasotzaileek agindua bidaltzeko agindua exekutatzeko antolatu dezakete erabiltzailea "localuser-;command" zehaztuz. ;@localdomain” mezuaren hartzaile gisa.

Kodearen azterketan, bi ahultasun ere identifikatu ziren Debian-erako paketearen parte den qmail-verify adabaki gehigarrian. Lehen ahultasuna (CVE-2020-3811) helbide elektronikoaren egiaztapena saihesteko aukera ematen du, eta bigarrenak (CVE-2020-3812) tokiko informazioa isurtzea dakar. Bereziki, lehen ahultasunak komando bat bidaltzeko exploit-an erabilitako helbidearen zuzentasunaren egiaztapena saihesteko aukera ematen du (egiaztapenak ez du funtzionatzen domeinurik gabeko helbideetan, adibidez, "localuser-;command;"). Bigarren ahultasuna sisteman fitxategi eta direktorioen presentzia egiaztatzeko erabil daiteke, root-ek soilik eskura daitezkeenak barne (qmail-verify exekuzioak root eskubideekin), tokiko kudeatzaileari dei zuzen baten bidez.

Arazoari aurre egiteko, Bernsteinek gomendatu zuen qmail prozesuak abiarazteko memoria erabilgarriaren muga osoarekin ("softlimit -m12345678"), eta kasu horretan arazoa blokeatuta egongo da. Babes-metodo alternatibo gisa, prozesatutako mezuaren gehienezko tamaina "kontrol/databytes" fitxategiaren bidez mugatzea ere aipatzen da (lehenespenez ez da ezarpen lehenetsiekin sortzen qmail-ek zaurgarria izaten jarraitzen du). Gainera, "control/databytes"-ek ez du babesten sistemaren erabiltzaileen tokiko erasoetatik, muga qmail-smtpd-ek bakarrik hartzen baitu kontuan.

Arazoak paketeari eragiten dio netqmail, Debian biltegietan sartuta. Pakete honetarako adabaki multzo bat prestatu da, 2005eko ahultasun zaharrak ezabatuz (alloc() funtzioaren kodeari memoria gogorraren mugak gehituz) eta qmail-verify-ko arazo berriak ezabatuz. Bereiz prestatuta qmail-verify adabakiaren bertsio eguneratua. Garatzaileak adarrak notqmail beren adabakiak prestatu zituzten arazo zaharrak blokeatzeko, eta kodeko osoko gainezkatze posible guztiak kentzeko lanean hasi ziren.

Iturria: opennet.ru

Gehitu iruzkin berria