Проблема вызвана тем, что разные SMTP-серверы по разному трактуют последовательность окончания данных, что может приводить к разделению одного письма на несколько в рамах одного сеанса к SMTP-серверу. В спецификации для маркировки окончания передачи письма определена последовательность «rn.rn» (точка, обрамлённая символами возврата каретки и перевода строки). После этой последовательности могут следовать команды для передачи другого письма без разрыва соединения.
Одни SMTP-серверы строго следуют предписанию, но другие, для обеспечения совместимости с некоторыми редкими почтовыми клиентами, обрабатывают в качестве разделителя и такие последовательности, как «n.n», «n.rn», «rn.n», «r.r», «rn .rn» и «rn .rn».
Атака сводится к тому, что на первый сервер, который обрабатывает только разделитель «rn.rn» отправляется письмо, в теле которого присутствует альтернативный разделитель, например, «r.r», следом за которым следуют команды отправки второго сообщения. Так как первый сервер строго следует спецификации, он обрабатывает полученную последовательность как одно письмо. Если далее письмо направляется на транзитный сервер или сервер получателя, который дополнительно воспринимает последовательность «r.r» как разделитель, оно будет обработано как два отдельно отправленных письма (второе письмо может быть отправлено от имени пользователя, не аутентифицированного через «AUTH LOGIN», но выглядеть как корректное на стороне получателя).
В качестве примеров SMTP-серверов и служб, допускающих альтернативные разделители отмечены Postfix, Sendmail, MS Exchange Online и Cisco Secure Email Gateway, а среди почтовых сервисов не фильтрующих некорректные разделители из писем при обращении к другим серверам — GMX, iСloud и Microsoft Outlook.
Для блокирования проблемы в Postfix в выпуски 3.8.1, 3.7.6, 3.6.10 и 3.5.20 добавлена настройка «smtpd_forbid_unauth_pipelining«, приводящая к разрыву соединения в случае использования разделителей, не соответствующих требованиям RFC 2920 и RFC 5321. В настоящее время по умолчанию данная настройка отключена, но её планируют активировать по умолчанию в ветке Postfix 3.9, которая ожидается весной 2024 года. В ветке 3.9 также будет включена настойка smtpd_forbid_bare_newline, выводящая ошибку при использовании только символа перевода строки («n») для разделения строк, что нарушает RFC 5321.
В готовящемся выпуске Sendmail 8.18.0.2 для защиты от атаки
в srv_features предложена опция ‘o’, включающая обработку только последовательности «rn.rn». Отмечается, что отключение поддержки альтернативных разделителей может нарушить работу некоторых редких почтовых клиентов, не полностью соответствующих спецификации SMTP.
Источник: http://www.opennet.ru/opennews/art.shtml?num=60329