CVE-2010-4345
Exim Exim
2022-03-25
Exim allows local users to gain privileges by leveraging the ability of the exim user account to specify an alternate configuration file with a directive that contains arbitrary commands.
Технический анализ и план устранения
Суть уязвимости
Локальный пользователь с правами учетной записи exim (обычно exim или Debian-exim) может выполнить произвольные команды с правами root. Для этого он указывает альтернативный конфигурационный файл через параметр командной строки (например, -C), в котором прописывает директиву, позволяющую выполнить команду (например, spool_directory или log_file_path с командой в виде макроса ${run{...}}).
Как исправить
Установите исправленную версию Exim. Конкретные версии зависят от дистрибутива:
-
Debian/Ubuntu:
bash # Для Debian 6.0 (Squeeze) и Ubuntu 10.10 (Maverick) sudo apt-get update sudo apt-get install exim4 # Убедитесь, что установлена версия: # Debian: exim4 4.72-6+squeeze1 или выше # Ubuntu: exim4 4.72-3ubuntu1.1 или выше -
RHEL/CentOS:
bash # Для RHEL/CentOS 5 и 6 sudo yum update exim # Убедитесь, что установлена версия: # RHEL 5: exim-4.63-15.el5_7 или выше # RHEL 6: exim-4.72-6.el6_1.1 или выше -
Из исходных кодов: Обновитесь до Exim версии 4.72 или выше, где эта уязвимость исправлена.
После обновления перезапустите демон Exim:
sudo systemctl restart exim4 # или exim, или /etc/init.d/exim4 restart
Временное решение
Если немедленное обновление невозможно, примените следующие ограничения:
-
Ограничьте права на конфигурационные файлы: Убедитесь, что только
rootможет записывать в основной конфигурационный файл Exim и в директории, где он находится.bash sudo chmod 644 /etc/exim4/exim4.conf.template sudo chown root:root /etc/exim4/exim4.conf.template -
Ограничьте использование ключа
-C: В главном конфигурационном файле Exim (exim4.conf.template) добавьте или измените параметрtrusted_users, чтобы исключить из него пользователяexim(илиDebian-exim). Это предотвратит использование альтернативных конфигов.# В секцию main (или в начало конфига) добавьте: trusted_users = root # Или явно удалите exim из списка, если он там был. -
Изолируйте учетную запись exim: Убедитесь, что у пользователя
eximнет интерактивной оболочки (в/etc/passwdдолжен быть/usr/sbin/nologinили/bin/false) и нет возможности войти в систему.
Важно: Временные меры лишь снижают риск. Полное устранение возможно только путем обновления.