Түбірлік құқықтары бар серверде кодты орындауға мүмкіндік беретін Exim жүйесіндегі маңызды осалдық

Exim пошта серверінде анықталды сыни осалдық (CVE-2019-10149), бұл арнайы жасалған сұрауды өңдеу кезінде түбірлік құқықтары бар серверде қашықтан кодты орындауға әкелуі мүмкін. Мәселені пайдалану мүмкіндігі 4.87-ден 4.91-ге дейінгі нұсқаларда немесе EXPERIMENTAL_EVENT опциясымен құрастыру кезінде атап өтілді.

Әдепкі конфигурацияда шабуылды жергілікті пайдаланушы қажетсіз асқынуларсыз жүзеге асыруы мүмкін, өйткені сыртқы мекенжайларды қосымша тексеруді жүзеге асыратын «тексеру = алушы» ACL қолданылады. Басқа домен үшін қосымша MX ретінде әрекет ету, "тексеру=алушы" ACL жою немесе local_part_suffix-ке белгілі бір өзгерістер) сияқты параметрлер өзгертілген кезде қашықтағы шабуыл орын алуы мүмкін. Қашықтағы шабуыл, егер шабуылдаушы серверге қосылымды 7 күн бойы ашық ұстай алса (мысалы, күту уақытын айналып өту үшін минутына бір байт жіберу) мүмкін. Сонымен қатар, мәселені қашықтан пайдалану үшін қарапайым шабуыл векторлары болуы мүмкін.

Осалдық /src/deliver.c файлында анықталған delivery_message() функциясында алушының мекенжайын дұрыс тексеруден туындайды. Мекенжай пішімдеуімен айла-шарғы жасау арқылы шабуылдаушы өз деректерін түбірлік құқықтары бар execv() функциясы арқылы шақырылатын команданың аргументтеріне ауыстыруға қол жеткізе алады. Операция буфердің толып кетуі үшін қолданылатын күрделі әдістерді пайдалануды талап етпейді немесе қарапайым таңбаларды ауыстыру жеткілікті;

Мәселе мекен-жайды түрлендіру үшін құрылымды пайдаланумен байланысты:

жеткізу_жергілікті бөлім = кеңейту_жолы(
string_sprintf("${жергілікті_бөлік:%s}", жаңа->адрес));
жеткізу_домені = кеңейту_жолы(
string_sprintf("${домен:%s}", жаңа->адрес));

expand_string() функциясы сыртқы өңдеушіні іске қосуға әкелетін “${run{command arguments}” пәрменін тануды қоса алғанда, тым күрделі біріктіргіш болып табылады. Осылайша, SMTP сеансы ішінде шабуылдау үшін жергілікті пайдаланушы тек "RCPT TO "username+${run{...}}@localhost" сияқты пәрменді жіберуі керек, мұнда localhost local_domains тізіміндегі хосттардың бірі болып табылады, және пайдаланушы аты - бұрыннан бар жергілікті пайдаланушының аты.

Сервер пошта релесі ретінде жұмыс істесе, қашықтан 'RCPT TO "${run{...}}@relaydomain.com" пәрменін жіберу жеткілікті, мұнда relaydomain.com relay_to_domains ішінде тізімделген хосттардың бірі болып табылады. параметрлер бөлімі. Exim әдепкі бойынша артықшылық режимін өшіру үшін (deliver_drop_privilege = жалған), "${run{...}}" арқылы жіберілген пәрмендер түбір ретінде орындалады.

Бір қызығы, осалдық болды жойылды ақпан айында шығарылған 4.92 шығарылымында түзету қауіпсіздік мәселелеріне әкелуі мүмкін екеніне назар аудармайды. Exim әзірлеушілері осалдықты қасақана жасырды деуге негіз жоқ, өйткені мәселе жөндеу кезінде шешілді. түзетулер қате мекенжайлар жіберілген кезде орын алатын сәтсіздік және осалдықты Qualys Exim жүйесіндегі өзгерістер аудиті кезінде анықтады.

Дистрибуцияларда қолданыла беретін алдыңғы нұсқалар үшін түзету қазір тек ретінде қол жетімді патч. Мәселені шешу үшін алдыңғы филиалдар үшін түзету шығарылымдары 11 маусымға жоспарланған. Пакет жаңартулары дайын Debian, Ubuntu, openSUSE. Arch Linux и Fedora Олар 4.92 нұсқасын ұсынады, онда мәселе пайда болмайды. RHEL және CentOS мәселесі сезімтал емес, өйткені Exim олардың кәдімгі бума репозиторийіне қосылмаған.

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

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