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 патчында да екі осалдық анықталды. Бірінші осалдық (
Мәселені шешу үшін Бернштейн қолжетімді жадтың жалпы шегімен («softlimit -m12345678») qmail процестерін іске қосуды ұсынды, бұл жағдайда мәселе блокталады. Қорғаудың баламалы әдісі ретінде өңделген хабардың максималды өлшемін «басқару/деректер» файлы арқылы шектеу де айтылған (әдепкі бойынша ол әдепкі параметрлермен жасалмаған qmail осал болып қалады). Сонымен қатар, "басқару/деректер" жүйе пайдаланушыларының жергілікті шабуылдарынан қорғамайды, өйткені шектеу тек qmail-smtpd арқылы ескеріледі.
Мәселе пакетке әсер етеді
Ақпарат көзі: opennet.ru