Бесплатно Экспресс-аудит сайта:

30.01.2020

В почтовом сервере OpenSMTPD обнаружена критическая уязвимость

Специалисты из компании Qualys Security обнаружили в почтовом сервере OpenSMTPD критическую уязвимость (CVE-2020-7247), эксплуатация которой позволяет злоумышленнику удаленно выполнять shell-команды на сервере с правами суперпользователя.

Исследователи описали два варианта атаки, первый из которых работает в заводской конфигурации OpenSMTPD. Проблема может быть проэксплуатирована локально, когда атакующий имеет возможность обратиться к локальному сетевому интерфейсу (loopback) на сервере. Второй вариант может быть осуществлен в том случае, если OpenSMTPD настроен на прием внешних сетевых запросов. Исследователи разработали PoC-код для данной уязвимости, который успешно работает как с вариантом OpenSMTPD из состава OpenBSD 6.6, так и с портативной версией для других ОС.

Проблема связана с ошибкой в функции smtp_mailaddr() для проверки корректности значений в полях "MAIL FROM" и "RCPT TO", определяющих отправителя/получателя. Суть уязвимости заключается в наличии логической ошибке в smtp_mailaddr(), из-за которой в случае передачи пустого домена в email функция возвращает успешный код проверки, даже если часть адреса до "@" содержит недопустимые символы.

Далее при подготовке строки функцией mda_expand_token() экранируются не все возможные спецсимволы shell, а только спецсимволы допустимые в почтовом адресе. Таким образом, для запуска команды достаточно использовать в локальной части email символ ";" и пробел, которые не входят в набор MAILADDR_ESCAPE и не экранируются.

Уязвимость была исправлена в версии OpenSMTPD 6.6.2. Пользователям настоятельно рекомендуется установить обновление.