Dovecot: обход аутентификации при пустом auth_username_chars
Что случилось
В почтовом сервере Dovecot выявлена опасная уязвимость в механизме SQL-аутентификации. Если администратор вручную очистил параметр auth_username_chars в конфигурации, злоумышленник может полностью обойти проверку пароля и войти в любой почтовый ящик на сервере. Кроме того, баг позволяет собрать полный список существующих учётных записей через перебор. Публичных эксплойтов в открытом доступе пока не зафиксировано, однако риск остаётся высоким из-за серьёзности последствий: компрометация переписки и данных пользователей.
Кого касается
Проблема актуальна только для серверов, где одновременно выполняются три условия:
- используется Dovecot для приёма и доставки почты;
- проверка логина и пароля выполняется через внешнюю SQL-базу (MySQL, PostgreSQL или аналог);
- в конфигурации параметр
auth_username_charsсброшен в пустое значение администратором вручную.
Если почтовые ящики работают через системных пользователей, PAM, LDAP или стандартный механизм без изменения auth_username_chars, угроза не распространяется на вашу систему.
Что делать
Владельцам VPS следует действовать в следующем порядке:
- Проверьте конфигурацию. Откройте файл аутентификации Dovecot (обычно
/etc/dovecot/conf.d/10-auth.confили собственный файл SQL-auth) и убедитесь, чтоauth_username_charsне пустой. Если строка закомментирована или содержит набор допустимых символов — всё в порядке. Если параметр явно очищен (пустые кавычки или отсутствие значения), верните стандартный набор символов. - Обновите Dovecot. Установите последнюю стабильную версию из репозитория вашего дистрибутива. В Debian/Ubuntu выполните
apt update && apt upgrade dovecot-core dovecot-mysql(илиdovecot-pgsql), в RHEL/CentOS —yum update dovecot*. После установки патча перезапустите службу командойsystemctl restart dovecot. - Временная мера. Если обновление прямо сейчас невозможно, обязательно задайте
auth_username_charsявно. Например:auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@. Это закроет вектор атаки до момента установки официального исправления.