LINUX.ORG.RU

Технические подробности недавнего отключения дополнений в Firefox

 , ,


5

4

Прим. переводчика: для удобства читателей даты приведены по московскому времени

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



Подоплёка: дополнения и подписи

Хотя многие используют браузер «из коробки», Firefox поддерживает расширения, называемые «дополнениями». С их помощью пользователи добавляют в браузер различные возможности. Существует свыше 15 тысяч дополнений: от блокировки рекламы до управления сотнями вкладок.

Установленные дополнения должны иметь цифровую подпись, которая защищает пользователей от вредоносных дополнений, и требует минимальной проверки дополнений сотрудниками Mozilla. Мы ввели это требование в 2015 году, поскольку испытывали серьёзные проблемы с вредоносными дополнениями.

Как это работает: каждая копия Firefox содержит «корневой сертификат». Ключ от этого «корня» хранится в модуле аппаратной защиты (HSM), не имеющем доступа к сети. Каждые несколько лет этим ключом подписывается новый «промежуточный сертификат», который используется при подписании дополнений. Когда разработчик присылает дополнение, мы создаём временный «конечный сертификат» и подписываем его, используя промежуточный сертификат. Затем конечным сертификатом подписывается само дополнение. Схематично это выглядит так.

Обратите внимание: у каждого сертификата есть «субъект» (кому выдан сертификат) и «издатель» (кто выдал сертификат). В случае корневого сертификата «субъект» = «издатель», но для других сертификатов издателем сертификата является субъект вышестоящего сертификата, которым тот подписан.

Важный момент: каждое дополнение подписано уникальным конечным сертификатом, но почти всегда эти конечные сертификаты подписаны одним и тем же промежуточным сертификатом.

Примечание автора: исключение — очень старые дополнения. В то время использовались различные промежуточные сертификаты.

Этот промежуточный сертификат вызвал проблемы: каждый сертификат действителен в течение определённого периода. До или после этого периода сертификат недействителен, и браузер не будет использовать дополнения, подписанные этим сертификатом. К сожалению, срок действия промежуточного сертификата истёк 4 мая в 4 часа утра.

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


Снижаем ущерб

Как только мы поняли, что случилось, то попытались не допустить ухудшения ситуации.

Во-первых, прекратили принимать и подписывать новые дополнения. Нет смысла использовать для этого просроченный сертификат. Оглядываясь назад, я бы сказал, что можно было бы оставить всё как есть. Сейчас приём дополнений возобновлён.

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


Параллельная работа

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

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

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

Довольно быстро мы пришли к двум основным стратегиям, которые и использовали параллельно:

  • Обновить Firefox, чтобы изменить период действия сертификата. Это заставит существующие дополнения волшебным образом работать снова, но потребует выпуска и доставки новой сборки Firefox
  • Создать действительный сертификат и каким-то образом убедить Firefox принять его вместо существующего, срок действия которого истёк

Мы решили сначала использовать первый вариант, который выглядел вполне рабочим. В конце дня выпустили и второе исправление (новый сертификат), о котором поговорим далее.


Замена сертификата

Как я упомянул выше, требовалось:

  • создать новый действительный сертификат
  • удалённо установить его в Firefox

Чтобы понять, почему это сработает, рассмотрим подробнее процесс проверки дополнения. Само дополнение поставляется в виде набора файлов, включая цепочку сертификатов, используемых для подписи. В результате, дополнение может быть проверено, если браузеру известен корневой сертификат, который встраивается в Firefox во время сборки. Однако, как мы уже знаем, промежуточный сертификат просрочен, поэтому проверить дополнение невозможно.

Когда Firefox пытается проверить дополнение, он не ограничивается использованием сертификатов, содержащихся внутри самого дополнения. Вместо этого браузер пытается создать действительную цепочку сертификатов, начиная с конечного сертификата и продолжает, пока не доберётся до корня. На первом уровне начинаем с конечного сертификата, а затем находим сертификат, субъект которого является издателем конечного сертификата (то есть, промежуточный сертификат). Обычно этот промежуточный сертификат поставляется вместе с дополнением, но в этой роли также может выступать любой сертификат из хранилища браузера. Если мы сможем удалённо добавить в хранилище сертификатов новый действительный сертификат, Firefox попытается его использовать. Ситуация до и после установки нового сертификата.

После установки нового сертификата у Firefox будет два варианта при проверке цепочки сертификатов: использовать старый недействительный сертификат (который не будет работать), либо новый действительный (который будет работать). Важно, что новый сертификат содержит те же имя субъекта и открытый ключ, что и старый сертификат, поэтому его подпись на конечном сертификате будет действительна. Firefox достаточно умён, чтобы попробовать оба варианта, пока не найдёт работающий, поэтому дополнения снова станут проверенными. Обратите внимание, это та же логика, которую мы используем для проверки сертификатов TLS.

Примечание автора: читатели, знакомые с WebPKI, заметят, что точно так же работают перекрёстные сертификаты.

Самое замечательное в этом исправлении то, что оно не требует переподписывать существующие дополнения. Как только браузер получит новый сертификат, все дополнения вновь заработают. Остаётся сложность с тем, чтобы доставить новый сертификат пользователям (автоматически и удалённо), а также заставить Firefox перепроверить отключённые дополнения.


Normandy и система исследований

По иронии судьбы, эту проблему решает специальное дополнение, называемое «системным». Чтобы проводить исследования, мы разработали систему под названием Normandy, которая доставляет исследования пользователям. Эти исследования автоматически выполняются в браузере, и имеют расширенный доступ к внутренним API-интерфейсам Firefox. Исследования могут добавлять новые сертификаты в хранилище сертификатов.

Примечание автора: мы не добавляем сертификат с какими-то особыми привилегиями; он подписан корневым сертификатом, поэтому Firefox ему доверяет. Мы просто добавляем его в пул сертификатов, которые могут быть использованы браузером.

Таким образом, решение состоит в том, чтобы создать исследование:

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

«Но подожди», - скажете вы, «дополнения же не работают, как запустить системное дополнение?». Подпишем его новым сертификатом!


Собираем всё вместе… почему так долго?

Итак, план: выпустить новый сертификат для замены старого, создать системное дополнение и установить его пользователям через Normandy. Проблемы, как я говорил, начались 4 мая в 4:00, а уже в 12:44 того же дня, менее чем через 9 часов, мы отправили исправление в Normandy. Потребовалось ещё 6-12 часов, чтобы оно добралось до всех пользователей. Уже неплохо, но пользователи в Twitter спрашивают, почему мы не могли действовать быстрее.

Во-первых, требовалось время, чтобы выпустить новый промежуточный сертификат. Как я уже упоминал выше, ключ от корневого сертификата хранится автономно в аппаратном модуле безопасности. Это хорошо с точки зрения безопасности, поскольку корень используется очень редко и должен быть надёжно защищён, но это слегка неудобно, когда нужно экстренно подписать новый сертификат. Одному из наших инженеров пришлось ехать в хранилище HSM. Затем были неудачные попытки выдать правильный сертификат, а каждая попытка стоила одного-двух часов, затраченных на тестирование.

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

Наконец, после того, как мы подготовили исследования к отправке, на развёртывание требовалось время. Браузер проверяет наличие обновлений Normandy каждые 6 часов. Не все компьютеры постоянно включены и подключены к интернету, поэтому нужно время, чтобы исправление распространилось среди пользователей.


Финальные шаги

Исследование должно исправить проблему у большинства пользователей, но доступно не всем. К некоторым пользователям требуется особый подход:

  • пользователи, которые отключили исследования или телеметрию
  • пользователи Android-версии (Fennec), где исследования не поддерживаются вовсе
  • пользователи кастомных сборок Firefox ESR на предприятиях, где невозможно включить телеметрию
  • пользователи, сидящие за MitM-прокси, поскольку наша система установки дополнений использует привязывание ключей (key pinning), которое не работает с такими прокси
  • пользователи устаревших версий Firefox, не поддерживающих исследования

Мы ничего не можем поделать с последней категорией пользователей — им всё равно следует обновиться до новой версии Firefox, потому что устаревшие имеют серьёзные незакрытые уязвимости. Мы знаем, что некоторые люди остаются на старых версиях Firefox, потому что хотят запускать старые дополнения, но многие из старых дополнений уже портированы под новые версии браузера. Для прочих пользователей мы разработали патч, который установит новый сертификат. Он был выпущен как багфикс-релиз (примечание переводчика: Firefox 66.0.5), поэтому люди получат его — скорее всего, уже получили — через обычный канал обновления. Если вы используете кастомную сборку Firefox ESR, обратитесь к своему мейнтейнеру.

Мы понимаем, что всё это не идеально. В некоторых случаях пользователи теряли данные дополнений (например, данные дополнения Multi-Account Containers).

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


Уроки

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

Очевидно, что всего этого вообще не должно было произойти. Явно стоит скорректировать наши процессы, чтобы снизить вероятность подобных инцидентов и облегчить исправление последствий.

На следующей неделе мы опубликуем официальный post-mortem и список изменений, которые намереваемся внести. Пока что поделюсь своими мыслями. Во-первых, должен быть лучший способ отслеживать состояние того, что является потенциальной бомбой замедленного действия. Нужно быть уверенными, что мы не окажемся в ситуации, когда одна из них внезапно сработает. Мы ещё прорабатываем детали, но, как минимум, требуется провести учёт всех подобных вещей.

Во-вторых, нужен механизм быстрой доставки обновлений пользователям, даже тогда, когда — особенно когда — всё остальное не работает. Было здорово, что мы смогли использовать систему «исследований», но это несовершенный инструмент и он обладает некоторыми нежелательными побочными эффектами. В частности, мы знаем, что у многих пользователей включено автоматическое обновление, но они предпочли бы не участвовать в исследованиях (признаюсь, у меня они тоже отключены!). В то же время нам требуется способ прислать обновления пользователям, но, какой бы ни была внутренняя техническая реализация, пользователи должны иметь возможность подписаться на обновления (включая оперативные исправления), но отказаться от всего остального. Кроме того, канал обновления должен быть более отзывчивым, чем сейчас. Даже 6 мая ещё были пользователи, которые не воспользовались ни исправлением, ни новой версией. Над этой проблемой уже работали, но случившееся показало, насколько она важна.

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

На следующей неделе мы рассмотрим результаты более тщательного анализа случившегося, а пока буду рад ответить на вопросы по электронной почте: ekr-blog@mozilla.com

>>> Подробности

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

ого какая мощь. а на какую нагрузку расчитана их «система»?

anonymous ()

Какой ты отвратный отчет.

Мы подписали наш сертификат сертификатом что бы дополнения могли подписать подписываемый сертификат сертификатов. xzibit

Как просроченный сертификат оказался в браузере, ни слова.

Наша команда такие молодцы, мы все очень умные и красивые.

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

Мы подписываем ваши дополнения в целях безопасности.

Вредоносных дополнений стало меньше? Где статистика? А как насчет рабочих эксплойтов на гитхабе которые обходят подпись дополнений в один клик? А имя того манагера который продвинул идею принудительной подписи дополнений можно? А он уволен?

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

Спасибо капитан, обновился, на другой браузер.

Одному мне кажеться что вставить в браузер сертификат у которого есть срок годности и который в любом случае однажды превратиться в тыкву это просто эпическое «запланированное устаревание»? Для меня это дикость, а дальше у меня текстовый редактор откажется открывать текстовые файлы, потому что я пользуюсь старым текстовым редактором? Это же шиза!

ЗЫ, жалко, хороший был браузер, когда-то.

anonymous ()

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

потрясающая эффективность. «все работали очень слажено, ни минуты не было потрачено впустую» (с)

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

рыдаю.

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

надо им ещё 40 миллионов долларов на инфраструктуру подогнать через донаты, пацаны. тех 40 миллионов (или сколько там?) которые они ежегодно сжигают явно не хватает на то чтобы переподписать 15 тысяч дополнений промежуточным сертификатом промежуточного сертификата, а надо.

anonymous ()

Мы ничего не можем поделать с последней категорией пользователей (которые не желают вставлять свежезаточенные высокотехнологичные зонды)

«поэтому тупо вынесем все дополнения, которыми они пользовались, что бы всемерно воспрепятствовать ти пользованию имеющимися у них версиями фф» это пропущенный переводчиком фрагмент

но многие из старых дополнений уже портированы под новые версии браузера

«а те, которые непортированы, но принципиально необходимы пользователям, мы тупо вынесли со своего сайта из маркетинговых соображений, приведенных выше» это пропущенный переводчиком фрагмент

rambleon ()
Ответ на: комментарий от anonymous

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

Спасибо капитан, обновился, на другой браузер.

Одному мне кажеться что вставить в браузер сертификат у которого есть срок годности и который в любом случае однажды превратиться в тыкву это просто эпическое «запланированное устаревание»? Для меня это дикость, а дальше у меня текстовый редактор откажется открывать текстовые файлы, потому что я пользуюсь старым текстовым редактором? Это же шиза!

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

anonymous ()

все эти >Технические подробности - это гонево

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

rambleon ()

Снижаем ущерб

Как только мы поняли, что случилось, то попытались не допустить ухудшения ситуации.

Это всё понятно, где фамилии сказочных, участвующих в этой диверсии?

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

Сказочные технлогии обновления браузера для «параноиков».

MozillaFirefox ★★★

Огромное тебе спасибо, чел, за колоссальный труд в твоей жизни на благо сообщества. За всё это время, и за этот перевод в частности.

а пока буду рад ответить на вопросы по электронной почте: ekr-blog@mozilla.com

Кто-то может запросить «расстрельный список» сказочных, которые типо виновны?

anonymous ()

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

Хоть кто-то, кто-нибудь на ЛОРе, показательный дуралей у которого было также, отзовись, плес. А то я думаю, что это диверсия, может зря я так думаю то, отзовись.

Во-вторых, нужен механизм быстрой доставки обновлений пользователям, даже тогда, когда — особенно когда — всё остальное не работает. Было здорово, что мы смогли использовать систему «исследований», но это несовершенный инструмент и он обладает некоторыми нежелательными побочными эффектами. В частности, мы знаем, что у многих пользователей включено автоматическое обновление, но они предпочли бы не участвовать в исследованиях (признаюсь, у меня они тоже отключены!)

У вас «особая ЭВМ», а вы пользуетесь фурифоксом? Ловите бэкдор, лапочки. С вашего компа подозрительная активность? Ловите бэкдор. Вашей жене потребовался телефон вашей любовницы? Ловите бэкдор.

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

Уровень мирового океана упал плять, от написанного. Столько воды в _техническом_ ответе. Сцуко, после таких ответов рождается новое Солнце.

anonymous ()
Ответ на: комментарий от anonymous

Жирнолис и все его «улучшения» неимоверно зае...ли. Из-за этого «сбоя» каждый день приходится реанимировать ему плагины. А без плагинов это жирная псина даром не нужна.

https://pp.userapi.com/c845220/v845220064/21144e/YOjx958oTzc.jpg

hikikomori ()
Ответ на: комментарий от Attila

+1 Адски плюсую. Это говнище явно имеет со своих глюков гешефт. Из-за этого сбоя я узнал про интернет без adblock, и он мне не понравился.
Пруф:
https://pp.userapi.com/c845220/v845220064/21144e/YOjx958oTzc.jpg

Теперь почти каждый день рубит все плагины.

hikikomori ()
Ответ на: комментарий от hikikomori

Подумаешь, тратить время своей жизни на борьбу с кривожопым софтом. Зато С В О Б О Д А, СТОЛЛМАН, СВЕТ, ИСТИНА. Не то что у этих любителей гуглозонда.

anonymous ()
Ответ на: комментарий от mx__

Кстати я не совсем понял зачем перепроверяли подписи уже установленных дополнений ?


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

hikikomori ()
Ответ на: комментарий от anonymous

Уровень мирового океана упал плять, от написанного. Столько воды в _техническом_ ответе. Сцуко, после таких ответов рождается новое Солнце.



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

hikikomori ()
Ответ на: комментарий от hikikomori

Есть конечно. Это ж мейнстримовый продукт, им пользуются миллионы людей. В такой большой выборке тысячи пассионарных сторонников палюбэ насчитать можно.

anonymous ()
Ответ на: комментарий от anonymous

Ого, ты все еще не нашел имена?

Чуви, спокойнее, побереги себя, это всего лишь смотрелка интернета. Не медицина, не авиация, не строительство. Просто браузер.

anonymous ()
Ответ на: комментарий от anonymous

Есть тут талантливые поэты? Надо сочинить стих/гангстарэпчик про айти-хейтеров. Сюжет такой: он ненавидит всё что только можно ненавидить, ненависть переполняет его.

anonymous ()

Во-первых, наша команда проделала потрясающую работу

Ахаха. Обосраться на виду у миллионов пользователей, это они называют потрясающей работой?

Behem0th ★★★★★ ()
Ответ на: Оп от anonymous

Сразу видно человека битого в детстве нульпоинтерами.
Если так вот написать
document.querySelector('link[href^="/tango/combined.css"]').setAttribute('href', '/waltz/combined.css');
браузер от этого не остановиться и будет видно почему не изменил стиль в случае чего.

uin ★★ ()
Ответ на: комментарий от hikikomori

сертификат удостоверяет не только отправителя, но и содержимое, поэтому проверялось, наверное, не только дата, но и сожержимое расширения.

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

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

anonymous ()
Ответ на: комментарий от mittorn

то есть мозилла может без разрешения пользователя загружать код способный устанавливать сертификаты и не только в браузер?

При дефолтных настройках может. Но пока что у пользователя есть возможность это отключить.

Во-первых, случившееся очень похоже на отработку технологии «протухания» ПО, или «превращения в тыкву». Раньше ведь как было - установил программу и она работает пока тебе не надоест, или какой фарс-мажор не случится. «Издатель» не может «принудить» пользователя удалить программу, или перейти на новую версию. ... это в прошлом. Сегодня придумали «сертификацию» - технологию, которая ограничивает время жизни ПО временем жизни сертификата ... а ещё сертификат можно отозвать досрочно.

Во-вторых

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

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

Короче, между проприетарным и «так называемым свободным» ПО разницы практически нет - везде «анальное рабство» пользователя у корпорастов, все изменение делаются исключительно для закабаления корпорастами пользователей, тотального контроля и механизма ограничения прав и возможностей по желанию корпорастов. А мозила - уже давно плохо замаскированный филиал гугла.

anonymous ()

Н-В-О-З-М-О-Ж-Н-О

Как ни странно возможно все. Я как то на ЛОР (вроде) постил фотку которую сделал сам лично, так там человек засунул проц в сокет, причем не правильно, и ножками проца продавил новые отверстия в сокете.

Раньше были нормальные программисты и всегда думали наперед и делали так называемую «защиту от дурака» и не одну кстати. Новые программеры-падаваны это уже не те люди. Нужно быть готовым ко всему когда используешь их код.

mx__ ★★★★★ ()
Ответ на: комментарий от MozillaFirefox

Но для этого пользователь должен сознательно включить «участие в экспериментах», которое по умолчанию выключено.

зачем так нагло врать? По умолчанию всё включено. Чтобы отключить, надо лезть в about:config и отключать вcё, содержащее experiments. Этот бэкдор от корпорастов из мозиллы и обнаружили после того, как браузеры стали себя странно вести - сегодня так, завтра этак, после завтра ещё как-то. Ан оказалось - это копорасты из мозиллы на тебе экскрементируют ... конечно, исключительно для твоей же пользы.

anonymous ()
Ответ на: Re: Самый главный урок от anonymous

Re: Самый главный урок

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

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

anonymous ()
Ответ на: комментарий от Attila

Сдаётся мне, что Мозилла тупо прогнулась под новую Корпорацию Добра(тм)

Это не сдаётся, а совершенно точно и очевидно. Во-первых, они же для сбора «телеметрии» и прочих исследований используют какой-то гуглосвский сервис ... ну потому что там очень удобно «анализировать» все эти «чисто анонимные» данные по browser_id :) Во-вторых, странным образом отвалились не все плагины, а в основном те, которые позволяют сохранять видео с онлайнсервисов (в первую очередь youtube) для оффлайн просмотра, а так же экспортировать страницы в pdf и т.д.

... а ещё бухвально на днях попал в бан плагин FVD (flash video downloader, который artur.dubovoy@gmail.com.xpi). Ведущий плагин в деле граббинга видео со всего и вся в любом разрешении с огромной аудиторией. ... якобы создаёи проблемы с производительностью

anonymous ()
Ответ на: комментарий от anonymous

Говнокод как раз когда в программе продразумевается условие при котором ничего не происходит. Сишники и плюсовики вынуждены делать везде проверки потому что у них программа грохнется в сигментейшн фолт прямо во время работы и потом придется долго и напряжно искать где это произошло. И во время компиляции это не отследживается. А у тебя язык-надстройка над нативным стеком, у тебя рантайм на плюсах все равно проверит куда указывает та херня откуда ты метод вначале querySelector, затем setAttribute вызываешь и если он на ноль указывает он тебе сообщение в консоль красным по белому напишет о том что там ноль приходит вместо ожидаемого. Ето не трагедия компьютер от этого не раcпи*рашивает и с братом ничего не случиться, если в программе не предусмотрено каких то действий без объекта или альтернативы в случае его отсутствия то и не надо избегать эксепшена. Ты думаешь кому то лучше от того что у тебя полча программа завершиться не выдавая никаких сообщений и при этом не выполнив то что подразумевалось, ты только себе гемороя этим создаешь потом будешь прыгать по своим ветвлениям смотреть что же не так почему не работает. Ругаться с пользователями обзывая их криворукими чудаками на букву м потому что у тебя все работает а у них нет вероятно из за того что они ни браузером ни компьютером пользоваться не умеют. А на самом деле там сыграли особые условия которые ты не мог предусмотреть по причине того что не знал о них, но зато предусмотрел все чтоб не узнать о них как можно дольше.

Вот что такое говнокод, уж извини.

uin ★★ ()
Ответ на: комментарий от Behem0th

Ахаха. Обосраться на виду у миллионов пользователей, это они называют потрясающей работой?

;))))))

это был хипстерский отвлекающий манёвр. Реальная цель - заставить есть дерьмо тех «дидов», которые до сих пор как-то умудрются избегать стильно-модно-молодёжно-неизбежнопрогрессивного дерьмоединия ;)

anonymous ()
Ответ на: комментарий от anonymous

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

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

anonymous ()