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

Специалист по информационной безопасности Мануэль Кабальеро из Аргентины опубликовал результаты своего исследования уязвимости в браузере 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!");



Использовать такую уязвимость может широкий круг злоумышленников для самых разных целей. Например, это может быть обычная реклама. А может быть и попытка обмануть пользователя, с тем, чтобы он загрузил на свой компьютер зловредное программное обеспечение. Причем, если попапы будут появляться во время работы пользователя с авторитетными ресурсами вроде 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, получает сообщение о необходимости добавить плагин к браузеру, улучшающий работу поиска.



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



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

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


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



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

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

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



  1. rPman
    27.02.2017 20:00

    ааа! а доступ к текущему, новому, document и window этот скрипт случайно не имеет?

    p.s. из jsfiddle запуск не получился, пишет что нет прав — new ActiveXObject(«htmlFile»), это что для их получения что то нужно хитрое сделать? так как по ссылке все работает, так что сам тесты провести не смог, а так как ie меня интересует менее чем совсем не интересует, то ну их нафиг


  1. StjarnornasFred
    28.02.2017 02:20
    -3

    Internet Explorer… Я даже не удивлён, что в нём нашли очередную дыру. И даже не расстроен. С ним и так всё ясно. Если бы в нём долгое время не находили дыр — это было бы более удивительно. Так что ничего интересного.


    1. bigbrotherwatchingyou
      28.02.2017 06:18
      -3

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


    1. VEG
      28.02.2017 11:01
      +4

      Во всех браузерах регулярно находят уязвимости (Firefox, Chrome). Это касается любых сложных продуктов.