Написать пост

Target=”_blank”  — наиболее недооцененная уязвимость современности

Аватар Тарас Сереванн

Обложка поста Target=”_blank”  — наиболее недооцененная уязвимость современности

Большинство веб-разработчиков даже не догадываются:

Страница, на которую мы ссылаемся с использованием target="_blank", получает доступ к странице-источнику через объект window.opener.

Например, таким образом только что открытая вкладка может изменить window.opener.location, т.е. вместо предыдущей вкладки незаметно подгрузить совсем другую страницу.

Живой пример: ссылка на котейку с target=”_blank”.

Самое ужасное — то, что эта уязвимость присутствует на многих популярных отечественных и зарубежных сайтах: тогда как в Facebook её исправили несколько дней назад, она всё ещё работает, например, в Яндекс.Почте.

Пример атаки

Target=”_blank”  — наиболее недооцененная уязвимость современности 1

Опираясь на такое поведение браузеров, можно придумать множество сценариев, вот самый простой:

1. Жертве отправляется письмо, возможно, с поддельного адреса. Содержание письма совершенно неважно: главное — это вынудить жертву перейти по ссылке с вредоносным кодом. Например, это может быть просьба заценить ми-ми-мишных котиков вроде того, что ниже. Target="_blank" Яндекс добавляет во все письма автоматически.

Target=”_blank”  — наиболее недооцененная уязвимость современности 2

2. Жертва открывает письмо в Яндекс.Почте, кликает на ссылку, по которой в новой вкладке открывается сайт-прокладка, выполняющая вредоносный код, который вместо Яндекс.Почты загружает фишинговый сайт, очень похожий на оригинальный, но, например, просящий повторно ввести логин и пароль, а также, чтобы снять подозрения, действительно делает переадресацию на котиков.

Пример такого кода:

			// Подмена оригинальной Яндекс.Почты на фейк
window.opener.location = 'http://e-m-a.il/yandex.ru';
// Переадресация на котиков, чтобы снять подозрения
window.location = 'https://imgur.com/0A5ZGBN';
		

3. Жертва, доверяющая Яндексу и посмотревшая на котиков, возвращается на предыдущую вкладку с почтой. Так как в ней она ничего не открывала, а также адрес не меняла, то, скорее всего, она поведется на фейк и введет свои логин и пароль, которые на самом деле отправятся злоумышленнику.

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

Лечение

К счастью, исправить всё можно довольно легко: ко всем ссылкам с target="_blank" нужно дополнительно добавлять атрибут rel="noopener noreferrer".

Target=”_blank”  — наиболее недооцененная уязвимость современности 3

Если вы не собираетесь ждать, пока это исправят на сайтах и в браузерах, рекомендуем добавить себе в TamperMonkey/GreaseMonkey следующий User Script:

			// ==UserScript==
// @name        NULL Opener object
// @namespace   nullopenerobjectns
// @description Clears the window.openeer object.
// @version     1
// @grant       none
// @run-at      document-start
// ==/UserScript==

(function() {
    "use strict";

    window.opener = null;
})();
		

//

Следите за новыми постами
Следите за новыми постами по любимым темам
33К открытий33К показов