Борьба с перехватом HTTPS-трафика. Опыт Яндекс.Браузера
Согласно исследованию сотрудников Mozilla, Google, Cloudflare и ряда университетов, от 4 до 11% защищенных соединений «прослушиваются» в результате установки сомнительных корневых сертификатов на компьютерах пользователей, которые даже и не догадываются о риске. Сегодня я расскажу о том, как наша команда привлекает внимание к этой проблеме с помощью Яндекс.Браузера.
Вряд ли на Хабре стоит подробно рассказывать об SSL-сертификатах и тех задачах, которые они решают, но на всякий случай коротко напомним о главном (вы можете просто пропустить пару абзацев, если хорошо представляете принципы работы). Получить закрытый замочек в адресной строке браузера сейчас легко и быстро может любой сайт, поэтому сертификат это ни в коей мере не признак «надежности» сайта, несмотря на соответствующую маркировку в Chromium. Тем не менее он выполняет важную функцию защиты наших с вами данных от перехвата. Администратору сети или злоумышленнику, получившему доступ к трафику, нужно еще придумать способ для расшифровки потока, что обычно сделать затруднительно при стойкой криптографии и отсутствии ключа.
Если нельзя расшифровать поток, то можно его перенаправить через себя, заставив браузер устанавливать соединение не с сайтом, а со своим сервером (атака типа man-in-the-middle). Например, можно взломать маршрутизатор пользователя и с помощью подмены DNS-ответов перенаправлять его на фишинг-сайт для воровства паролей. Опытный пользователь вряд ли с таким столкнется, а своим близким можно настроить альтернативный DNS-сервер с поддержкой DNSCrypt прямо в браузере. Но если злоумышленник захочет пойти дальше и начнет выступать посредником между пользователем и HTTPS-сайтом, то тут нас спасет другая задача сертификата – аутентификация.
Когда браузер получает сертификат от сайта, он должен убедиться, что его прислал именно сайт, а не «человек посередине». Подтвердить это можно с помощью корневых сертификатов, которые находятся в хранилище операционной системы. Если для сертификата, который якобы прислал сайт, не удается найти подтверждающий корневой, то любой современный браузер выдаст что-то такое:
Чтобы обойти такую защиту и скрыть от пользователя факт своего вмешательства в трафик, остается только одно – поместить в системное хранилище свой корневой сертификат, который легализует в глазах браузера подписанные им сертификаты злоумышленника. Причем сделать это может любое приложение. А с правами администратора еще и без предупреждений и вопросов пользователю. Человек устанавливает с сомнительного сайта программу, а в довесок получает прослушку трафика. И ни один современный браузер никак на это не отреагирует. Вы увидите все ту же надпись «Надежный» и зеленые замочки. Разве что в случае с Firefox злоумышленникам понадобится добавить свой корневой сертификат еще и в хранилище этого браузера, потому что системное он не использует (но сделать это ничуть не сложнее).
Если исключить случаи относительно легального использования этой возможности со стороны программ (антивирусы, блокировщики рекламы, Fiddler) и контроль сотрудников в организациях, то обычно подобная практика приводит к появлению шокирующей и опасной рекламы на посещаемых страницах. Пользователи в большинстве случаев не догадываются о причинах, винят владельцев сайтов или даже разработчиков Яндекс.Браузера. Можете себе представить, как порой сложно нашей службе поддержки добраться до причины и помочь человеку. Но так проблему хотя бы заметно. А ведь в некоторых случаях никаких внешних проявлений не происходит, а данные просто воруются.
Причем вред от злоумышленников не только прямой (в виде перехвата данных и рекламы), но и косвенный. В обычной ситуации мы можем кликнуть на замочек и узнать, какой именно удостоверяющий центр выдал сертификат, оценить его надежность (в Яндекс.Браузере; в других браузерах эту информацию уже часто скрывают). При подмене эти данные скрыты от нас. И не только эти, но и любые другие проблемы с соединением. Если на сайте используется некорректный сертификат, который неизбежно бы привел к полноценной предупреждающей заглушке в любом браузере, то подмена сертификата маскирует эту проблему от пользователя – в адресной строке отображается обычный закрытый замочек. Все это приводит к общему падению уровня безопасности.
По предварительным подсчетам, уже порядка 400 тыс. пользователей из недельной аудитории Яндекс.Браузера живут с перехватом трафика. И это за вычетом антивирусов! Именно поэтому мы всерьез взялись за проблему и начали экспериментировать с выявлением факта установки сомнительного корневого сертификата в систему. Работает это следующим образом. Теперь Яндекс.Браузер не слепо доверяет корневому сертификату из системного хранилища, а проверяет его по списку известных авторитетных центров сертификации. И если корневой сертификат браузеру не знаком, то мы размыкаем замочек и честно сообщаем о потенциальном риске.
Решение с открытым замочком относительно мягкое – наблюдали за реакцией пользователей. Но несколько дней назад мы перешли к следующему этапу. Теперь при загрузке важных сайтов, к которым относятся банки, платежные и поисковые системы, популярные социальные сети, появляется полноценное предупреждение, рассказывающее об угрозе.
Предупреждения в Яндекс.Браузере нельзя назвать панацеей, потому что они никак не влияют на основной источник проблемы – программу, устанавливающую свой корневой сертификат. Но мы надеемся, что информирование пользователей привлечет их внимание к риску потери данных или как минимум упростит диагностику. Ведь даже сам факт перехвата трафика до этого момента был скрыт от людей.
---
https://habrahabr.ru/company/yandex/blog/326796/
“Движок” у Яндекс-браузера такой же, как и у “Хрома”, да и по скорости загрузки страниц, вряд ли какой то другой браузер сможет сравниться с “Яндекс-ом”, равно как и с “Хромом”.