[Из песочницы] Проблемы безопасности почты Mail.ru

Два года назад мной был написан несложный PHP-скрипт для формы обратной связи. Письма приходили на почту mail.ru. Как выяснил позднее, в скрипте была ошибка. В «From» я вставлял емэйл-адрес клиента (по сути, подделывал отправителя), однако письма приходили, и ладно.

Исходный код:

$email = $_POST['email'];
$headers .= "From: " . $email . "\r\n";


А не так давно заметил, что заявки перестали приходить… Проверил форму — не работает. Вызвало недоумение, ибо никто ничего не трогал, и два года всё работало нормально. По ходу экспериментов выяснилось, что если использовать такой код:

$email = "Сбербанк >\r\n";


то можно совершенно спокойно подделывать любого отправителя (в данном случае Сбербанк).

image
image

Письма приходят во входящие. Как спам определяются не с первого раза. В интерфейсе Mail.ru пишется «Мы не можем проверить подлинность отправителя», однако если вы собираете почту с помощью программы (например, Outlook), то там никакой надписи, естественно, нет.

Ключевое место — дополнительный символ »>». Без этого символа письма с подделанным отправителем, как и положено, НЕ приходят. Очевидно, у почты Mail.ru ошибка в обработке заголовков «headers».

Проверял этот баг на Яндексе. У Яндекса такой проблемы нет (письма с подделанным отправителем не пропускает даже в папку «спам»).

P.S. Представитель Mail.ru сказал «мы не считаем данную ситуацияю ошибкой» (цитата точная), поэтому выкладываю эту информацию с чистой совестью.

© Geektimes