В почтовом сервере Exim обнаружена критическая уязвимость, позволяющая организовать удаленное выполнение кода на почтовом сервере, на котором включена поддержка DKIM-верификации (DomainKeys Identified Mail) входящих сообщений.
Для проведения атаки злоумышленник может отправить на сервер жертвы письмо, содержащее специально оформленную DKIM-сигнатуру, указанную в заголовке "DKIM-Signature:". При наличии в поле "i", используемом для идентификации, блока данных, в котором присутствуют символы "%", в процессе проверки валидности отправителя почтовый сервер интерпретирует символы "%" как управляющие команды форматирования строки. Проблема присутствует в участке кода функции "dkim_exim_verify_finish()" (src/dkim.c), ответственном за вывод данных в лог. Ошибка может привести к повреждению содержимого памяти и потенциальной возможности выполнения кода злоумышленника с правами пользователя, под которым работает почтовый сервер exim.
Уязвимость обнаружена разработчиками Exim после жалобы одного из пользователей на крах в случае наличия символа процента внутри DKIM-сигнатуры. Проблема проявляется только в конфигурациях Exim, начиная с версии 4.70, с включенной поддержкой DKIM. Ошибка устранена в тестовой версии Exim 4.76-RC1. Релиз Exim 4.76 планируется выпустить в понедельник.
Обновления с исправлением уязвимости в настоящий момент доступны только для дистрибутива Debian GNU/Linux, в котором Exim используется в качестве почтового сервера по умолчанию. Статус выхода исправлений для остальных систем можно отследить на следующих страницах: Slackware, Gentoo, Mandriva, openSUSE, CentOS, Fedora, RHEL, Ubuntu, FreeBSD. Патч можно загрузить здесь.