Критическая уязвимость в Exim, позволяющая выполнить код на сервере с правами root

В пoчтoвoм сeрвeрe Exim выявлeнa критичeскaя уязвимoсть (CVE-2019-10149), кoтoрaя мoжeт привeсти к удaлённoму выпoлнeнию кoдa нa сeрвeрe с прaвaми root близ oбрaбoткe спeциaльнo oфoрмлeннoгo зaпрoсa. Вoзмoжнoсть эксплуaтaции проблемы отмечена в версиях с 4.87 в области 4.91 включительно или при сборке с опцией EXPERIMENTAL_EVENT. В конфигурации сообразно умолчанию атака может быть совершена кроме лишних усложнений локальным пользователем, приближенно как применяется ACL "verify = recipient", выполняющий дополнительные проверки для того внешних адресов. Совершение удалённой атаки поди при изменении настроек, например, присутствие работе в роли вторичного MX для другого домена, удалении ACL "verify = recipient" либо — либо определённых изменениях в local_part_suffix). Возле этом не исключается, что в целях удалённой эксплуатации проблемы существуют и паче простые векторы атаки. Уязвимость вызвана некорректной проверкой адреса получателя в функции deliver_message(), определённой в файле /src/deliver.c. Вследствие манипуляцию с форматированием адреса атакующий может сорвать подстановки своих данных в аргументы команды, вызываемой от функцию execv() с правами root. В целях эксплуатации не требуется применение сложных технарь, используемых при переполнениях буфера али повреждении памяти, достаточно просто подстановки символов. М связана с применением для преобразования адресов конструкции: deliver_localpart = expand_string( string_sprintf("${local_part:%s}", new->address)); deliver_domain = expand_string( string_sprintf("${domain:%s}", new->address)); Дело expand_string() является переусложнённым комбайном, в книжка числе распознающим команду "${run{команда аргументы}", приводящую к запуску внешнего обработчика. Таким образом во (избежание атаки в рамках SMTP-сеанса немерено локальным пользователем передать команду вида 'RCPT TO "username+${run{...}}@localhost"', идеже localhost один из хостов с списка local_domains, а username название существующего локального пользователя. Если сервер работает в качестве почтового релея обильно удалённо отправить команду 'RCPT TO "${run{...}}@relaydomain.com"', идеже relaydomain.com один из хостов, перечисленных в секции настроек relay_to_domains. Просто так как по умолчанию в exim безвыгодный применяется режим сброса привилегий (deliver_drop_privilege = false), переданные по вине "${run{...}}" команды будут выполнены с правами root. Примечательно, яко уязвимость была устранена вышедшем в феврале в выпуске 4.92 минус акцентирования внимания на то, зачем исправление может привести к проблемам с безопасностью. Недостает оснований полагать, что имело площадь осознанное сокрытие уязвимости разработчиками Exim, что-то около как проблемы была устранена в ходе исправления сбоя, а незащищенность была выявлена при проведении аудита изменений в Exim. Обработка для прошлых версий, которые продолжают существовать в дистрибутивах, пока доступно только в виде патча. Корректирующие выпуски для того прошлых веток с устранением проблемы запланированы держи 11 июня. Обновления пакетов подготовлены пользу кого Debian, Ubuntu, openSUSE. Arch Linux и Fedora поставляют версию 4.92, в которой заморочка не проявляется. RHEL и CentOS проблеме мало-: неграмотный подвержены, так как Exim безвыгодный входит в репозиторий пакетов. Источник: http://www.opennet.ru/opennews/art.shtml?num=50819