В почтовом сервере Exim нашли чтение памяти за границей буфера и подстановку писем при приёме

Exim

Четыре уязвимости в почтовом сервере Exim закрывает версия 4.100.1. Две из них живут в коде Proxy Protocol - служебного протокола, через который балансировщик нагрузки сообщает серверу настоящий адрес подключившегося клиента. Ещё одна проявляется при приёме шифрованного соединения сразу после подключения, последняя касается приёма писем. Одна проблема действует на всех версиях вплоть до 4.100, остальные требуют нестандартных настроек или сбойного промежуточного узла. Ветку с исправлениями опубликовали 18 сентября 2026 года.

Детали уязвимостей

Самый широкий охват у ошибки в первой версии Proxy Protocol. Она даёт прочитать около 230 байт за границей выделенного блока памяти и записать один нулевой байт в конце этого участка. Разработчики описывают случившееся как выход за границы буфера с повреждением памяти. Уязвимость появилась в версии 4.83, вышедшей в 2014 году, и дожила до 4.100. Чтобы её задействовать, сервер должен быть собран и настроен на работу через прокси, а сам прокси - содержать ошибку или находиться под контролем злоумышленника. Обходного способа защиты для неё не предложили.

Требование скомпрометированного прокси заметно сужает круг пострадавших. Прокси-протокол применяют не везде: он нужен там, где перед почтовым сервером поставили отдельный узел для распределения нагрузки. Сервер, принимающий соединения напрямую, эту ветку кода не использует и остаётся в стороне.

Вторая проблема того же компонента связана с использованием неинициализированных данных. Из-за неё наружу уходят фрагменты содержимого стека, то есть области памяти, куда программа складывает временные значения во время работы. Такой мусор помогает атакующему подбирать адреса и искать в памяти полезные для дальнейших шагов сведения. Условия совпадают с предыдущим случаем: поддержка Proxy Protocol в сборке и прокси, который сбоит или уже скомпрометирован. Обе эти уязвимости получили высокую оценку опасности. Нашёл их Макколей Хадсон из компании watchTowr.

Третья уязвимость проявляется в режиме, когда сервер принимает шифрованное соединение сразу при подключении. Обращение к памяти после её освобождения способно уронить процесс приёма. Опасность разработчики оценили как низкую. Срабатывание требует библиотеки GnuTLS версии 3.6.4 или новее и нестандартной настройки tls_early_banner_hosts. При ней сервер отправляет приветствие до завершения рукопожатия. Настройку можно отключить, если обновление откладывается. Такой обходной путь разработчики предложили только для одного случая из четырёх.

Четвёртая уязвимость касается приёма почты и носит название подстановки сообщения в чужой поток. Атакующий добивается, чтобы получатель принял не то письмо, которое отправила и записала в журнал система отправителя. Механика опирается на отказ на этапе передачи данных. Сразу после точки отказа добавляется подготовленная порция данных, и сервер принимает её как новое сообщение. Разработчики отдельно оговаривают, что подставленное письмо всё равно проходит штатную обработку на стороне получателя. Опасность оценили как среднюю. Уязвимы все версии Exim вплоть до 4.100. Нашли её те же исследователи из watchTowr.

Для получателя подставленное письмо приходит с того же узла, что и обычная почта, поэтому внешне ничем не выделяется. Разбор спорной ситуации превращается в сверку двух журналов, которые расходятся в описании одного и того же сеанса. Сомнения в достоверности переписки бьют по обеим сторонам, даже если содержимое письма безобидно.

Уязвимости затрагивают почтовые узлы хостингов, провайдеров, университетов и госучреждений. Exim занимает заметное место среди серверов электронной почты на Unix-платформах. Такие узлы обычно открыты в интернет, поэтому интерес к ним не пропадает. Прямого выполнения чужого кода в описаниях этих ошибок нет. Зато они позволяют вытянуть содержимое памяти, уронить процесс или провести письмо мимо журнала отправителя.

Об эксплуатации в реальных атаках в сообщении не сказано. Номера присвоили по схеме GCVE, европейской альтернативе CVE. Две ключевые проблемы получили идентификаторы GCVE-25-2026-09-50-1 и GCVE-25-2026-09-56-1. Отчёты watchTowr зарегистрированы под ссылками WT-2026-0148 и WT-2026-0149. Первый сигнал поступил 25 августа, материалы watchTowr - 8 сентября. Готовую ветку с исправлениями передали дистрибутивам 15 сентября, за три дня до публичного релиза.

Разработчики включили исправления в версию 4.100.1, выложили архивы по обычным адресам проекта и подписали тег в репозитории. Администраторам стоит перевести серверы на новую сборку: отдельного набора заплаток для старых веток не предусмотрено. Тем, кто не может обновиться прямо сейчас, доступен один временный шаг - отключить настройку с ранним приветствием. Для трёх остальных уязвимостей обходных путей нет.

Проверить, задействован ли Proxy Protocol, можно по параметрам сборки и конфигурации сервера. Если поддержка выключена, две старшие по опасности уязвимости обходят систему стороной. Остаются подстановка писем, которая работает всегда, и ошибка в шифрованном режиме, для которой нужна включённая настройка. Отказ от работы через прокси тоже не станет страховкой, если сервер уже собирали с этой поддержкой: код остаётся в бинарнике.

Почтовые серверы остаются удобной мишенью. Они смотрят в интернет, обрабатывают чужие данные и хранят историю переписки. Даже ошибка с низкой оценкой роняет процесс приёма, а подстановка писем ставит под вопрос достоверность журналов. Версия 4.100.1 снимает все четыре проблемы разом, и это самый короткий путь для администратора.

Ссылки

Комментарии: 0