Исследователь безопасности под псевдонимом meh обнаружил две опасные уязвимости в популярном почтовом сервере Exim.
CVE-2017-16943 представляет собой уязвимость использования после освобождения (use-after-free) и может быть проэксплуатирована злоумышленником для удаленного выполнения произвольного кода на SMTP-сервере путем создания последовательности команд BDAT. По словам исследователей, данная уязвимость может быть использована для удаленного выполнения кода, если двоичный файл не скомпилирован с помощью PIE (position-independent code, не зависящий от адреса код).
Исследователь также опубликовал PoC-эксплоит, написанный на Python, с помощью которого любой желающий может проэксплуатировать данную проблему на уязвимых серверах Exim.
Вторая уязвимость CVE-2017-16944 позволяет удаленно вызвать отказ в обслуживании сервера даже при отсутствии активного соединения. Данная уязвимость существует из-за неправильной проверки символа «.» в конце сообщений электронной почты при синтаксическом анализе заголовка данных BDAT.
«Функция receive_msg в receive.c в SMTP-демоне Exim 4.88 и 4.89 позволяет удаленным злоумышленникам вызвать отказ в обслуживании через векторы, включающие команды BDAT, и некорректную проверку символа «.», обозначающего конец содержимого, связанного с функцией bdat_getc “, – пояснил исследователь в описании уязвимости. Для данной проблемы специалист также опубликовал PoC-эксплоит.
Обе уязвимости затрагивают версии Exim 4.88 и 4.89. Исправленное обновление Exim 4.9 доступно на портале GitHub. Exim – агент пересылки сообщений, используемый в операционных системах семейства Unix. Exim распространяется под лицензией GPL, и каждый может свободно скачать его, использовать и модифицировать.