Разработчики почтового сервера Postfix выпустили обновления для всех поддерживаемых веток, а также для нескольких устаревших. Причиной стали множественные уязвимости, часть которых позволяет атакующему вызвать отказ в обслуживании на расстоянии или обойти политику безопасности. Проблемы обнаружили специалисты Qualys и команда OpenAI Security.
Детали уязвимостей
Уязвимости затрагивают версии Postfix 3.10.x до 3.10.13, 3.11.x до 3.11.6, а также более старые ветки 3.6-3.9. Для неподдерживаемых версий 3.5.x и 3.7.x также подготовлены исправления, но они не включают некоторые ранее выпущенные патчи. Речь идёт о решениях для обработки крупных SMTP-запросов, разбора записей TLSA и защиты от SMTP-смаглинга. Эти патчи нужно устанавливать отдельно.
Наиболее серьёзная проблема связана с обходом политики безопасности в SMTP-сервере. Из-за ошибки сброса состояния команд MAIL FROM и RCPT TO после отклонения сообщения на этапе smtpd_end_of_data_restrictions возникает рассинхронизация протокола между клиентом и сервером. В результате злоумышленник может отправить команды RCPT TO и DATA без предшествующей команды MAIL FROM. При этом сервер не применяет ограничения на получателей для второго сообщения. Похожая ситуация возникает при использовании Milter: после того как фильтр принял первое сообщение, а SMTP-сервер его отклонил, фильтр остаётся в состоянии "принять", и для второго сообщения его проверки пропускаются.
Отдельная группа уязвимостей ведёт к отказу в обслуживании. Одна из них вызвана исчерпанием памяти при обработке большого числа очень маленьких BDAT-запросов. Другая связана с отравлением кэша проверки адресов: локальный пользователь может через команду postdrop отправить проверочный запрос с таким содержимым, которое Postfix позже отвергнет. Это приведёт к созданию отрицательной записи в кэше, и сервер начнёт отклонять сообщения, которые должен принимать. Кроме того, несколько ошибок вызывают аварийное завершение процессов SMTP-сервера при обработке специально сформированных команд или некорректных ответов от Dovecot AUTH.
Ряд уязвимостей связан с некорректной работой с памятью. Среди них чтение после освобождения, чтение неинициализированной памяти и выход за границы буфера при разборе DNS-записей. В большинстве случаев эти ошибки не приводят к повышению привилегий, но могут стать причиной аварийного завершения или утечки данных в журналах. Например, одна из проблем приводит к записи мусорных данных в лог при обработке ошибок ввода-вывода, другая - к чтению лишних байт из MX- и SRV-записей.
Примечательно, что многие дефекты существуют в кодовой базе Postfix более 20 лет. Как отмечает создатель Postfix Вьетце Венема, ошибки были найдены в коде объёмом более 150 тысяч строк, и их количество не превышает ожидаемого для такого проекта. Тем не менее часть из них даёт реальные векторы атак, поэтому разработчики рекомендуют обновляться.
Для защиты необходимо установить одну из исправленных версий: 3.11.6, 3.10.13, 3.9.14, 3.8.20, 3.7.22, 3.6.20 или 3.5.27. Обновления для неподдерживаемых веток 3.5-3.7 предназначены для администраторов, которые по каким-то причинам ещё не перешли на актуальные версии. Им также потребуется вручную применить ранее выпущенные патчи, не вошедшие в эти сборки.
Уязвимости Postfix привлекают внимание к проблемам долгоживущего инфраструктурного ПО. Почтовые серверы редко обновляются, а ошибки в них могут оставаться незамеченными десятилетиями. Регулярное обновление и проверка конфигурации остаются основными мерами защиты от подобных проблем.
Ссылки