Pull to refresh
486.89
Яндекс
Как мы делаем Яндекс

Как не отключать картинки и скрипты в письмах, и при этом быть безопасными. История от Яндекс.Почты

Reading time 4 min
Views 31K
Сегодня я хочу рассказать про то, как мы сделали так, чтобы в Яндекс.Почте не нужно было включать отображение картинок в каждом письме, как это приходится делать много где, и вообще — как мы обеспечиваем защиту при показе текста письма. Что не такое очевидное дело, как может показаться.

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



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

Спамооборона


Более 90% всех электронных писем в современном интернете являются рекламным или зловредным спамом. Спамооборона эффективно пресекает попытки передачи нежелательной почты, в том числе несанкционированные рассылки, которые не просто предлагают вам что-то купить, но пытаются активно атаковать вас лично или ваш компьютер. Векторов атаки тут несколько. Самые распространённые – фишинг и рассылка вредоносного ПО: вирусов, троянов, ботов.

Ежедневно Спамооборона останавливает 50-70 тысяч писем с фишингом в сутки. Фишеры пытаются атаковать как непосредственно Яндекс-аккаунты, так и используют адреса на Яндексе для попыток кражи аккаунтов на других сервисах. Интересно, что очень часты атаки на аккаунты в онлайновых играх и магазинах игр, таких как World of Tanks или Steam.

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

Антивирус


Следующий уровень защиты – старый добрый антивирус. В 2014 году настоящие живые компьютерные вирусы в виде исполняемых файлов пересылаются по электронной почте довольно редко. Мы видим не больше нескольких тысяч таких писем в сутки. Тем не менее, каждый такой файл потенциально очень опасен, поэтому для нас жизненно важно не допустить заражения компьютеров наших пользователей. В этом нам много лет помогает компания Dr. Web, чей серверный антивирус мы запускаем на довольно большом кластере из тридцати машин в режиме полной проверки всех входящих писем.

Второй этап антифишинга


Спамооборона фильтрует письма в момент, когда они прилетают к нам на сервера приёма входящей почты (MX-ы). Важный и понятный недостаток такого режима состоит в том, что иногда угроза становится массовой, а хорошие признаки для ее выявления у нас появляются уже после того, как некоторое количество таких зловредных писем было принято в ящики пользователей. Для таких ситуаций у нас существует ещё один уровень проверок, который выполняется в момент отображения каждого конкретного письма в веб-интерфейсе Яндекс.Почты.

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

Санитайзер


Современная электронная почта – это HTML. Как бы мы, поборники и блюстители чистоты стандартов, не сопротивлялись прогрессу, пользователи сделали свой выбор. Увы, это также означает, что всё то богатство выразительных средств, которое доступно сейчас в HTML, оборачивается необходимостью очень тщательно сканировать разметку и предотвращать попытки использовать «активные» элементы для атак на пользователей веб-почты. HTML разрабатывался без учёта ситуаций, когда один документ безопасно вкладывается внутрь другого, а именно это и нужно сделать при показе HTML-письма в веб-интерфейсе (то есть, фактически, внутри другой HTML-странички). Этот компонент мы незамысловато назвали санитайзером. Он парсит HTML на уровне символов, а не элементов-объектов, так как многие атаки на веб-интерфейсы используют невалидную с точки зрения стандартов языка разметку для обхода простейших проверок. Сейчас HTML это уже не один язык, а целое семейство, и санитайзер отдельно умеет парсить язык описания CSS внутри определённых элементов и атрибутов. Результатом работы санитайзера является упрощённый текст письма, который можно безопасно вставить в другую HTML-страницу и не бояться, что вдруг выполнится какой-нибудь скрипт, которому будет доступен весь DOM веб-интерфейса или что стили из этого внутреннего блока вдруг повлияют на элементы за его пределами.

Отображение письма


Уже довольно давно веб-интерфейс Яндекс.Почты работает только с использованием безопасного протокола HTTPS. Помимо полного шифрования трафика между нашими серверами и браузером пользователя мы также используем для аутентификации запросов дополнительную безопасную куку, которая недоступна без шифрования. Благодаря ей даже если ваш провайдер украл вашу авторизацию, пока вы без шифрования, но в залогиненом состоянии смотрели Афишу Яндекса или просто посещали любой сайт, использующий счётчик Яндекс.Метрики, он не сможет попасть в ваш почтовый ящик. Для этого ему потребуется дополнительная кука, которую можно получить только расшифровав HTTPS-трафик.

Проверка на вирусные ссылки с раскручиванием укороченных ссылок


Мы не останавливаемся на этом и продолжаем защищать наших пользователей даже после того, как письмо уже выведено на экран и может быть прочитано. Самые опасные письма стараются увести пользователя из защищённого интерфейса Яндекс.Почты наружу и уже там сделать с ним что-нибудь плохое. Поэтому в момент клика в любую внешнюю ссылку в письме срабатывает ещё один этап – проверка ссылки в базе зловредных ссылок большого Яндексового веб-антивируса. Мы уже немножко писали об этом раньше, но будет уместно повторить, что наш веб-антивирус постоянно «индексирует» (совсем как робот-паук Яндекс.Поиска) миллионы страниц в интернете в поисках вирусов и других зловредных программ и составляет самую полную и актуальную в мире карту заражённого интернета. Даже если вы читаете старое письмо, содержащее ссылку, которая была абсолютно безопасной вчера, но сегодня уже ведёт на заражённую страницу, мы предупредим вас об этом и приложим усилия, чтобы вы избежали заражения.
Tags:
Hubs:
+53
Comments 71
Comments Comments 71

Articles

Information

Website
www.ya.ru
Registered
Founded
Employees
over 10,000 employees
Location
Россия
Representative