qmail пошта серверіндегі қашықтан пайдаланатын осалдық

Qualys қауіпсіздік зерттеушілері көрсетті мүмкіндік қанау qmail пошта серверіндегі осалдықтар, әйгілі 2005 жылы (CVE-2005-1513), бірақ патчсыз қалды, себебі qmail авторы әдепкі конфигурациядағы жүйелерге шабуыл жасау үшін пайдаланылуы мүмкін жұмыс эксплойтін жасау шындыққа жанаспайды деп дәлелдеді. Qualys бұл болжамды жоққа шығаратын және арнайы жасалған хабарламаны жіберу арқылы серверде қашықтан кодты орындауды бастауға мүмкіндік беретін эксплойтты дайындай алды.

Мәселе stralloc_readyplus() функциясындағы бүтін санның асып кетуінен туындады, ол өте үлкен хабарды өңдеу кезінде орын алуы мүмкін. Жұмыс істеу үшін 64 ГБ-тан астам виртуалды жады бар 4 биттік жүйе қажет. Бастапқыда 2005 жылы осалдықты талдаған кезде Даниэль Дж. Бернштейн кодтағы бөлінген массив өлшемі әрқашан 32 биттік мән шегінде болады деген болжам ешкім әр процеске гигабайт жадты қамтамасыз етпейтініне негізделген деп дәлелдеді. Соңғы 15 жыл ішінде серверлердегі 64 биттік жүйелер 32 биттік жүйелерді ауыстырды және жеткізілетін жад көлемі мен желі өткізу қабілеті күрт өсті.

qmail бумасының қолдаушылары Бернштейннің жазбасын ескеріп, qmail-smtpd процесін бастаған кезде қолжетімді жадты шектеді (мысалы, Debian 10-да шектеу 7 МБ етіп орнатылған). Бірақ Qualys инженерлері бұл жеткіліксіз екенін анықтады және qmail-smtpd-тен басқа, барлық тексерілген пакеттерде шектеусіз қалған qmail-жергілікті процеске қашықтан шабуыл жасауға болады. Дәлел ретінде әдепкі конфигурацияда qmail көмегімен Debian бумасына шабуыл жасауға жарамды эксплойт прототипі дайындалды.
Шабуыл кезінде қашықтан кодты орындауды ұйымдастыру үшін серверге 4 ГБ бос дискілік кеңістік және 8 ГБ жедел жады қажет.
Эксплуатация «/home» каталогында жеке ішкі каталогы жоқ түбірлік және жүйелік пайдаланушыларды қоспағанда, жүйедегі кез келген пайдаланушының құқықтарымен кез келген қабық командаларын іске қосуға мүмкіндік береді (qmail-local процесі құқықтармен іске қосылады). жеткізу жүзеге асырылатын жергілікті пайдаланушының).

Шабуыл орындалады
шамамен 4 ГБ және 576 МБ өлшемді бірнеше тақырып жолын қамтитын өте үлкен пошта хабарын жіберу арқылы. Мұндай жолды qmail-local ішінде өңдеу жергілікті пайдаланушыға хабарды жеткізу әрекеті кезінде бүтін санның асып кетуіне әкеледі. Содан кейін бүтін сандардың толып кетуі деректерді көшіру кезінде буфердің толып кетуіне және жад беттерін libc кодымен қайта жазу мүмкіндігіне әкеледі. Жіберілетін деректердің орналасуын өңдеу арқылы «open()» функциясының мекенжайын оны «жүйе()» функциясының мекенжайымен ауыстырып қайта жазуға болады.

Әрі қарай, qmail-local ішінде qmesearch() шақыру процесінде open() функциясы арқылы «.qmail-extension» файлы ашылады, бұл функцияның нақты орындалуына әкеледі.
system(".qmail-кеңейтім"). Бірақ файлдың «кеңейтім» бөлігі алушының мекенжайы негізінде жасалғандықтан (мысалы, «localuser-extension@localdomain»), шабуылдаушылар «localuser-;command» пайдаланушысын көрсету арқылы пәрменді іске қосу үшін жіберуді ұйымдастыра алады. ;@localdomain» хабардың алушысы ретінде.

Кодты талдау барысында Debian пакетінің бөлігі болып табылатын қосымша qmail-verify патчында да екі осалдық анықталды. Бірінші осалдық (CVE-2020-3811) электрондық пошта мекенжайын тексеруді айналып өтуге мүмкіндік береді, ал екіншісі (CVE-2020-3812) жергілікті ақпараттың ағып кетуіне әкеледі. Атап айтқанда, бірінші осалдық пәрменді жіберу үшін эксплойтта пайдаланылған мекенжайдың дұрыстығын тексеруді айналып өтуге мүмкіндік береді (тексеру домені жоқ мекенжайлар үшін жұмыс істемейді, мысалы, «localuser-;command;»). Екінші осалдық жергілікті өңдеушіге тікелей қоңырау шалу арқылы жүйеде файлдар мен каталогтардың бар-жоғын тексеру үшін пайдаланылуы мүмкін, соның ішінде тек root үшін қол жетімді (qmail-verify түбірлік құқықтары бар іске қосылады).

Мәселені шешу үшін Бернштейн қолжетімді жадтың жалпы шегімен («softlimit -m12345678») qmail процестерін іске қосуды ұсынды, бұл жағдайда мәселе блокталады. Қорғаудың баламалы әдісі ретінде өңделген хабардың максималды өлшемін «басқару/деректер» файлы арқылы шектеу де айтылған (әдепкі бойынша ол әдепкі параметрлермен жасалмаған qmail осал болып қалады). Сонымен қатар, "басқару/деректер" жүйе пайдаланушыларының жергілікті шабуылдарынан қорғамайды, өйткені шектеу тек qmail-smtpd арқылы ескеріледі.

Мәселе пакетке әсер етеді netqmail, Debian репозиторийлеріне енгізілген. Бұл бума үшін 2005 жылғы ескі осалдықтарды (alloc() функционалдық кодына қатты жад шектеулерін қосу арқылы) және qmail-verify жүйесіндегі жаңа мәселелерді жойған патчтар жинағы дайындалды. Бөлек дайындалған qmail-verify патчының жаңартылған нұсқасы. Әзірлеушілер филиалдары notqmail ескі мәселелерді блоктау үшін өздерінің патчтарын дайындады, сонымен қатар кодтағы барлық ықтимал бүтін толып кетулерді жою үшін жұмыс істей бастады.

Ақпарат көзі: opennet.ru

пікір қалдыру