Уязвимость можно использовать для демонстрации «неубиваемых» попапов
Специалист по информационной безопасности Мануэль Кабальеро из Аргентины опубликовал результаты своего исследования уязвимости в браузере 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.
Автор: marks