The-OP / Fox

The Unlicense
161 stars 24 forks source link

[Дискасс] Эпический фейл крэш-репортера и будущее проекта Fox #147

Open The-OP opened 6 years ago

The-OP commented 6 years ago

На днях я изучил баг 1424373 (и связанный с ним баг 1427111), исправленный в Firefox 57.0.3 и 52.5.3, и увидел, что все намного серьезнее чем казалось.

Шаги для проявления этого самого бага:

  1. Скачать Firefox 57.0.0. Либо 52 ESR, версию до 52.5.3.
  2. Создать новый профиль через менеджер профилей (firefox -p), но пока не запускать браузер с ним.
  3. Создать в новом профиле user.js с настройками, отключающими автообновление браузера и аддонов. Это нужно, чтобы Firefox не обновился до 57.0.3 или не скачал системный аддон-хотфикс, который воркэраундит баг для пользователей не обновляющихся до 57.0.3.
  4. Запустить новый профиль, зайти в Preferences и убедиться что автоотправка крэш-репортов отключена (Allow Firefox to send crash reports to Mozilla - она же browser.crashReports.unsubmittedCheck.autoSubmit в about:config). Она отключена по умолчанию, ибо якобы подразумевалась opt-in, как пишут разработчики в Багзилле.
  5. Открыть какой-нибудь таб и убить его процесс с SIGTERM или SIGKILL. При такой участи крэш-репорт не сгенерируется. Зато проявится тот самый баг.
  6. Нажать Restore tab на убитом табе, снова зайти в настройки и убедиться что автоотправка крэш-репортов сама включилась.
  7. Открыть еще какой-нибудь таб и переключиться с него на любой другой. Ронять будем тот, с которого переключились.
  8. Запустить Browser Toolbox, вкладку Network Monitor. Она показывает сетевые запросы всего браузера, а не только вкладки.
  9. Уронить контент-процесс таба из п.7 таким образом, чтобы крэш-репорт сгенерировался. Для этого можно убить его с SIGSEGV или SIGILL (Illegal Instruction).
  10. Переключиться обратно на уроненную вкладку. Из-за включенной автоотправки крэш-репортов вкладка восстановится автоматически, без показа about:tabcrashed.
  11. Увидеть в Browser Toolbox, что крэш-дамп автоматически улетел на crash-reports.mozilla.com. И он содержит в себе URL упавшей вкладки (даже (!) если browser.tabs.crashReporting.includeURL = false) и еще кучу веселой информации, которую видно на вкладке Params в Network Monitor. (Также старые крэш-репорты можно посмотреть в ~/.mozilla/Firefox/Crash Reports.)

Я считаю этот баг критическим как для этого проекта, так и для самой идеи использования Firefox в качестве прайваси-ориентированного браузера. Ибо от такого бага вас никак не спасут содержащиеся в этом репозитории настройки (можете проверить, подставив prefs_1 - не поможет) - там отключено все что можно было, однако, как видим, оно включается само. А URL, по которому крэш-репортер отправляет репорты, зашит в исходники, и префами с ним ничего не сделаешь.

Этот баг - далеко не первый звоночек (а скорее последняя соломинка) - в течение всего 2017 года Мозилла как будто нарочно пыталась дискредитировать себя - то обещания собирать адреса посещаемых сайтов, то подсовывание немецким пользователям adware от Cliqz прямо вместе с установщиком браузера, а также рассуждениями разработчиков о том, как бы это сделать тайком, иначе ведь юзеры увидят надпись "Cliqz" и не будут качать эту широко известную в Германии адварь. И наконец предпоследний инцидент с аддоном Looking Glass - в котором тоже, кстати, по сообщениям некоторых людей были замешаны "случайно" включающиеся сами собой настройки.

Итак, раньше основной идеей, которой мы руководствовались, было то, что все мол можно отключить. Теперь это не так. Теперь мало того что Мозилла пихает все больше и больше дряни в Firefox, так эта дрянь еще и "случайным" образом включается сама и для какой-либо уверенности конфигов уже не хватает - нужно компилировать Firefox, вырезая все из исходников. То есть, как бы ни печально было это признавать, Мозилла таки сумела превратить Лису в Хром, переняв его самые худшие черты.

Принимая во внимание все это, я не вижу, как можно продолжать доверять Мозилле и с чистой совестью рекомендовать другим людям использовать Firefox. А также не вижу смысла в рекомендациях из нашего репозитория - со своей задачей они больше не справляются.

Что делать дальше - неясно. Думаю, нужно рассматривать какие-то альтернативные варианты. Хотелось бы услышать и ваши мысли. Мне на ум приходит только Tor Browser. (Ибо все остальные форки Firefox не являются серьезными проектами и не имеют перспектив по очевидным причинам.)

К дискуссии приглашаются все контрибуторы и прочие заинтересованные люди. Особенно: @dartraiden @KOLANICH @leedoyle @soredake

KOLANICH commented 6 years ago

TP cannot be trusted too. The last time (beginning of 2017, someone's else comp, so no fingerprint in the repo), i tested if they had fixed font rendering fingerprinting, it turned out that they hadn't. Also I have noticed that the pgp certificate used to sign releases have changed and there were no signuture made with the old one on it. It might be a canary evidence that TP was seized.

What to do? I don't know. The problem is economical, not technical. It's profitable to be an asshole. And it's unprofitable to do something for free. Mozilla needs money to develop their browser. No money - no browser, and we'll have to use Chrome if that happened. We can use customized builds for some time, but it's way to nowhere, Mozilla IMHO is on the way to bankruptcy. Don't say "use qupzilla", "use otter", "use konquerror". Saying this is nearly like "use dillo" or "use linx" nowdays. So the problem is how to make Mozilla work for money they deserve and how to get that money. And I don't know where to get that money, I'm not business genius.

Crowdfunding? It depends on how much money does Mozilla need and how many people are ready to pay them for working for them, not big brother. Of course it also implies implementing all the needed webext APIs and stopping throwing money into projects not deserving them.

Let's calculate. In 2016 they had reported the revenue of $520373000. According to wikipedia Firefox had 5.72% of the market. According to http://www.pewinternet.org/2016/05/19/collaborative-crowdfunding-platforms/

22% of American adults have contributed to a crowdsourced online fundraising project.

According to https://www.indexmundi.com/united_states/demographics_profile.html

15-24 years: 13.46% (male 22,360,342/female 21,252,215) 25-54 years: 39.6% (male 64,170,791/female 64,135,619)

The most of IT geeks are males.

So approximately (64,170,791 + 22,360,342) 0.0572 0.22 ≈ 1 088 907 potential crowdfounders in the US.

So $500 per man. So crowdfunding is inviable. :(

soredake commented 6 years ago

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

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

dartraiden commented 6 years ago

Я вижу два пути:

Тех, кого эти перспективы не устраивают, предлагаю направлять в родственный проект, им с нами не по пути.

soredake commented 6 years ago

@dartraiden

как-то надо выпилить сам Tor, чтобы повседневно пользоваться

browser.privatebrowsing.autostart -> false extensions.torbutton.security_slider -> 1 extensions.torlauncher.start_tor -> false network.proxy.type -> 0

The-OP commented 6 years ago

@KOLANICH

i tested if they had fixed font rendering fingerprinting, it turned out that they hadn't

У TB есть свои нерешенные проблемы, но я бы все же отличал такие вещи как еще незаткнутый какой-либо из видов фингерпринтинга (еще есть вон по частоте нажатий клавиш при печати, например) и совершенно явный слив пользовательских URL.

I have noticed that the pgp certificate used to sign releases have changed and there were no signuture made with the old one on it

Какой их них старый, а какой новый? Фингерпринты можешь запостить?

Mozilla IMHO is on the way to bankruptcy

Не то что бы это было релевантно, но: https://www.ghacks.net/2017/12/02/mozillas-revenue-increased-significantly-in-2016/

The-OP commented 6 years ago

@soredake

Я уже давно перешёл на тор браузер,

И как ощущения?

не знаю, слало ли оно что-то

Нет, не слало - я проверил на TB, основанном на 52.5.2. Крэш-репортер там действительно выключен флагом при компиляции и даже соответствующего JSM нет.

The-OP commented 6 years ago

@dartraiden

Т.е. с основным тезисом ты согласен?

публиковать ещё и патчи, чтобы собирать браузер самостоятельно

Это уже куда сложнее и времязатратнее. Сомневаюсь, что осуществимо нашими силами, особенно если целиться на релизы, а не ESR. Да и Ungoogled Chromium уже есть.

взять за основу TB и доводить его до состояния "браузер для повседневного сёрфинга"

Да, что-то типа этого. Там всего несколько префов надо переключить - во @soredake подсказывает ниже.

dartraiden commented 6 years ago

Да, я согласен, что Firefox ведёт "не туда". Вариант с допиливанием TB (включая затыкание недозаткнутого фингерпринтинга своими силами) проще, да.

У меня самого уже некоторое время зрела мысль взять за основу для повседневного сёрфинга именно TB.

KOLANICH commented 6 years ago

У TB есть свои нерешенные проблемы, но я бы все же отличал такие вещи как еще незаткнутый какой-либо из видов фингерпринтинга (еще есть вон по частоте нажатий клавиш при печати, например) и совершенно явный слив пользовательских URL.

It's one of the essential subgoals for torproject - to fix fingerprinting.

Какой их них старый, а какой новый? Фингерпринты можешь запостить?

старый ef6e286dda85ea2a4ba7de684e2c6e8793298290, но это неточно. "Новый" (того времени) не знаю.

Не то что бы это было релевантно, но: https://www.ghacks.net/2017/12/02/mozillas-revenue-increased-significantly-in-2016/

XUL have not been completely dropped then. After these measures ff will continue loosing user base and therefore revenue. So more measures, more drop of user base. If they didn't find another ways to earn money they would be bankrupt.

But that's strange.

soredake commented 6 years ago

@The-OP

И как ощущения?

Отлично, правда напрягает отсутствие новы api вебэкстеншнов которые появятся только после переходна на 60esr который выйдет летом, тор включён для всех сайтов кроме исключений, но для того чтобы работала настройка network.proxy.no_proxies_on вместе с включённой network.proxy.socks_remote_dns нужен патч, иначе не будет их резолвить.

The-OP commented 6 years ago

@KOLANICH

It's one of the essential subgoals for torproject - to fix fingerprinting.

Как говорится, в теории теория и практика не отличаются, а на практике все наоборот. Давай все же сконцентрируемся на насущном. Фейлы подобные вышеописанному у TB были? Если нет, значит TB однозначно лучше простого Firefox.

старый ef6e286dda85ea2a4ba7de684e2c6e8793298290

Ну да, он и у меня записан. Всегда им проверял вроде.

XUL have not been completely dropped then.

(Да он и сейчас не дропнут, просто доступ снаружи закрыт.) Из-за исхода пользователей непортируемых на WE аддонов Мозилла точно не скопытится, если ты это имеешь в виду. Учитывая, что 40% вообще аддонами не пользуются, а из оставшихся большая часть - какой-нибудь баннерорезкой и все.

The-OP commented 6 years ago

@soredake

А настройки какие-нибудь докручиваешь ему или стандартные? И аддоны используешь?

soredake commented 6 years ago

@The-OP связанные с приватностью безопаснастью никакие, разве что оставляю второй уровень в торкнопке но включаю все оптимизации и ускорители.

user_pref("javascript.options.asmjs", true);
user_pref("javascript.options.baselinejit", true);
user_pref("javascript.options.ion", true);
user_pref("javascript.options.native_regexp", true);
user_pref("javascript.options.wasm", true);
user_pref("javascript.options.wasm_baselinejit", true);
user_pref("javascript.options.wasm_ionjit", true);
user_pref("layers.acceleration.disabled", false);
user_pref("layers.acceleration.force-enabled", true);
user_pref("noscript.forbidWebGL", false);
user_pref("webgl.disable-extensions", false);
user_pref("webgl.disable-fail-if-major-performance-caveat", false);
user_pref("webgl.enable-privileged-extensions", true);
user_pref("webgl.enable-webgl2", true);
user_pref("webgl.force-enabled", true);
user_pref("webgl.min_capability_mode", false);
// firefox >=59
// https://www.phoronix.com/scan.php?page=news_item&px=WebRender-On-Firefox-Nightly
user_pref("gfx.webrender.blob-images", true);
user_pref("gfx.webrender.enabled", true);
user_pref("image.mem.shared", true);
user_pref("layers.omtp.enabled", true);
user_pref("layout.css.servo.chrome.enabled", true);
KOLANICH commented 6 years ago

Давай все же сконцентрируемся на насущном. Фейлы подобные вышеописанному у TB были? Если нет, значит TB однозначно лучше простого Firefox.

Не было. И он однозначно лучше. Но у них были свои фейлы, а за такое количество времени не пофиксить этот вектор фингерпринтинга - это фейл.

А по делу предложить особо нечего - либо пользоваться тем, что есть в репах, либо накладывать патчи и собирать самим. На ESR сидеть, как и на всякой фигне вроде водолиса, ИМХО не вариант. В идеале всё это должно делаться не на моём компьютере. Но всё это проще сказать, чем сделать. Лично я заниматься разработкой всех этих патчей и мейнтейнером быть не готов. Нужны ещё патчи/xul-расширения для поддержки недостающих API webextension, независимо от мнения Мозиллы.

DeadNumbers commented 6 years ago

@KOLANICH

В идеале всё это должно делаться не на моём компьютере.

Собирать можно на https://build.opensuse.org

userneu commented 6 years ago

Поднять бучу в сми, с кричащими заголовки МАЗИЛЛА БЕТРАЙД ЮЗЕР ПРИВАСИ. АГАЙН. Сразу зачешуться с фиксом бага.

Remu-rin commented 6 years ago

К дискуссии приглашаются все контрибуторы и прочие заинтересованные люди.

Частично релевантное мнение: https://github.com/gorhill/uBlock/issues/3363#issuecomment-354654590

The-OP commented 6 years ago

@userneu

Баг уже пофиксили вообще-то. Хотя "уже" тут не к месту, ибо присутствовал он почти год. И проблема не только в этом баге, проблема в самом подходе к разработке (со впихиванием все новых вариантов сбора различных данных с пользователей) при котором повторение такого - всего лишь вопрос времени. А подход Мозилла менять не собирается, судя по ее действиям - даже наоборот все ускоряет свое скатывание известно куда.

Касательно СМИ - на Ghacks уже писали, только комментов там даже меньше чем здесь. Алсо, люди там недооценивают проблему и ошибочно считают, что конфиг breakpad.reportURL им поможет, что не соответствует истине. Других, скажем так, дружественных вопросам приватности СМИ я не знаю. /r/firefox вообще управляется либо напрямую Мозиллой, либо ее невменяемым фанбоем, судя по тому как там терли комменты во время инцидента с Cliqz.

The-OP commented 6 years ago

@Remu-rin

Да, я раньше сам примерно такие мнения писал. Ну и:

If people are not using Firefox and instead pick Chrome because of that one event, this just makes no sense

Во-первых, речь далеко не об одном событии, а во-вторых я не советую Хром. (Хотя может и стоит на фоне Spectre, но это уже другой вопрос.)

Remu-rin commented 6 years ago

(Хотя может и стоит на фоне Spectre, но это уже другой вопрос.)

Все браузеры зашевелились. Уже летом-осенью, похоже. https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/ https://blogs.windows.com/msedgedev/2018/01/03/speculative-execution-mitigations-microsoft-edge-internet-explorer/ https://www.chromium.org/Home/chromium-security/ssca

The-OP commented 6 years ago

Зашевелились все, но не одинаково. У Мозиллы по процессу на таб, к сожалению, не планируется.

Remu-rin commented 6 years ago

С другой стороны, этот подход раньше считался плюсом. В плане памяти. Судя по описанию, включаемый скоро Site Isolation хрома ещё больше увеличивает потребление.

The-OP commented 6 years ago

С третьей стороны, памяти можно добавить, а вот безопасности так просто не накинешь.

leedoyle commented 6 years ago

@KOLANICH ну из фейлов пожалуй то, что там ничего не делали с реферрерами долгое время. Ну и выбор НоСкрипт в качестве единственного аддона несколько сомнительный, причем насколько я понимаю в НоСкрипте для ТББ есть только возможность "разрешить временно на странице", причем тогда разрешается и гугл аналитика, и всё-всё-всё. Защитники этой меры говорят, что разрешение скриптов но блокирование гуглоаналитики и прочих увеличит уникальность фингерпринта, и пожалуй они даже в чем-то правы, что не меняет того, что решение неоднозначное. Другое дело, что этот недочет не относится к браузерной части TBB.

@The-OP /r/firefox не настолько подконтролен, чтобы там нельзя было ничего неприятного озвучить. Недавно там было чуть ли не 3-4 треда подряд про заваленность AMO спамом, и их никто не потер, были в топе. По поводу Looking Glass там вообще вакханалия творилась.

У Мозиллы по процессу на таб, к сожалению, не планируется.

А я тестировал с processCount=999. Память жрала раза в полтора больше Хрома на том же числе вкладок (кажется, я тогда штук 20 тестировал). Но вполне работала, надо сказать. Хороший повод передать привет фанатам Pale Moon и ненужности >4 контент-процессов в лисе.

leedoyle commented 6 years ago

@The-OP ну что можно по поводу Хрома сказать, там есть паллиативные патчи от inox. 100% безопасность это не даёт, во-первых потому, что они могут не всегда беспроблемно наложиться на свежую версию Хромиума, а во-вторых потому, что разработчик(и) могут не успеть учесть в патчах нежелательную функционалность свежевыпущенного браузера.

И тут мы опять приходим к теме старого доброго фаервола на роутере (который кстати и от мозилловской телеметрии поможет).

leedoyle commented 6 years ago

По теме треда: это всё конечно плохо, но не настолько, чтобы бросать заниматься настройкой. Тем более что и конфигурация TBB неидеальна, и им помощь не помешает.

Для сравнения даже корпоративная версия Win10 отправляет телеметрию даже после весьма утомительного (и местами очень континтуитивного) отключения https://xato.net/windows-spying-and-a-twitter-rant-19203babb2e7

В Мозилле весьма далеко до этого, и ситуация пока существенно лучше, чем в Хромиуме в плане отключаемости таких штук.

Тем не менее, поскольку телеметрия, идущая разработчикам ПО, далеко не единственная проблема с приватностью и безопасностью этого самого ПО, упомянутое в ОП событие не делает этот репозиторий в моих глазах менее значимым. Телеметрию можно блокнуть и на роутере(хотя я бы предпочел и в ПО отключать, и на роутере блокировать (двойная защита тут имеет смысл, т.к. вдруг ошибка в одном из уровней защиты, вдруг на роутере правило не срабатывает по новому домену телеметрии и т.д.), а вот кучу других вещей, вроде audio.api (или как его там) на роутере не заблокируешь.

KOLANICH commented 6 years ago

У Мозиллы по процессу на таб, к сожалению, не планируется.

По моему опыту, мультипроцессность только приводит к адовым тормозам даже на 4хядерном камне.

Ну и выбор НоСкрипт в качестве единственного аддона несколько сомнительный

По хорошему umatrix, ublock и noscript надо слить в один аддон, они все под gpl.

причем насколько я понимаю в НоСкрипте для ТББ есть только возможность "разрешить временно на странице", причем тогда разрешается и гугл аналитика, и всё-всё-всё.

Нет. В интерфейсе носкрипта можно было раньше блокировать каждый скрипт, шрифт и прочий ресурс отдельно. Но в webext - порте такого уже нет. В umatrix, к сожалению, такого тоже в интерфейсе нет, а запрятано в списках блокировки.

Защитники этой меры говорят, что разрешение скриптов но блокирование гуглоаналитики и прочих увеличит уникальность фингерпринта, и пожалуй они даже в чем-то правы, что не меняет того, что решение неоднозначное. Другое дело, что этот недочет не относится к браузерной части TBB.

Пользоваться тбб на настройках безопасности, отличных от задранных до максимума - по моему странно. Да, инетом не попользуешься в таком виде, но в другом виде всё это превращается в детскую забаву и теряет смысл.

Тем более что и конфигурация TBB неидеальна, и им помощь не помешает.

Им не нужна помощь, они многое принципиально отказываются делать.

И тут мы опять приходим к теме старого доброго фаервола на роутере (который кстати и от мозилловской телеметрии поможет).

Да не поможет он. Ведь телеметрию можно сливать и на https://mozilla.org/.... и https://google.com/....

Откажешься от использования гугла и запилишь белый список? Игры в файрволы для блокировки нежелательных url - это игры для государств, у которых цель не предотвратить даже единичный доступ к url, а наказать тех, кто предоставляет и пытается получить такой доступ. То есть государство может себе позволить просто взять и заблокировать все домены гугла, мозиллы и все домены, зарегистрированные у регистраторов, у которых были когда-либо зарегистрированы домены гугла и мозиллы, "пожизненно". Ты же в таком случае файрволом только себя накажешь, у тебя сайты перестанут работать. У тебя же цель другая - чтобы не было даже единичного слива телеметрии, но чтобы сайты работали. И файрволом она недостижима, для этого нужен общий интеллект. Кроме человеческого пока такого интеллекта нет. Так что единственный надёжный вариант - использовать софт, не сливающий телеметрию.

The-OP commented 6 years ago

@leedoyle

/r/firefox не настолько подконтролен, чтобы там нельзя было ничего неприятного озвучить.

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

А я тестировал с processCount=999

Так это все неофициально-неподдерживаемо. Официально в рамках Quantum DOM они так и планируют оставить 4 или около того, а внутри них грин-треды пускать. Вот пруф вроде.

но не настолько, чтобы бросать заниматься настройкой

Тема треда как раз то, настройкой чего стоит заниматься. Обычного Firefox по-моему уже не стоит.

Для сравнения даже корпоративная версия Win10

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

В Мозилле весьма далеко до этого, и ситуация пока существенно лучше, чем в Хромиуме в плане отключаемости таких штук.

Я о Хромиуме знаю только в общих чертах. У были подобные вышеописанному "баги"? Т.е. сливы URL в Гугл при явно отключенных телеметриях и т.п..

Телеметрию можно блокнуть и на роутере

Такой вариант, прямо скажем, дурно попахивает. Прямо как "Win10". Да и он не подойдет пользователям прокси.

я бы предпочел и в ПО отключать, и на роутере блокировать

Ну да, разве что как еще одна линия обороны.

The-OP commented 6 years ago

@KOLANICH

По моему опыту, мультипроцессность только приводит к адовым тормозам даже на 4хядерном камне.

Так речь не о скорости, а о безопасности. Как выяснилось, мультипроцессность - более перспективная модель, ибо ядра-память можно докупить (4 ядра это уже нижний сегмент по сути), а безопасность - гораздо труднее.

Ведь телеметрию можно сливать и на https://mozilla.org/....

Теоретически - можно, но на практике сейчас для всего этого отдельные поддомены. Тупая идея на тему: можно сделать не черный, а белый список поддоменов mozilla.org. В виде PAC. Лучше чем хосты, где только черный список возможен.

KOLANICH commented 6 years ago

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

Готова ли будет поменять домен телеметрии на главный? ИМХО Да, если телеметрию начнут массово блочить. А критерий массовости - тот же, что и для отключения в about config. Готова ли будет изменить файловое дерево своего кода, например переместить телеметрию в другу папку? ИМХО да. Заменить имена переменных на билебирду? ИМХО нет. Обфусцировать исходник? ИМХО нет. Обфусцировать отдельные строки с чувствительными данными - ИМХО да. Передавать данные стеганографически? ИМХО да, если данные начнут пропускать через прокси, блочащий коннекты или расшифровывающий траффик и с помощью машоба классифицирующий. Встроить АПИ, напрямую сливающее данные при наличии подписи Мозиллы на скрипте, и продавать услуги по подписи? Имхо да. Подобные АПИ уже были, они правда не данные сливали, а просто привилегированными были, случаев злоупотребления я не знаю. Кстати, доступ к буферу обмена когда-то был привилегированным. Пропустить шпионское расширение от третьих лиц в АМО и пропиарить его? ИМХО да. Встраивать дерьмо в чужие расширения под свободной лицензией на AMO? Имхо нет - юридически может быть чревато, типа опорочили репутацию честному разработчику.

The-OP commented 6 years ago

То есть исходники, или хотя-бы чейнджлоги, надо читать по-любому.

В чейнджлогах про это не пишут. А исходники конечно читать надо (и я их читаю, местами), но между двумя версиями там происходит ~10K коммитов (~800МБ текста в виде лога с диффами), так что целиком все изменения мониторить в одиночку нереально.

например переместить телеметрию в другу папку? ИМХО да.

Да, полно такого. И новая телеметрия появляется, и старая переименовывается, и настройки меняют названия и назначение.

АПИ [...] привилегированными были

Да, у AMO и еще пары поддоменов по умолчанию были/есть такие. См. это и permissions.manager.defaultsUrl например.

KOLANICH commented 6 years ago

В данной модели угроз может иметь смысл написать скрипт, который создаёт диффы между коммитами (или что там в hg) и анализирует их. 1 отслеживает пути перемещения файлов и папок. Если hg, как и git, отслеживает перемещения, то этим можно воспользоваться. Допустим, у нас есть файл, где код относится к телеметрии. Если при его перемещении содержимое не сильно изменится, то можно отследить его перемещение и пометить в базе новое расположение как "телеметрия". 2 отслеживает идентификаторы (тут я имею в виду имена функцрй, переменных, констант, макроопределений) и помечает диффы, в которых есть идентификаторы из телеметрии, как подозрительные, а файлы с большим процентом таких идентификаторов - как телеметрические. Ещё неплохо бы отслеживать чужие (созданные/модифицированные в нетелеметрических файлах) идентификаторы, используемые в файлах телеметрии, что может быть использовано для выяснения, какую инфу стали слливать. 3 отслеживает появление новых файлов, папок и about:config параметров, доменных имён, значений и имён переменных с высокой энтропией в коде. Правда последнее - фигня, ведь можно поксорить два общеупотребительных слова, а результат всё равно можно использовать в виде ключа или домены.

Это может упростить человеческий анализ.

Также может быть полезно https://tspace.library.utoronto.ca/bitstream/1807/75812/3/Miyani_Dhaval_K_201611_MAS_thesis.pdf

The-OP commented 6 years ago

Что-то мне кажется, тебя уже куда-то не туда понесло. Ксоры, стеганография - во-первых, это просто никому не нужно (в самой Мозилле), а во-вторых работать с настолько злонамеренным апстримом, да еще и автоматически, не анализируя все изменения, все равно было бы бесполезно. (Да еще и не фулл-тайм командой спецов по безопасности, а силами нескольких васянов в свободное время. Думал, что это очевидно, но все же обозначил явно.) Ну и не понимаю, кто по-твоему должен писать все эти анализаторы. Ты б еще сразу браузер предложил написать.

Предлагаю все-таки спуститься с небес на землю. Актуальная задача - выбрать какой-нибудь наименее зондированный из коробки браузер, который мы сможем твикать своими силами. И выбор тут невелик: либо Tor Browser, либо присоединяться к патчингу Хромиума (Ungoogled, Inox, Iridium и т.п.). Кто-нибудь последним занимался? Насколько сложно портировать патчи на новые версии?

Хотя вот еще вспомнил, насчет хромофорков - никто почему-то не говорит про Brave. А они вроде развиваются, даже вышеупомянутый Site Isolation на днях включили. Участие в их рекламной программе, насколько я понимаю, opt-in. Аддонов разве что нет пока.

The-OP commented 6 years ago

Насколько сложно портировать патчи на новые версии?

(Сам спросил - сам отвечу.) Видимо, непросто - уже 64 на носу, а Ungoogled только 62 недавно зарелизили.

Алсо, домены они не зря патчат: https://github.com/Eloston/ungoogled-chromium/issues/302

soredake commented 6 years ago

: либо Tor Browser

Голосую за это, кол-во настроек в этом репозитории можно будет очень сократить так как ~90% по умолчанию стоят на те что здесь указаны.

dartraiden commented 6 years ago

Мне тоже не нравится идея радикально менять браузер с Firefox на Chromium (в таком случае, вероятно, я всё равно уйду на TB, когда он переползёт на 60-й ESR, и буду тюнинговать его самостоятельно).

KOLANICH commented 6 years ago

Имхо хромобраузеры не вариант совсем, так как их about:config не о кастомизируемости, а так, пара флагов для разработчиков. ИМХО надо взять патчи дебиана, торбраузера и, возможно, некоторые патчи водолиса, бледнолуна и снегокота (о возврате xul речи не идёт) и применить на релиз, если, конечно, они туда встанут, потому что сидеть на esr - не вариант, и обозвать iceweasselom. А ещё лучше убедить мейнтейнеров применить эти патчи у себя на билд-серверах. Вот только дебиан поставил себя зачем-то в зависимость от мозиллы через использование их товарной марки, а это запрещает "существенные изменения", существенность скорее всего определяет ~копира~ правообладатель . Наводит на определённые мысли. Пересобирать же браузер у себя на компе с каждой новой версией я не готов, я не гентушник, мне одной пересборки питоновских пакетов хватает.

The-OP commented 6 years ago

@soredake

в этом репозитории

Думаю, наоборот - это будет другой репозиторий с частью информации из этого. По-моему так лучше чем удалять отсюда все. А этот пусть так пока остается - или передам кому-нибудь, если найдутся желающие.

@dartraiden

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

@KOLANICH

патчи дебиана, торбраузера и, возможно, некоторые патчи водолиса, бледнолуна и снегокота (о возврате xul речи не идёт)

У Дебиана и Кота вроде нет значимых патчей. Pale Moon уже слишком отличается, они там что-то новое пилят на основе 52 - Basilisk. Но они по ходу принципиально против e10s, так что в плане безопасности это фейл.

и применить на релиз, если, конечно, они туда встанут

От ESR? Не встанут.

сидеть на esr - не вариант

Почему? На мой взгляд, ESR - как раз одно из значимых преимуществ над Хромиумом. Поставил и оно работает целый год вместо этих ежемесячных плясок с обновлениями, от которых простому юзеру обычно никаких существенных улучшений, а чаще даже наоборот.

убедить мейнтейнеров применить эти патчи у себя на билд-серверах

Каких мейнтейнеров? Кстати, не в курсе, почему у того же Дебиана нет Tor Browser в репозиториях?

Пересобирать же браузер у себя на компе с каждой новой версией я не готов

Firefox должен собираться быстрее Хромиума по идее. Думаю, около получаса на относительно нестаром ПК.

KOLANICH commented 6 years ago

У меня ПК очень старый (> 10 лет) , на нём даже ME, возможно (я так толком и не понял, одни источники утверждают, что есть, другие - что нет) , нет. Вышеупомянутый четырёхядерник - это телефон, но он тоже EOL уже давно.

В esr же ничего особо хорошего не вижу, сам юзаю найтли для разработки и релиз для повседневного.

leedoyle commented 6 years ago

@The-OP вообще ungoogled отстает перманентно, inox и даже иридиум в этом плане лучше, причем inox гораздо лучше. У иридиума давно 63 есть (правда только рпм, для дебиана у них по-прежнему 62). На убунте сейчас няз даже ванильный Хромиум идёт в версии 63.

leedoyle commented 6 years ago

@KOLANICH

бледнолуна

Патчи от 38 лисы применять на 52 это, конечно, сильно. Если ты конечно ты не имел в виду Basilisk, но там по ходу просто идёт хаотичный вандализм мозилловского кода, на который полагаться не стоит.

@The-OP

Но они по ходу принципиально против e10s, так что в плане безопасности это фейл.

Он таки работает в Василиске, потому что у них не хватило ума и/или ресурсов удалить соответствующий код. Но работает "неофициально".

Почему? На мой взгляд, ESR - как раз одно из значимых преимуществ над Хромиумом. Поставил и оно работает целый год вместо этих ежемесячных плясок с обновлениями, от которых простому юзеру обычно никаких существенных улучшений, а чаще даже наоборот.

Так-то оно так, но в ESR не все секьюрити фиксы портируются, во всяком случае, так об этом говорят разработчики Мозиллы. (Если надо, потом поищу линк).

leedoyle commented 6 years ago

А хороший выход мне видится такой: простой браузер с минимальной поддержкой JS. Да, отвалится 5-10% сайтов, но большую часть сети на таком пока ещё можно было бы серфить.

Другой вариант: пытаться собрать энтузиастов, чтобы аудировать изменения Хромиума или Лисы вместе. Насколько я знаю, сейчас ничего подобного нет.

KOLANICH commented 6 years ago

1 Не вижу смысла в браузере с "урезанной" поддержкой js. Вообще, что такое "урезанная поддержка js"? Duktape или какая-то маргинальность вместо spidermonkey или v8? Из-за неуловимости (движок используют в основном для доверенного кода не в вебе, и то не везде, так как нет jit и ES>=6, поэтому при возможности берут что-то из мейнстримовых) там уязвимостей может быть побольше, чем в мейнстримовых движках. Если атакующий не может повредить память, то безопасность нарушает не сам движок js, а API, туда проброшенные, такие как таймеры, измерение текста, webgl, webaudio, flyweb, сенсоры. То есть нужна не урезанная поддержка js, а гибко настраиваемая поддержка API. Это частично есть и в хроме, но больше всего настроек в лисе.

The-OP commented 6 years ago

@leedoyle

inox и даже иридиум в этом плане лучше, причем inox гораздо лучше.

А домены они патчат? Это необходимо, как доказывает ссылка на багтрекер Ungoogled - ибо даже в Ungoogled, несмотря на самый обширный набор патчей, еще не нашли все стучащие в Гугл места.

в ESR не все секьюрити фиксы портируются, во всяком случае, так об этом говорят разработчики Мозиллы

Говорят они много чего, а вот CVE за год в ESR таки меньше получается, насколько я помню.

@KOLANICH

безопасность нарушает не сам движок js, а API, туда проброшенные, такие как таймеры, измерение текста, webgl, webaudio, flyweb, сенсоры

По-моему API нарушают скорее приватность чем безопасность. Из отдельного процесса в песочнице, сделать ими что-то небезопасное затруднительно.

KOLANICH commented 6 years ago

Дело в том, что и атаки по сторонним каналам, включая фингерпринтинг, и use-after-free обычно находятся в каком-либо внешнем API, приделанном к движку.

The-OP commented 6 years ago

Ну я иногда читаю новости про очередной релиз Хромиума и там обычно пишут что-то вроде "такие-то уязвимости пофикшены - из них ни одна не позволяла пробить песочницу". Жаль, что Firefox не проверяют с по процессу на вкладку.

The-OP commented 6 years ago

Посмотрел еще на Ungoogled и хочу заявить, что наборы патчей к Хромиуму - не вариант (для меня по крайней мере) по разным причинам.

Во-первых, последний - еще большее минное поле чем Firefox. Вообще все зашито прямо в исходниках - попробуй найди. И даже Ungoogled еще не нашли все стучащие места и иногда их только тупой патчинг доменов спасает. А в Inox вообще кучи нужного нет (см. специфичные для Ungoogled патчи).

Во-вторых писать эти патчи тоже нелегко, почему, собственно, они постоянно и отстают по версиям. Там надо не просто вырывать с мясом, но и иногда дописывать качестве заглушки недостающую логику, чтобы все аккуратно отваливалось, а не с грохотом падало. Для чего следует разбираться во внутренностях Хромиума. Причем это все еще и на крестах написано (в отличие от Firefox, где только часть), так что когда падает, отлаживать тяжелее чем JS.

Ну и в третьих - частые релизы, даже чаще чем у Firefox. Если бы был какой-то аналог ESR, то еще можно было бы попробовать раз в год найти время и силы портировать патчи на следующий ESR, но каждый месяц пытаться угнаться за тем, что Гугл там наговнокодил - увольте.

The-OP commented 6 years ago

@KOLANICH

Ведь телеметрию можно сливать и на https://mozilla.org/....

Еще одна идея в голову пришла. Делаем WebExt, которое добавляет ко всем запросам какой-нибудь кастомный HTTP-заголовок. Ставим Squid, настраиваем SSL Bump и разрешаем только запросы, содержащие этот заголовок (подчищая его естественно). Таким образом, ограничение WebExt, не позволяющее им видеть "системные" запросы самого браузера, на этот раз выйдет боком им, а не нам. Какие подводные камни?

KOLANICH commented 6 years ago

Таким образом, ограничение WebExt, не позволяющее им видеть "системные" запросы самого браузера, на этот раз выйдет боком им, а не нам.

Отличная идея, в общем. 1 Во-первых пролетят все сайты с hpkp, если делать подмену сертификата. С одной стороны таких сайтов мало. А с другой - фича полезная, и я был бы рад, если бы сайтов с этим было больше. Если же будет кастомный билд браузера, можно не делать подмену сертификата, а использовать встроенную функциональность по дампингу ключей. Надо только будет заморочиться с fifo и песочницей, чтобы ключи на диск не оседали. 2 Во вторых, в пролёте торбраузер. Вернее если он в пролёте, то он и не нужен, а если не в пролёте - то хак со сквидом не нужен, если будем его использовать. В качестве многоуровневой обороны сойдёт. 3 В третьих в пролёте обновления дополнений. Можно их завайтлистить, правда. 4 Не факт, что коннекты браузера всегда будут идти не через вебэкст. 5 Телеметрию внезапно необязательно слать по http, хотя наиболее вероятно, что будут слать именно по нему в обозримом будущем. 6 Сквид после себя следов не оставляет? Ну то есть порядок заголовков не меняет, заголовки не вставляет/меняет, параметры http/2? 7 если мозилла игнорирует настройки краш-репортера, то что ей может мешать игнорировать настройки прокси и пробовать слать телеметрию по всем интерфейсам? Значит нужно firejailить.

The-OP commented 6 years ago

Во-первых пролетят все сайты с hpkp

Пиннинг игнорируется, если подписано своим добавленным в систему/браузер сертификатом, насколько я помню. Как раз для антивирусов и т.п. сделано.

Можно их завайтлистить, правда

Ну да.

Сквид после себя следов не оставляет?

По умолчанию добавляет X-Forwarded-For, но это настраивается. Вроде все. Хотя я не специалист по Сквиду.

Вот релевантная документация: 1, 2 и 3. Суть там в том, что бампать можно несколько по-разному. Нам лучше бы делать сразу bump (client-first в старой терминологии), тогда, насколько я понял, можно рубануть когда пойдут заголовки, так и не соединяясь с целевым сервером. Но насчет такого способа там разные предупреждения, хотя, возможно, они касаются только древних ОС и кривых браузеров. Если же делать сначала peek, чтобы лучше подделываться под сертификат, это означает соединение с сервером и получение от него Hello. Надо проверить, насколько хорошо будет работать первый способ, и нужно ли прибегать ко второму.