Незнаю, была эта тема или нет... лень искать.
По хорошему это надо в Bugzilla отправить, но я не силен в английском - буду благодарен если кто-то это сделает с пометкой - критическая уязвимость или переведет этот текст, а я отправлю сам.
Всё ниже описанное относится к текущему релизу 40.0.3, очень вероятно что это касается прошлых версий, и, возможно, Nightly
Теперь к делу:
Знакомый товарищ поймал adware-вирус.
Вирус был благополучно уничтожен после свежего обновления антивирусных баз, но Firefox стал странно себя вести: на каждой странице стало очень много рекламных баннеров
После детального изучения папки c:\Program Files (x86)\Mozilla Firefox\ был обнаружен файл cfg (без расширения):
c:\Program Files (x86)\Mozilla Firefox\cfg
Внутри файла код, который на каждую страницу внедрял подгружаемый javascript
Продолжив изучение, так же был обнаружен файл, который этот cfg запускает: c:\Program Files (x86)\Mozilla Firefox\defaults\pref\pref.js
Итак, моделируем ситуацию.
создаем файл pref.js в каталоге c:\Program Files (x86)\Mozilla Firefox\defaults\pref\
с таким содержимым:
создаем файл cfg в каталоге c:\Program Files (x86)\Mozilla Firefox\
с таким содержимым (первая строка пустая, вторая комментарий):
// First line is ommited try{ (function () { var _handleDocumentElementInsterted = function (a) { if (a && a instanceof Components.interfaces.nsIDOMHTMLDocument) { var b = a && a.defaultView ? a.defaultView : null; b.alert('injected!'); } }; var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.addObserver({ QueryInterface: function (a) { if (a.equals(Components.interfaces.nsIObserver) || a.equals(Components.interfaces.nsISupports) || a.equals(Components.interfaces.nsISupportsWeakReference)) return this; throw Components.results.NS_NOINTERFACE; }, observe: function (a, b, c) { try { "document-element-inserted" === b && _handleDocumentElementInsterted(a) } catch (d) {} } }, "document-element-inserted", !1); })(); } catch(e){ }
перезапускаем браузер и ву-а-ля!
после загрузки любой страницы будет алерт с сообщением 'injected!'
Итого:
В то время как космические корабли бороздят по просторам вселенной как Mozilla выдумывает электронные подписи для аддонов, у нее существует уязвимость, благодаря которой можно сделать всё что угодно, так как исполняемый скрипт действует с высокими правами.
Поясняю: любая программа (в том числе и вирусы) могут внедрить в браузер js-код, который наделен такими правами, что может делать всё что угодно, начиная от описанного выше способа вставки баннеров, до тихой закачки любого exe и его запуска.
PS:
в описываемом случае браузер был проинсталлирован в "c:\Program Files (x86)\Mozilla Firefox\", но это так же действительно и для "c:\Program Files\Mozilla Firefox\"
Отсутствует
при чем тут операционная система?
вирус не подменил какую-то dll и не прописался в каком-то файле.
он просто воспользовался штатными не документированными возможностями браузера!
это именно браузер предоставляет возможность написать и исполнить что угодно.
и мне кажется, что создав pref.js и cfg на макбуке или линуксе вы получите тот же эффект.
Отсутствует
при чем тут операционная система?
>>
венда с ее возможностью писать кому угодно, что угодно и куда угодно.
штатными не документированными возможностями браузера!
>> http://kb.mozillazine.org/Locking_preferences
Скушно с вами..
Отредактировано j15 (17-09-2015 20:39:14)
Хочешь мира — готовься к войне!
Отсутствует
>> http://kb.mozillazine.org/Locking_preferences
Скушно с вами..
я б может и не создал бы этот топик, если бы в этом году Мозилла не объявила и не внедрила электронные подписи аддонов, из-за того что:
1. злоумышленник может создать зловредный аддон и внедрить его в браузер
2. злоумышленник может внести изменения в уже установленные пользователем дополнения
поэтому мне показалось очень странным, что Мозилла прошла мимо именно этого случая, описанного выше.
не нужен ни аддон, ни подпись - прописал свой js-код и делай на компьютере пользователя что угодно, даже если сам зловредный exe фактически был удален из компьютера жертвы.
вот я и хочу донести до них мысль о том что они что-то забыли
Добавлено 17-09-2015 20:55:12
>> http://kb.mozillazine.org/Locking_preferences
PS:
в этой статье не написано , что кроме установки предпочтений можно написать любой исполняемый js-скрипт
значит это всё-таки уязвимость!
Отредактировано pag77 (17-09-2015 20:55:12)
Отсутствует
Да сам pref.js исполняется при запуске, можно прям туда записать что угодно))
в этой статье не написано , что кроме установки предпочтений можно написать любой исполняемый js-скрипт
Не написано, т. к. это вообще-то очевидно: prefs.js, а например не prefs.txt или prefs.ini.
Хочешь мира — готовься к войне!
Отсутствует
при чем тут операционная система?вирус не подменил какую-то dll и не прописался в каком-то файле.он просто воспользовался штатными не документированными возможностями браузера!это именно браузер предоставляет возможность написать и исполнить что угодно.и мне кажется, что создав pref.js и cfg на макбуке или линуксе вы получите тот же эффект.
Браузер уязвим, если вы нажимаете на ссылку и после этого ваш браузер уже завирусован. то что Firefox имеет незашитые настройки наоборот говорит о его пластичности и возможностях.
Добро пожаловать на форум mozilla-russia.org. Здесь вы можете посоветоваться или обратиться за помощью к фанатам и пользователям продуктов Мозиллы. Если не знаете как правильно оформить пост специально для вас расписан пункт 2.2 правил форума
Сброс на примере Firefox – лёгкое решение большинства проблем
Починка браузера. Перенос своих настроек на новый профиль.
Отсутствует
Уязвимости как таковой действительно нет. Для проведения таких махинаций нужны права администратора компьютера. Это значит, что компьютер уже и так полностью контролируется злоумышленниками - они могли бы даже заменить Firefox другой программой.
Другое дело, что обязательные подписи для расширений предназначены как раз для того, чтобы программам было сложнее "угнездиться" в браузере. Оставлять при этом другие простые возможности выполнять код в браузере нецелесообразно. Помимо того, мне не кажется, что здесь действительно было задумано позволять выполнение программного кода с правами пользователя. Так что я создал сообщение на Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1205779 (доступ пока что ограничен, но, возможно, в Mozilla решат, что это на самом деле не нужно).
Не написано, т. к. это вообще-то очевидно: prefs.js, а например не prefs.txt или prefs.ini.
Вы ошибаетесь. Изначально действительно использовался JavaScript, но выполнение кода в prefs.js уже давно невозможно. А вот в этом конфигурационном файле - вполне даже да.
Отредактировано Владимиp Палант (17-09-2015 21:22:07)
Отсутствует
Оставлять при этом другие простые возможности выполнять код в браузере нецелесообразно.
Точно, давайте вообще сделаем из него второй Хром, чтобы туповатому юзверью проще жилось!
Вы ошибаетесь.
Я делаю предположение! И только. Спасибо за пояснение.
Хочешь мира — готовься к войне!
Отсутствует
создаем файл cfg в каталоге c:\Program Files (x86)\Mozilla Firefox\
этого хватит. Если юзер может создать файл в этом каталоге , то причем тут "уязвимость" бравзера?! После установки в эту папку бравзеру нефиг туда писать, только читать. Писать - пусть пишет в профиль и темп.
1. злоумышленник может создать зловредный аддон и внедрить его в браузер
2. злоумышленник может внести изменения в уже установленные пользователем дополнения
Нетленка Хакер в столовой
Отсутствует
Помимо того, мне не кажется, что здесь действительно было задумано позволять выполнение программного кода с правами пользователя.
именно так и есть - если не сделать магические движения:
создаем файл cfg в каталоге c:\Program Files (x86)\Mozilla Firefox\
с таким содержимым (первая строка пустая, вторая комментарий):
то браузер просто не запустится.
и только при вставке этих двух строк можно исполнить любой js-код
Отсутствует
pag77
Ну, насчет первой строки как раз всё ясно - она игнорируется. Там предполагается ставить что-то, что интерпретатор JavaScript не примет, чтобы этот файл нельзя было загрузить в обычную страницу. Это такая своеобразная защита (с современными защитными механизмами браузера уже не нужная, насколько я понимаю). А вот почему у вас браузер без комментария не запускается - тут особых причин я не вижу, может просто ошибка синтаксиса?
Со стороны Mozilla подтвердили, что выполнение кода тут все-таки предусмотрено. В документации (https://developer.mozilla.org/en-US/Fir … figuration) это, правда, упомянуто только косвенно (см. последнюю строчку примера), но там ссылка на https://mike.kaply.com/2012/03/16/custo … fig-files/, где такая возможность описана весьма конкретно. Судя по всему, крупные фирмы с центральной администрацией этой возможностью действительно пользуются.
Отсутствует
Владимиp Палант
А какие "итого"?
Они закроют эту щель или нет?
Просто интересная ситуация получается: они ввели подписи к аддонам и, в то же время, оставили злоумышленникам такую дыру.
Кстати, просто переустановка браузера (поверх установленного или обычный деинсталл/инсталл) не поможет - инсталлятор заменит все файлы, кроме тех которые изначально созданы пользователем (pref.js, cfg) - в следствии чего зловред останется и дальше жить и выполнять свою работу.
Поможет только деинсталляция, потом руками удалить каталог с браузером и только потом инсталляция.
Отсутствует
Просто интересная ситуация получается: они ввели подписи к аддонам и, в то же время, оставили злоумышленникам такую дыру.
Это смешно, достаточно прав на запись в папку профиля: XBL в виде data URI отлично работает из userChrome.css.
И выполняет произвольный код с правами браузера, да.
В любом случае с правами на запись можно много чего наворотить.
А для подписания расширения, вроде бы, достаточно пройти автоматизированный тест. А уж простор для обфускации кода просто огромен.
Плюс еще расширения, позволяющие запускать произвольный код придется запретить. Stylish тоже запретить, потому как и он позволяет привязать XBL. И не стоит забывать про уязвимости в расширениях, которые можно специально встроить.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Подцепить вирус даже в Windows достаточно сложно, нужно скачать неизвестную программу и запустить её. На практике опасные уязвимости, которые не требуют действий пользователя срабатывают очень редко.
Речь о Win7 SP1 и выше.
Infocatcher
С тем же успехом пришлось бы запретить и uBlock Origin и AdBlock Plus - возможно подсовывание подписок для блокирования рекламы или сайтов конкурентов. Как и Custom Button, как и iMacros.
pag77
Вы погорячились. Обнаружили плохо документированную возможность. Вот это интересно! Получается для простых скриптов GreaseMonkey не нужен.
Надеюсь её не выпилят. Кто там баг создавал? Удалите быстрее!!!
Эта штука с Android сработает? А то для него до сих пор нету GreaseMonkey работающего.
Отредактировано lolipop (18-09-2015 21:16:38)
Отсутствует
достаточно прав на запись в папку профиля: XBL в виде data URI отлично работает из userChrome.css.
Да-да, и userContent.css тоже «уязвим».
Открыл какой-нибудь "about:config", и оказался во власти «злоумышленника»
with(Application.windows[0]._tabbrowser.ownerGlobal) {...
Отсутствует
А какие "итого"?
Решения пока нет, ждем.
Отсутствует
извините,не удержался.
вы логику включать хоть немножко пробовали?
если у программы есть права на запись\выполнение в какойто папке то она может делать там ВСЁ!
ещё раз повторю ВСЁ! зачем все эти извращения со скриптами и прочем когда можно "поправить" ЛЮБОЙ файл?
да можно хоть миллион раз сносить и переустанавливать ФФ и профиль,
только если по ярлыку запускается затрояненый лис в другой папке толку с этого ноль.
тоже самое можно сделать с любой другой программой.
какая тут нафиг уязвимость в ФФ? это стандартная возможность любой операционки(в т.ч. и линуксов).
если к посетителю в ресторане подошли и удалено в тарелку, то в том, что он потом наелся удалено вместо фуагры виноват повар чтоль?
мозг включите наконец!
Замечание п. 3.3
Sergeys
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
Да ну.. вендузятники готовы валить все свои проблемы на что угодно, кроме их настоящего источника - ОС Microsoft ™ Windows ®
Да, лана. В винде можно закрыться не хуже чем в линухе. Просто в линухе это принудительно, а в винде сознательно делают послабления в стандартной конфиг-ции. Отсюда все байки про "дырявую винду". Отсюда же её популярность. Все средства и способы в винде есть шобы жить без онтевирусов. Другое дело что юзеры M$ уже воспитаны так что бы не думать.
Отсутствует
Похоже что я погорячился и зря поднял панику - просто я не ожидал что браузером можно полноценно рулить через конфигурационный файл, без всяких аддонов.
Жаль только, что эти конфиг файлы похоже не отключаются и в безопасном режиме (когда у фф отрубаются все аддоны и т.д.)
Примите мои извинения
Отсутствует
jars
Хуже, намного. Если для корпораций сгодится, там MS сама ответит если уворует, то вот частому пользователю все эти закладки в том же встроенном шифровальщике, чтобы АНБ могла расшифровать - нет. В смысле эти же закладки могут найти и использовать хакеры, тогда как в linux стремятся к их полному отсутствию вообще, а не спрятать поглубже.
Я не говорю о преступлениях, то что разрешено в одной стране может быть запрещено в другой и посадить могут за банальное незнание при пересечении границы.
Отредактировано lolipop (19-09-2015 12:06:22)
Отсутствует