Вышел релиз SMTP-сервера Exim 4.73, в котором устранены две критические уязвимости, обнаруженные в начале декабря. Уязвимости позволяют выполнить код злоумышленника и повысить свои привилегии в системе.
Ошибка, приводившая к первой уязвимости (CVE-2010-4344), была устранена в версии 4.70, но не была идентифицирована в то время как уязвимость, что привело к наличию проблемы безопасности в пакетах с Exim из состава дистрибутивов с увеличенным сроком поддержки, таких как Debian, RHEL и CentOS. Проблема была связана с возможностью вызова переполнения буфера в функции string_vformat и позволяла злоумышленнику выполнить код на сервере, через указание двух команд MAIL в пределах одной SMTP-сессии в сочетании с передачей огромного сообщения со специальным образом оформленными заголовками.
Вторая уязвимость (CVE-2010-4345), которая исправлена в текущем релизе, позволяла локальному злоумышленнику повысить свои привилегии в системе, через использования возможности по запуску пользователем exim процесса exim с альтернативным файлом конфигурации, в котором можно было указать произвольные команды в блоке spool_directory, которые могли быть выполнены с правами пользователя root. Например, запустив «exim -Ce.conf -q» в файле конфигурации e.conf можно указать выполнение произвольных операций «spool_directory = ${run{/bin/chown user:user /etc/shadow}}».
Кроме исправления уязвимостей, в новой версии представлено несколько мелких улучшений:
- Задействован более новый Clam/AV API (zINSTREAM API) для организации фильтрации контента. Старый API можно включить путем сборки с опцией WITH_OLD_CLAMAV_STREAM=yes;
- Улучшена поддержка OpenSSL: добавлена опция конфигурирования openssl_options, расширены средства диагностики проблем с SSL,
- Дополнительные улучшения поддержки DKIM (DomainKeys Identified Mail). Не связанные с критическими проблемами ошибки DKIM более не направляются в paniclog;
- Реализован оператор reverse_ip;
- Добавлен отладочный режим в ACL («debug»);
- Поддержка множественных условных правил над блоками «Router»;
- Блокирование запуска или сборки Exim от пользователя root;
- Добавлена опция tcp_wrappers_daemon_name, позволяющая использовать имена процессов, отличные от «exim»;
- Удалены зависимости от определенной в стандарте C99 функции va_copy().