Опубликован выпуск почтового сервера Exim 4.99.2 с устранением 21 уязвимости (CVE-2020-28007-CVE-2020-28026, CVE-2021-27216), которые выявлены компанией Qualys и представлены под кодовым именем 21Nails. 10 проблем могут быть эксплуатированы удалённо (в том числе для выполнения кода с правами root), через манипуляции с SMTP-командами при взаимодействии с сервером.
Проблемам подвержены все версии Exim, история которых отслеживается в Git с 2004 года. Для 4 локальных уязвимостей и 3 удалённых проблем подготовлены рабочие прототипы эксплоитов. Эксплоиты для локальных уязвимостей (CVE-2020-28007, CVE-2020-28008, CVE-2020-28015, CVE-2020-28012) позволяют поднять свои привилегии до пользователя root. Две удалённые проблемы (CVE-2020-28020, CVE-2020-28018) позволяют без аутентификации выполнить код с правами пользователя exim (затем можно получить доступ root, эксплуатировав одну из локальных уязвимостей).
Уязвимость CVE-2020-28021 позволяет сразу удалённо выполнить код с правами root, но требует аутентифицированного доступа (пользователь должен установить аутентифицированный сеанс, после чего может эксплуатировать уязвимость через манипуляции с параметром AUTH в команде MAIL FROM). Проблема вызвана тем, что атакующий может добиться подстановки строки в заголовок spool-файла из-за записи значения authenticated_sender без должного экранирования спецсимволов (например, передав команду “MAIL FROM: AUTH=Raven+0AReyes”).
Дополнительно отмечается, что ещё одна удалённая уязвимость CVE-2020-28017 пригодна для эксплуатации для выполнения кода с правами пользователя “exim” без аутентификации, но требует наличия более 25 ГБ памяти. Для остальных 13 уязвимостей потенциально также могут быть подготовлены эксплоиты, но работа в этом направлении пока не проводилась.
Разработчики Exim были уведомлены о проблемах ещё в октябре прошлого года и потратили более 6 месяцев на разработку исправлений.
Всем администраторам рекомендовано срочно обновить Exim на своих почтовых серверах до версии 4.94.2. Все версии Exim до выпуска 4.94.2 объявлены устаревшими (obsolete). Публикация новой версии была скоординирована с дистрибутивами, которые одновременно опубликовали обновления пакетов: Ubuntu, Arch Linux, FreeBSD, Debian, SUSE и Fedora. RHEL и CentOS проблеме не подвержены, так как Exim не входит в их штатный репозиторий пакетов (в EPEL обновление пока отсутствует).