Доброго времени суток, Хабр! На просторах Интернета мне попалась статья на английском «The inception bar: a new phishing method» автора Jim Fisher. В ней описывается занимательный способ фишинга, механизм которого заключён в использовании экранного пространства строки отображения URL-адреса мобильной версии Google Chrome. Оригинал статьи расположен на экспериментальной фишинговой странице: Вы можете самостоятельно зайти на неё и сделать свой вывод относительно опасности описанного метода. Всем, кто заинтересовался, welcome под cut!

Добро пожаловать в HSBC, седьмой банк в списке крупнейших в мире. Конечно, страница, которую вы сейчас читаете расположена не на hsbc.com, а на jameshfisher.com. В то же время, если Вы посетите эту страницу с Chrome для мобильных устройств и немного полистаете её вниз — на странице с большой вероятностью отобразится адресная строка с hsbc.com:
(ссылка на страницу оригинала)



При скроллинге вниз в мобильной версии Chrome браузер скрывает строку отображения URL-адреса и передаёт её экранное пространство непосредственно веб-странице. Так как пользователь отождествляет это пространство с UI, заслуживающим доверия, фишинговый сайт использует его для выдачи себя за другой сайт, отображая поддельный URL-адрес — Inception-строку.

Далее ещё хуже. Обычно, когда вы листаете вверх, Chrome заново отображает URL. Мы можем заставить его этого не делать! В тот момент, когда браузер скрывает URL-строку, мы перемещаем всё содержимое страницы в т.н «скролл-камеру» (англ. scroll jail) — новый элемент, в котором применяется свойство «overflow:scroll». Теперь пользователь думает, что он листает страницу вверх, хотя на самом деле он листает «скролл-камеру». Так же как и спящие герои фильма «Начало» (англ. Inception), пользователь считает, что он в работает из своего браузера, хотя на самом деле он находится в браузере внутри браузера.

Видео:


Является ли описанный механизм серьёзной проблемой в безопасности? По правде сказать, даже я — создатель Inception-строки — случайно попался на эту уловку (по всей видимости, при своих же экспериментах — прим. переводчика). В связи с этим, я могу представить, скольких пользователей можно обмануть таким образом, в особенности — менее технически грамотных и осведомлённых. Пользователь может проверить правильность URL только при загрузке страницы. После того, как он пролистнул её вниз — шансов на спасение не так уж и много.

При проработке представленной концепции, я сделал скриншот адресной строки на сайте HSBC из Google Chrome и поместил его на эту страницу. Страница может определить ваш браузер и создать для него Inception-строку. Приложив еще больше усилий, Inception-строку можно сделать интерактивной. Даже, если не удалось обмануть пользователя на настоящей странице, вы можете попробовать ещё раз, после того как он введёт что-то наподобие gmail.com в строке Inception.

Как защитить себя от обмана? Если у вас появились сомнения насчёт аутентичности веб-страницы, не просто проверьте URL-бар, а обновите (или даже закройте и откройте заново) страницу, в которой вы сомневаетесь.

Если у браузера Google Chrome и подобных ему существует проблема в безопасности, то как её решить? Существует компромисс между увеличением экранного пространства и сохранением доверенной области на экране, такой, как сохранение малой части экранного пространства выше "линии смерти" вместо передачи всего пространства веб-странице. Chrome может использовать эту малую часть пространства для отображения факта скрытия адресной строки.

Описание схожей атаки — атака на основе Fullscreen API (англ.). Также — атака custom-курсор (2016) (англ.), работающая благодаря тому, что Chrome позволяет веб-странице установить свой курсор, который может быть перемещён за пределы viewport-а браузера.

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


  1. acyp
    28.04.2019 13:01

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


  1. Alex_ME
    28.04.2019 13:38

    Протестировал в мобильной Опере (да, я знаю, что это очень редкий браузер).


    Помимо очевидного несоответствия строки браузеру, что можно решить, как написал автор, есть еще


    • видимо, scroll jail работает в опере как-то неправильно, и как бы ты не скроллил страницу, оригинальная адресная строка не думает скрываться
    • сразу бросилось в глаза неправильное количество вкладок


    1. Ilyasyakubov
      28.04.2019 13:46

      Схожая ситуация с мобильным Safari. Адресная строка не скрывается. Но даже когда скрывается на других сайтах, сверху все равно висит название сайта мелким шрифтом.


    1. BkmzSpb
      28.04.2019 15:36

      Аналогичное поведение в мобильном Firefox, показывает настоящий и фейковый бар. А вот открыв в Chrome — это могло бы меня обмануть, по крайней мере 1-2 раза кликнуть по фейковой строке предже чем понять, что что-то не так, я мог бы.


  1. Porohovnik
    28.04.2019 13:56

    image
    А вот и защита от данной атаки…


    1. lopatoid
      29.04.2019 03:32
      +1

      И какой в этом смысл? Ну тогда можно просто запретить скрывать адрес бар, и всё. Разработчики Хрома же хотели дать пользователю больше места для отображения контента.


      1. Porohovnik
        29.04.2019 08:40

        Я браузер может и вот так:
        image


    1. Cerberuser
      29.04.2019 05:18
      +2

      851 вкладка? Серьёзно?..


      1. Tufed
        29.04.2019 11:23

        А почему бы и нет? работает ведь.


  1. Revertis
    28.04.2019 15:05
    +1

    Всегда отключаю скрытие адресной строки в Firefox, ибо просто бесит постоянное выезжание-заезжание.


    1. AngReload
      28.04.2019 16:14

      В мобильном FF это как-то особенно ужасно сделано, да ещё и страница подёргивается.


  1. mamant
    28.04.2019 16:14
    -1

    iPhone 6s, последний хром
    image


    1. darthslider
      29.04.2019 11:25

      В IOS chrome это рескин сафари же.
      Эпл не пускает чужие движки к себе.


  1. tsukasa_mixer
    28.04.2019 20:00

    Ну, если подумать, то доделать соответствие с системой, и браузер ом я так думаю можно
    т.е. Различие может и пропасть.


  1. id_potassium_chloride
    29.04.2019 03:59

    На моём Google Chrome тоже появилось две строки состояния (хотя и не сразу). А ещё фейковая строка никак не может скопировать истинное количество открытых вкладок пользователя и поведение при нажатии на кнопку переключения между вкладками. Существенно (на мой взгляд) осложнено копирование шрифтов и стиля оформления в соответствии с версией браузера, ОС и конкретным устройством.

    Кстати, ранее читал о похожей атаке для Desktop: страница создаёт фейковый элемент, который копирует всплывающее окно браузера в Windows. Если не пытаться увести его за границы окна браузера, то визуально окно не отличается от настоящего.


  1. Kobalt_x
    29.04.2019 09:34

    Нормально воспоизводится только на split-скрине. В другом случае резским скроллом вверх можно увидеть истинную адресную строку.


  1. Tatikoma
    29.04.2019 11:56

    После блокировки/разблокировки телефона, а так же после сворачивания/разворачивания браузера — появилась оригинальная строка.

    Но в целом очень круто, не знал про такой хак со скроллом. Кмк, — баг в хроме в том, что пролистнув страницу наверх не появляется оригинальная строка. Думается мне, что условие возврата оригинальной строки должно быть несколько более сложным, нежели document.body.scrollTop == 0.
    Есть баг-репорт в хроме или нужно написать?


    1. cheebo
      29.04.2019 13:02

      Не надо ничего писать!)


    1. MadOokami
      30.04.2019 00:52

      А в чем баг, если

      Обычно, когда вы листаете вверх, Chrome заново отображает URL. Мы можем заставить его этого не делать! В тот момент, когда браузер скрывает URL-строку, мы перемещаем всё содержимое страницы в т.н «скролл-камеру» (англ. scroll jail) — новый элемент, в котором применяется свойство «overflow:scroll»

      Т.е. есть возможность показать элемент, перекрыв строку с URL.


  1. trolley813
    29.04.2019 14:02
    +1

    > автора Jim Fisher
    Jim Phisher :)


    1. NickTuchkov Автор
      30.04.2019 00:55

      не исключено)