Pull to refresh

Почему у Сбербанка некорректная SPF-запись для домена?

Reading time 3 min
Views 33K
Кратко: у основного домена Сбербанка (sberbank.ru) некорректная SPF-запись. Это приводит к тому, что у злоумышленников есть возможность делать фальшивые рассылки электронной почты от имени Сбербанка. Сама запись настроена хорошо, годно, но с ошибкой, сводящей к нулю все усилия.

> host -t txt sberbank.ru
sberbank.ru descriptive text "v=spf1 mx mx:shark11.sberbank.ru mx:shark12.sberbank.ru mx:shark13.sberbank.ru mx:shark14.sberbank.ru mx:email1.sberbank.ru -all"

Счастливый финал: в течение дня запись исправили, теперь она соответствует RFC.

> host -t txt sberbank.ru
sberbank.ru descriptive text "v=spf1 mx -all"

Ну, а для тех кто осилит прочитать — добро пожаловать под кат.

Зачем нужен SPF?


SPF помогает бороться с подделкой адресов отправителя. Не путайте SPF c DMARC, SPF позволяет только установить, мог ли данный IP-адрес отправлять почту от имени вот того домена (с поддержкой целого ряда исключений и реверансов).

Существует мнение, что SPF не нужен и вреден, однако как показывает практика, SPF на сегодня есть основной механизм в DMARC и пока на горизонте ничего подобного нет.

Как это работает?


Почтовый сервер, принимая почту, смотрит на адрес отправителя, а потом идет и запрашивает у домена отправителя особые записи, где на хитром языке сформулировано, какой IP может слать почту этого домена, а какой нет. В результате принимается решение, принимать ли данное письмо или нет, а может быть принять и посчитать спамом.

И что, реально работает?


Ну, в целом, не совсем. Изначально в SPF был предусмотрен тип записи, который позволяет делать Softfail. Это как бы косяк, но простительный. То есть, я говорю, что почта от моего домена может идти с вот этих адресов, тогда она точно нормальная. И если с каких-то других, то это ничего, простительно.

Вот эта извинительная приписка вообще на сегодня практически сводит к нулю толк от SPF, поскольку спамеры часто в эту извинительную приписку попадают.

В чем Сбербанк молодец?


А в том, что у них запись содержит -all, это как раз недопущение извинительного Softfail. То есть, ребята из Сбера как бы говорят нам, что почта от них может идти только с заданных адресов и никак иначе. Молодцы, это здорово.

А в чем же Сбербанк ошибся?


А в том, что запись у них сформулирована неверно. Это вызывает ошибку Permerror, и тогда у большинства почтовых систем запись даже не проверяется, а письмо просто пропускается.

Согласитесь, глупо делать -all, жесткую запись и при этом допускать ошибку, делая всю запись некорректной.

Да где же ошибка?


RFC 7208 вводит некоторые ограничения на количество DNS-запросов, которые должен сделать почтовый сервер, чтобы получить нужные данные в SPF. Оно же самое RFC ограничивает количество запросов с пустым результатом или ошибкой.

Разбираем запись:

"v=spf1 mx mx:shark11.sberbank.ru mx:shark12.sberbank.ru mx:shark13.sberbank.ru mx:shark14.sberbank.ru mx:email1.sberbank.ru -all"

0. v=spf1

Версия SPF-записи, т.е. синтаксис

1. mx

Почту от домена sberbank.ru могут отправлять только те серверы, что перечислены, как MX

> host -t mx sberbank.ru
sberbank.ru mail is handled by 50 shark11.sberbank.ru.
sberbank.ru mail is handled by 50 shark14.sberbank.ru.
sberbank.ru mail is handled by 50 email1.sberbank.ru.
sberbank.ru mail is handled by 50 shark12.sberbank.ru.
sberbank.ru mail is handled by 50 shark13.sberbank.ru.

Хорошо, видим эти пять серверов.

2. mx:shark11.sberbank.ru

Почту от домена sberbank.ru могут отправлять те серверы, что перечислены, как MX для домена shark11.sberbank.ru

СТОП! Ещё раз.

Почту от домена sberbank.ru могут отправлять те серверы, что перечислены, как MX для домена shark11.sberbank.ru

> host -t mx shark11.sberbank.ru
shark11.sberbank.ru has no MX record

И вот этот результат засчитывается, как пустой. А по RFC, после первых двух таких ошибок надо прекратить анализировать SPF-запись и посчитать ее ошибочной. Что и происходит.

Короче говоря, ребята немного перестарались.

Как надо было сделать?


"v=spf1 mx -all"


А может коллеги сделали лучше?


На самом деле, сам Сбербанк редко шлет письма, вернее, в нашей почтовой системе их, например, не так много. Гораздо больше их приходит от площадки «Сбербанк АСТ», давайте посмотрим туда.

> host -t txt sberbank-ast.ru
sberbank-ast.ru descriptive text "v=spf1 mx a:mail2.sberbank-ast.ru a:mail3.sberbank-ast.ru a:mail4.sberbank-ast.ru a:gw.sberbank-ast.ru a:mail7.sberbank-ast.ru ~all"

А тут, увы, Softfail. Что сводит к нулю ценность SPF-записи.

UPDATE
Коллеги из «Сбербанк АСТ» отреагировали быстро. Теперь вот так:

> host -t txt sberbank-ast.ru
"v=spf1 mx a:mail2.sberbank-ast.ru a:mail3.sberbank-ast.ru a:mail4.sberbank-ast.ru a:gw.sberbank-ast.ru a:mail7.sberbank-ast.ru -all"

По сути, конечно, несколько избыточно, поскольку есть указание mx и

> host -t mx sberbank-ast.ru
sberbank-ast.ru descriptive text sberbank-ast.ru mail is handled by 5 mail4.sberbank-ast.ru.

Но переключение с ~all на -all достойно всяческой похвалы.
Tags:
Hubs:
+53
Comments 42
Comments Comments 42

Articles