image

На этой неделе Google с гордостью представила новое расширение для браузера Chrome под названием Password Alert. Оно было призвано обезопасить пользователей от кражи их паролей фишинговыми сайтами.

Фишинг – одна из самых популярных и успешных систем кражи паролей. Жертва получает электронное письмо, которое выглядит, как настоящее письмо от его любимого сервиса (например, Gmail). В письме каким-либо образом обосновывается необходимость срочно зайти на сайт системы, и даётся ссылка на сайт. Пользователь проходит по ссылке и на сайте системы вводит свои логин и пароль.

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

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

На следующий же после публикации блогозаписи день Пол Мур, специалист по безопасности из Великобритании, обнаружил до смешного простой способ для злоумышленника отключить предупреждение. Дело в том, что Password Alert встраивало код для показа окна в обычный DOM. Нижеследующий код удаляет оттуда окно с предупреждением:

<script type="text/javascript">
  setInterval(function() {
    if(document.getElementById("warning_banner")) {
      document.getElementById("warning_banner").remove();
    }
  }, 5);
</script>


Оперативно среагировав на заявление Мура, разработчики обновили расширение. Теперь оно показывало баннер, пользуясь интерфейсом браузера, а не DOM. Но на них нашлась проруха и на этот раз.

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

Ввиду этого, Password Alert, хотя и будет полезным, но ни в коем случае не станет панацеей. По мнению хитрого исследователя, такого плана защиту невозможно сделать без серьёзной переработки схемы работы браузера или системы ввода паролей.

Комментарии (25)


  1. VDG
    03.05.2015 22:04
    +5

    Любой LastPass защитит от фишинга — если домен неправильный, то поля просто не заполнятся.


    1. bondbig
      04.05.2015 09:53
      +4

      А если DNS подменён? Например в общественном месте или уязвимый роутер.
      Это я к тому, что просто «домен неправильный» вовсе не достаточно.


      1. KivApple
        04.05.2015 20:52
        +1

        А от этого спасёт SSL, который используют хотя бы на странице авторизации все более-менее серьёзные сайты.


        1. bondbig
          04.05.2015 20:53

          Вот только если пользователь обратит внимание, что https отсутствует, а вместо него простой http. Чего 96% простых людей не заметит.


          1. KivApple
            04.05.2015 21:04

            А тут уже нужна разъяснительная работа с пользователями. К счастью, большинство браузеров наличие HTTPS стараются показать очень заметно. Соответственно, стоит на форме авторизации добавить большую картинку-скриншот и красную надпись «Проверьте, что зелёный замочек на месте прежде, чем вводить пароль». Многие пользователи не помнят адрес сайта (и каждый раз заходят, как в анекдотах, вбивая поисковый запрос в поисковик), поэтому не станут проверять правильность адреса, а вот наличие пиктограммы проверить легко. К тому же злоумышленнику будет труднее получить сертификат на домен слишком похожий на популярный сайт, так что наличие индикатора HTTPS отсеет множество атак.


            1. bondbig
              04.05.2015 21:06

              Вот мы и вернулись к тому, что слабое звено — всегда человек. Технические средства — лишь вспомогательные инструменты.


            1. Sadler
              04.05.2015 23:21

              Или перевести всё на HTTPS и отказаться от HTTP, тогда никаких индикаторов не понадобится. Mozilla недавно что-то такое заявляли.


              1. bondbig
                05.05.2015 06:14

                Старый-добрый фишинг никуда от этого не денется.


                1. Sadler
                  05.05.2015 16:02

                  Лично мне фишинг никак не мешает, я отвечал только насчёт индикатора HTTPS.


          1. GamePad64
            05.05.2015 02:32

            Тогда с помощью HSTS можно сделать сайт https-only, а доменное имя подписать через DNSSEC.


            1. bondbig
              05.05.2015 06:13

              Это-то что поменяет? Если условный Василий Петрович наберет в браузере www.mysecretsite.ru, а ему придет подменённый ответ от DNS-сервера, что сайт имеет ip 2.2.2.2 (вместо положенных 1.1.1.1)? Кто выполнит HSTS? Правильно, никто.


              1. GamePad64
                05.05.2015 06:32

                Я же специально ссылку на DNSSEC привёл. Если ему придёт подменённый ответ, то после браузер сообщит об ошибке после того, как не сможет проверить подпись.


                1. mayorovp
                  05.05.2015 09:26

                  Это если DNSSEC вообще проверяется. Когда я пытался играться с BIND, я обнаружил, что не могу попасть на очень многие сайты в инете — попросту из-за неверных подписей.

                  Но ведь при дефолтной настройке все эти сайты браузером открывались!


              1. a553
                05.05.2015 06:48

                HSTS Preload немного поможет.


              1. Gendalph
                08.05.2015 22:32

                certificate pinning +HSTS +HSTS preload и/или https everywhere +password manager = нужно не только подделать DNS но и сертификат, иначе менеджер паролей (напр. KeePass) не отдаст пароль.
                Да, много технологий и всевозможных «но», и тем не менее я считаю этот сетап достаточно безопасным.


          1. lexore
            05.05.2015 15:40

            В LastPass адрес сайта сохраняется вместе с http://, https://


  1. mwizard
    04.05.2015 05:57
    +3

    Зачем так сложно? Расширение настолько глупое, что банального iframe достаточно: jsfiddle.

    Первый блок — максимально наивный фишинг, обычное поле для ввода пароля, расширение его ловит.

    Если то же самое засунуть в iframe — второй блок, то уже не ловит.

    Я не предполагал, что оно настолько просто сдастся, поэтому сначала я сделал несколько iframe, которые подменяют друг друга на ходу, таким образом весь пароль на каком-то из них не вводится — третий блок, но, как оказалось, это был даже перебор.


  1. maaGames
    04.05.2015 07:39

    Не пользуюсь хромом, поэтому не знаю визуальных особенностей его работы, но, разве, если перезагружать страницу после каждого символа, то она не будет мерцать и выглядеть подозрительно?


    1. mwizard
      04.05.2015 08:06

      Я выше привел пример, как можно спокойно заниматься фишингом без мерцания.


  1. Myshov
    04.05.2015 13:00

    Вот еще одна веская причина для глобального перехода на https


    1. SlavikF
      04.05.2015 20:11

      Ну сделать фишинговую страницу на supersecure.gymail.com не сильно сложней, чем на http.
      А сертификаты нынче раздают бесплатно…


      1. Gendalph
        04.05.2015 20:41

        certificate pinning for the win!


        1. KivApple
          04.05.2015 20:55

          Pinning спасёт, если подменить accounts.google.com. Более того, поддельный сертификат просто не дадут, потому что злоумышленник не сможет подтвердить владение доменом. Но ведь можно создать accounts.google123.com (или какой домен будет свободен) — невнимательный пользователь не заметит разницы.


          1. Gendalph
            04.05.2015 20:57

            как уже выше сказали: password manager + certificate pinning for the win!


      1. KivApple
        04.05.2015 20:58

        Фишингом занимаются не для развлечения, а ради заработка. А раз так, то вполне нормальны начальные вложения (всё равно придётся покупать домен и оплачивать хостинг). А раз так, то сертификат можно и купить — бесплатность не особо то спасёт от профессионалов. Вопрос в том, будут ли давать сертификаты на домены, похожие сайты на популярные сервисов.