Сегодня на главной Яндекса мы будем показывать всем пользователям
ссылку на страницу с нашими советами о том, как важно следить за своими паролями и регулярно менять их.
Вы, вероятно, догадываетесь, почему мы так делаем. CVE-2014-0160 — одна из самых серьезных уязвимостей, найденных за последние годы. Нельзя сказать, что она касается только отдельных сервисов и сайтов — уязвимость затронула практически весь интернет. OpenSSL — одна из самых распространённых криптобиблиотек. По разным оценкам, до двух третей всех HTTPS-соединений в интернете организуются с помощью этой библиотеки.
В этом посте я расскажу, как мы реагировали на информацию об уязвимости, что, когда и почему делали.
HeartBleed затронула OpenSSL версий от 1.0.1 до 1.0.1g. Эту ветку OpenSSL мы начали использовать в декабре 2013 года, так как предыдущие версии не поддерживали новые сильные криптографические протоколы TLS 1.1 и TLS 1.2 (проверить, насколько сильные протоколы поддерживает сервис, можно, например
тут).
Мы узнали об уязвимости в ночь на вторник, 8 апреля, как только информация о ней появилась в публичных источниках. Немного времени у нас ушло на разбор и оценку степени критичности проблемы.
Здесь важно заметить, что в сервисах, для которых огромное значение имеет высокая степень доступности — а это почти все сервисы Яндекса с многомиллионной аудиторией, — никакое обновление не может быть установлено «на горячую» или автоматически. Малейшая нестыковка — и большое количество пользователей могут испытать трудности в работе с сервисами.
В Яндексе, как вы знаете, огромное количество серверов, и проверка на наличие в них уязимости могла стать большой проблемой. К счастью, у нас давно внедрены механизмы автоматизации проверок безопасности. О них мы подробно рассказывали на конференции
YaC 2011. Всё, что нам потребовалось, — это сделать из публично доступного PoC соответствующий модуль для системы, сканирующей наши сервисы на уязвимости. В течение часа у нас уже была полная картина, а все ответственные системные администраторы были автоматически уведомлены и принялись за работу. Тестирование, которое обязательно должно проводиться, в данном случае было сделано за минимально возможный срок. Уже к обеду самые крупные сервисы Яндекса были обновлены. Наш механизм мониторинга также поможет исключить в будущем вероятность того, что какая-то система окажется с проблемной версией OpenSSL.
Обновление версии OpenSSL устранило самую серьезную проблему, эксплуатация которой возможна практически: кражу заголовков запросов и ответов к веб-серверу. Кража закрытого ключа веб-сервера теоретически возможна, но практически сопряжена с некоторыми техническими сложностями. Мы, как и обнаружившие уязвимость исследователи, считаем, что кража приватных SSL-ключей с помощью данной атаки маловероятна. Хоть в 64 кб данных из памяти веб-сервера можно вложить небольшое эссе про безопасность паролей, для появления в ней SSL-ключей требуется совпадение многих факторов. Тем не менее, мы решили постепенно заменить SSL-сертификаты на наших сервисах. Кстати, в критичных сервисах Яндекса (Почте, Паспорте, клиентском и партнерском интерфейсы Директа) мы используем HTTPS с поддержкой PFS. Поэтому даже если предположить, что в будущем по какой-то причине приватные ключи SSL-серверов окажутся скомпроментированы, трафик уже совершившихся сессий пользователей останется защищенным.
Самым сложным в этой неприятной истории было решить, что делать с потенциально пострадавшими пользователями. Проблема заключалась в том, что эксплуатация данной уязвимости не оставляет никаких следов в логах веб-сервера. Поэтому прямых доказательств того, что проблема эксплуатировалась в массовом порядке, у нас быть не могло. Мы решили отталкиваться от временного промежутка, который начинался со времени публикации об уязвимости и заканчивался моментом выкатки обновления на наши серверы. Потенциально могли быть затронуты аутентификационные данные миллионов пользователей. Массовый разлогин и тем более форсирование смены пароля в условиях отсутствия точной информации о факте компроментации пользователей могло принести гораздо больше вреда, чем пользы.
К счастью, мы имеем на руках список пользователей, которые теоретически могли пострадать. И с помощью механизмов автоматического определения зловредной активности в рамках пользовательской сессии будем направлять таких пользователей на разлогин и смену пароля.
Кроме того, как я уже упомянул, сегодня на главной странице Яндекса будут стоять ссылки на страницу
security.yandex.ru. Мы считаем, что пароли вообще надо менять регулярно и события последних дней — хороший повод вспомнить об этом.