Если совсем коротко, то принцип действия механизма защиты от кражи паролей в Яндекс браузере сводится к проверки значения поля input type=«password» перед отправкой формы на сервер. В этот момент значения этого поля сравнивается со значением сохраненных в браузере паролей(по информации от Яндекс сравниваются хэши паролей). При обнаружении совпадений выводится предупреждение пользователю. Идея в общем понятная, однако эффективность данного метода вызывает сомнения.
Во-первых
Такой метод точно не остановит создателей фишинговых сайтов, а просто заставит немного модернизировать код на страничке. Вариантов может быть много. Например, использовать другой input type — проверяется только type=password, поставить обработчик событий на поле ввода, читать содержимое скриптом и отправлять значения на сервер в фоне и еще можно придумать не мало подобного. В качестве эксперимента, я модернизировал поле input type=«password» по известному мне алгоритму перед отправкой, а на сервере восстанавливал его.
Во-вторых
Реализованный в Яндекс браузере метод открывает еще одну «дверцу» для злоумышленников. В силу того, что для работы данного механизма защиты, браузер сравнивает набранный пароль с сохраненными в браузере у злоумышленников появляется возможность реализовать перебор паролей в фоновом режиме просто разместив на сайте специально подготовленный скрипт. Такой скрипт должен поочередно заполнять скрытое от пользователя поле input type=«password» паролями из словаря и эмулировать отправку формы на сервер в ожидании срабатывания защиты. Срабатывание защиты и будет являться индикатором того, что пароль верный. Способ имеет ряд недостатков — для перебора большого количества паролей пользователь должен долго находится на зловредном сайте; неизвестно от какого ресурса подобранный пароль; у пользователя внезапно выскакивает окно с предупреждением, которое может его насторожить. Однако, все равно неприятная особенность.
Ну и в-третьих
На мой взгляд самая неприятна часть. Подобная реклама прививает пользователям чувство ложной защищенности, что по сути снижает уровень безопасности этих самых пользователей Яндекс браузера.
Комментарии (31)
23d
24.12.2015 12:57+3Нельзя отрицать того, что хоть и слабая технология, но все же защищает от какой то части атак. А так, «театр безопасности» тема популярная.
EugeneSukhov
25.12.2015 10:12+1Мне приводили пример про бронежилет. Бронежилет не гарантирует безопасности, но это дополнительная защита. Но хочу отметить, когда бойцам дают бронежилет, им не говорят, что теперь они могут идти в атаку во весь рост и с ними «ничего такого не случится»» :)
ivanych
24.12.2015 13:46+2Поясните, пожалуйста, я не понял — от чего, собственно, эта защита? Типа, не дает какай-то неведомой силе заполнить поле пароля и отправить куда-то форму? А откуда эта сила знает пароль?
kukutz
24.12.2015 13:51+6Эта защита от фишинга. Браузер уточняет у пользователя, точно ли он хочет отдать свой пароль от хорошего сайта Х вот этому неизвестному сайту Y.
ivanych
24.12.2015 13:59В этот момент значения этого поля сравнивается со значением сохраненных в браузере паролей(по информации от Яндекс сравниваются хэши паролей). При обнаружении совпадений выводится предупреждение пользователю.
Тут написано, что если введенный пользователем пароль имеется в сохраненных, то будет предупреждение. А на самом деле проверятся не просто наличие сохранного пароля, а то, что он сохранен для какого-то конкретного сайта. И если сейчас делается попытка отправить этот пароль на другой сайт, то будет предупреждение. Правильно я понял?
EugeneSukhov
24.12.2015 14:01Сила знает пароль(скорее его хэш) если он сохранен в хранилище паролей браузера. И да, она сравнивает его перед отправкой формы и останавливает отправку формы.
ComodoHacker
24.12.2015 13:59+2Сделали бы POC страничку. Глядишь, Яндекс улучшит защиту. А так не обратят внимания.
EugeneSukhov
25.12.2015 10:23-1Живые примеры есть, были отправлены Яндексу, публиковать их в открытом доступе, считаю не совсем правильным решением. Хотя, полагаю, Яндекс не считает вышесказанное проблемой. Со мной они не связались, исправления которые они внесли не закрывают проблему. Вчера проверил, перебор пароля все равно возможен. По большому счету функцию защиты пароля надо убирать, так как она таковой не является, но на это они пойти не могут. Полагаю, причиной появления этой фичи явилась проблема с mail.ru и подсмотренный у Google Password Alert https://googleblog.blogspot.ru/2015/04/protect-your-google-account-with.html
kukutz
24.12.2015 14:03+9Здравствуйте.
Спасибо, что обратили внимание на Яндекс.Браузер. Хочу немного прокомментировать.
1. Конечно, этот метод имеет свои ограничения и поэтому не является единственным методом защиты от фишинга. У нас, конечно же, есть и база плохих, фишинговых сайтах, о которых мы предупредим пользователя ещё до захода на них. Но от части generic-атак, не рассчитанных прицельно на Яндекс.Браузер, этот метод может уберечь.
К тому же мы работаем над тем, чтобы расширить его, в частности, сделать некоторые из описанных вами подходов тоже неработающими.
Но от произвольно нарисованного контрола, не являющегося инпутом, это не убережет, конечно. От него вообще, кажется, может уберечь только если мы будем выводить input type=password в особом, уникальном для каждого отдельного пользователя, дизайне, а пользователь будет внимательно за этим следить и не вводить свой пароль никуда, кроме полей ввода такого особого дизайна.
Кроме того, само по себе использование одного и того же пароля на разных сайтах, часть из которых может даже не работать по https — очень небезопасная вещь. Предупреждая о таких случаях, мы заметно повышаем безопасность учетных записей пользователя.
2. Перебор паролей через эту функцию сделать не получится, т.к. браузер отличает пользовательские события от эмуляции. Нам уже сообщали о возможности такой атаки в первой версии Яндекс.Браузера с этой возможностью и мы закрыли эту уязвимость и все похожие способы использовать нашу защиту для перебора в версии 15.12.
Роман Иванов,
Яндекс.БраузерEugeneSukhov
24.12.2015 15:30+1Проверялось на версии 15.10.2454.3865 в конце октября, тогда же вам и сообщил.
Хотелось бы услышать Ваш комментарий на третий пункт.
tundrawolf_kiba
24.12.2015 15:43Есть предложение добавить генератор паролей, если пользователь захочет сменить пароль после такого вопроса.
ComodoHacker
24.12.2015 19:44+1может уберечь только если мы будем выводить input type=password в особом, уникальном для каждого отдельного пользователя, дизайне
А разве фишеры не могут обойтись вообще без input type=password и полностью его эмулировать? Например принимать ввод в незаметный контрол, а эхо выводить по событиям в другой, поверх него?kukutz
24.12.2015 20:41Если пользователь будет знать, что вводить пароль можно только в поле, фон у которого фиолетовый в оранжевую полоску, то он не станет вводить пароль в то, что выглядит иначе.
ComodoHacker
25.12.2015 01:37Наверное, но я-то не об этом.
kukutz
25.12.2015 14:07А о чём?
ComodoHacker
25.12.2015 19:53О том, смогут ли фишеры обойти вашу защиту, нарисовав ровно то, что ожидает пользователь, но без type=password.
Я просто во фронтенде не очень, поэтому интересуюсь.kukutz
25.12.2015 21:10Нет, потому что они не будут знать уникальный для этого пользователя вид. Ну, пока в HTML5 не появится API для скриншотов, конечно.
Serator
26.12.2015 04:14А разве такого API сейчас нет? К примеру, SVG foreignObject, переданный в canvas. Но, в теории, можно и просто поверх поля для ввода пароля наложить слой с прозрачным полем для ввода. Другое дело, если бы пароль можно было ввести только в недоступном для страницы месте, аля поле для ввода адреса сайта. Это уже, как мне кажется, просто так не поделаешь.
kukutz
28.12.2015 00:28> К примеру, SVG foreignObject, переданный в canvas.
С этим, мне кажется, браузер может побороться, впрочем, я недостаточно глубоко в теме, чтобы уверенно это утверждать.Serator
28.12.2015 00:52jsfiddle.net/Serator/dh86482v — вот пример того, что можно получить сейчас. Отработало с Fx'е, Chrome'е. EDGE выдал ошибку на запросе данных значения пикселя из изображения.
vaslobas
25.12.2015 06:05Будут фишинговые страницы смотреть на юзер-агент, если он принадлежит Яндекс-браузеру, то будут показывать «поле, фон у которого фиолетовый в оранжевую полоску». Гонка вооружений какая-то.
kukutz
25.12.2015 14:07Вы не поняли, что означает фраза «в уникальном для каждого отдельного пользователя дизайне».
EugeneSukhov
25.12.2015 10:07+1Иван, вы так и не ответили на третий пункт. И да, посмотрел вечером исправление в версии 15.12, оно не устранило возможность перебора паролей, более того позволяет увеличить скорость перебора на два порядка.
kukutz
25.12.2015 14:08Про третий пункт: нет, нам кажется, что привлекая внимание пользователя к тому, куда он вводит пароли, мы не делаем его более беззаботным, а наоборот, делаем его более внимательным.
По перебору пишу вам в личку.
gene4000
На сайте mail.ru это будет работать? Очень надеюсь, что именно в связи с этим неэтичным поведением майлрушного сайта Яндекс предложил решение.
EugeneSukhov
Полагаю, это была одна из причин появления данной фичи в Яндекс браузере.