осебпазирии интиқодӣ дар Exim, ки имкон медиҳад код дар сервер бо имтиёзҳои реша иҷро карда шавад

Дар сервери почтаи Exim муайян карда шуд танкидй осебпазирӣ (CVE-2019-10149), ки метавонад ба иҷроиши коди дурдаст дар сервер бо ҳуқуқи реша ҳангоми коркарди дархости махсус таҳияшуда оварда расонад. Имконияти истифодаи мушкилот дар версияҳои аз 4.87 то 4.91 фарогир ё ҳангоми сохтан бо варианти EXPERIMENTAL_EVENT қайд карда шудааст.

Дар конфигуратсияи пешфарз, ҳамла метавонад аз ҷониби корбари маҳаллӣ бидуни мушкилиҳои нолозим анҷом дода шавад, зеро ACL "verify = recipient" истифода мешавад, ки санҷишҳои иловагии суроғаҳои берунаро анҷом медиҳад. Ҳамлаи дурдаст метавонад ҳангоми тағир додани танзимот рух диҳад, масалан, ҳамчун MX дуюмдараҷа барои домени дигар, нест кардани ACL "verify=Recipient" ё тағироти муайян ба local_part_suffix). Ҳамлаи дурдаст низ имконпазир аст, агар ҳамлакунанда қодир бошад, ки пайвастшавӣ ба серверро барои 7 рӯз боз нигоҳ дорад (масалан, фиристодани як байт дар як дақиқа барои гузаштан аз вақт). Ҳамзамон, эҳтимол дорад, ки векторҳои оддии ҳамла барои истисмори фосилавии мушкилот вуҷуд дошта бошанд.

Ин осебпазирӣ дар натиҷаи санҷиши нодурусти суроғаи гиранда дар функсияи delivery_message() дар файли /src/deliver.c муайян шудааст. Бо истифода аз форматкунии суроғаҳо, ҳамлакунанда метавонад ба иваз кардани маълумоти худ ба аргументҳои фармоне, ки тавассути функсияи execv() бо ҳуқуқи реша даъват карда мешавад, ноил шавад. Амалиёт истифодаи усулҳои мураккаберо, ки барои пур кардани буфер ё вайрон кардани хотира истифода мешаванд, талаб намекунад; иваз кардани аломатҳои оддӣ кифоя аст.

Мушкилот бо истифодаи конструксия барои табдили суроға алоқаманд аст:

teslim_localpart = васеъ_сатр (
string_sprintf("${қисми_маҳаллӣ:%s}", new->адрес));
таҳвил_домен = васеъ_сатр (
string_sprintf("${домен:%s}", new->адрес));

Функсияи expand_string() як комбинатсияи аз ҳад зиёд мураккаб аст, аз ҷумла эътирофи фармони "${run{commandarguments}", ки боиси оғози коркарди беруна мегардад. Ҳамин тариқ, барои ҳамла дар дохили сеанси 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. Коғази Linux и Федора Онҳо версияи 4.92-ро пешниҳод мекунанд, ки дар он мушкилот пайдо намешавад. Мушкилоти RHEL ва CentOS ҳассос нест, зеро Exim ба анбори бастаҳои муқаррарии онҳо дохил карда нашудааст.

Манбаъ: opennet.ru

Илова Эзоҳ