Дыра в IE11 позволяет выводить попапы даже после закрытия сайта

45c30b8d4e8e2ba3e4bd87493fad26d4.png
Уязвимость можно использовать для демонстрации «неубиваемых» попапов

Специалист по информационной безопасности Мануэль Кабальеро из Аргентины опубликовал результаты своего исследования уязвимости в браузере IE11. Эксплуатация этой уязвимости позволяет владельцу сайта с внедренным эксплоитом добиться того, что у посетителя сайта начнут появляться всплывающие уведомления. Их демонстрация будет продолжаться даже после закрытия ресурса. Кроме того, при желании владелец сайта сможет запускать свой JavaScript-код, когда посетитель зловредной страницы уже ушел с нее и посещает другие ресурсы.

Уязвимость, по словам специалиста, характерна только для Internet Explorer 11, браузер Edge лишен этой проблемы, равно, как и браузеры других разработчиков. Сейчас IE11 — второй по распространенности браузер, если верить статистике NetMarketShare. На первом месте сейчас находится Chrome 55 с рыночной долей в 37%, а на втором — IE11 с почти 11%. Таким образом, уязвимость может быть угрозой для большого числа пользователей.
На днях Кабальеро продемонстрировал, как разработчик может добиться появления попапов в браузере пользователя даже в том случае, когда он покинул сайт с добавленным разработчиком скриптом. Причем ограничения в количестве попапов нет. Вызвать их можно следующим образом.

for (var i = 0; i < 10; i++)
{
   doc = new ActiveXObject("htmlFile");
   win = doc.Script; // win is the window object of the ActiveXObject
   win.setTimeout("alert('Hello, world!')", i * 100);
}


Единственный способ избавления от этой напасти — закрытия вкладки, на которой прежде работал сайт с эксплоитом и открытие новой вкладки.

doc = new ActiveXObject("htmlFile");
win = doc.Script; // win is the window object of the ActiveXObject
win.alert("Hello");
win.alert("2nd alert, no option to block me.");
win.alert("3rd alert, and still no way out!");


aee85bc367655b17c2d9437f0f3dde9b.png

Использовать такую уязвимость может широкий круг злоумышленников для самых разных целей. Например, это может быть обычная реклама. А может быть и попытка обмануть пользователя, с тем, чтобы он загрузил на свой компьютер зловредное программное обеспечение. Причем, если попапы будут появляться во время работы пользователя с авторитетными ресурсами вроде Google, Wikipedia, Bing, то подозрения к появляющимся окошкам будет меньше, чем в любом другом случае. Здесь используется код с функцией window.open.

doc = new ActiveXObject("htmlFile");
 
// Alert every 5 seconds
doc.Script.setInterval("alert('Hello, world!')", 5000);
 
// Save a self-reference
doc.Script.doc = doc;
 
// Use the open method. Nothing changes here, but now IE will not
// destroy the previous reference and the script will continue running.
window.open("","_self"); // "Does nothing", but this line is crucial.


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

4dc4a2a03e3b659e764b4f1d8ff41da3.png

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

4a068cbde47dff7c9dc0b008e706f526.png

Сами попапы — относительно небольшая проблема. Дело в том, что вместо кода всплывающего уведомления можно добавить что угодно.

«Например, обнаружена новая уязвимость нулевого дня, и злоумышленнику требуется загрузить 5 МБ, используя браузер жертвы. Как он может быть уверенным в том, что времени на эту операцию хватит? А с использованием такого скрипта у атакующего будет время для чего угодно», — говорит аргентинец.


Можно показывать фальшивую рекламу, при клике на которую пользователь получит зловредное ПО. Можно загружать в браузер жертвы другие эксплоиты, работа которых при объединении их с обнаруженной Кабальеро уязвимостью будет еще более эффективной. Сама уязвимость основана на баге Universal Cross-Site Scripting (UXSS), позволяя злоумышленнику обходить Same Origin Policy (SOP) через компонент htmlFile/ActiveXObject.

eccd60a7184542e4b36508292cda4c31.png

К сожалению, исправить проблему пока не представляется возможным. Кабальеро с недавних пор прекратил отсылать в Microsoft сообщения об ошибках, поскольку компания несколько раз проигнорировала информацию, предоставленную экспертом. А вот увидеть проблему своими глазами можно, для этого достаточно зайти на тестовую страницу, созданную аргентинцем. Напомню, что уязвимости подвержен только браузер IE11, так что с другими браузерами оценить угрозу нельзя (в частности, в браузере Firefox работают лишь «regular alerts» со страницы автора).

Возможно, после огласки Microsoft все же обратит внимание на эту проблему и ликвидирует ее — уже слишком такая уязвимость опасна для пользователей IE11.

© Geektimes