Поскольку Интернет продолжает достигать каждого домохозяйства и бизнеса, его использование чрезвычайно выросло, и миллионы людей получают к нему доступ одновременно. Это расширение привело к созданию бесчисленного количества веб-сайтов и приложений, предлагающих различные услуги и контент. Люди предпочитают выполнять несколько задач одновременно, т.е. получают доступ к нескольким приложениям через браузер. Такой повсеместный рост в последнее время усилил важность веб-безопасности. Веб-приложения должны обеспечивать безопасность пользовательских данных и отсутствие уязвимостей. Одна из таких уязвимостей называется Tabnabbing.

Что такое табнаббинг?
Это компьютерный эксплойт и фишинговая атака, которая убеждает пользователей отправлять свои данные для входа и пароли на популярные веб-сайты, выдавая себя за эти сайты и убеждая пользователя в подлинности сайта. . Название атаки было придумано в начале 2010 года Азой Раскин, исследователем безопасности и экспертом по дизайну. Атака использует доверие пользователей и невнимание к деталям в отношении вкладок, а также способность современных веб-страниц перезаписывать вкладки и их содержимое через долгое время после загрузки страницы.

Рассмотрим следующий сценарий:
Сара занята завершением своей работы на неделе. Ее работа включает в себя перевод средств поставщикам своей компании. Она отстает от графика и очень торопится. Она собирается ввести свои банковские реквизиты и щелкает ссылку, по которой открывается вредоносный веб-сайт в новой вкладке. Ей звонят по телефону, и она отвлекается. Вредоносный веб-сайт содержит сценарий, незаметно меняющий содержимое родительской страницы на поддельную страницу входа. Сара, думая, что страница подлинная, вводит учетные данные, которые достигают сервера злоумышленника.

Как это происходит?
Ответ кроется в работе браузеров. Есть два типа браузеров: многопроцессорные и многопоточные браузеры.

Для многопроцессорных браузеров создаются процессы трех типов: браузер, средства визуализации и плагины. Каждое окно / вкладка имеет индивидуальный процесс рендеринга, который работает независимо.

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

В случае, если окно / вкладка создается из другого, один и тот же процесс рендеринга выделяется для обоих окон / вкладок. Окно - это объект, созданный браузером. Свойство window.opener создается всякий раз, когда открывается дополнительное окно с помощью метода window.open. Используя это свойство открывателя, мы можем получить доступ к главному окну из вновь открытого окна.

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

Рассмотрим следующий сценарий:
При доступе к своей учетной записи на веб-сайте вам необходимо ввести учетные данные. Страница входа открывается в новом окне. После успешной проверки введенных учетных данных новое окно может перенаправить родительское окно на сведения об учетной записи и автоматически закрываться.

Как это предотвратить?
Для всех тегов привязки, содержащих target = «_ blank», мы можем использовать rel = «noopener» и rel = «noreferrer» (для старых браузеров), чтобы установить window.opener как null. Другое решение - динамическое внедрение rel = «noopener noreferrer» для всех тегов привязки, имеющих target = «_ blank».

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