Firefoxで突然、ほぼすべてのアドオンが使えなくなった

今回の事件の概要を後学のためにまとめてみます。まあ、流石に同じことは起こらないと思いますが、対処法など情報は有用です。(聞きかじりを含むので、間違っている情報が含まれるかもしれません)

はじめに

先日(2019年5月4日)、日本時間の午前9時頃から突然Firefoxの拡張機能が使えなくなりました。現在(2019年5月5日)は、既に暫定的とはいえ問題は解決済みのようです。ただし、暫定解決のため、現在(2019年5月6日)でも遅れて病状が発生する場合があるようです。

参考:「Firefox」でインストール済みアドオンが利用不能になる問題が発生中 - 窓の杜

病状

全世界規模でFirefoxのほとんどの拡張機能が使用不可の状態となったようです。

  • 日本時間の2019年5月4日9時以降に突然拡張機能が使えなくなる
    • 再起動とは関係なく突然使えなくなる
    • 問題無い人は、再起動しても大丈夫
      • 大丈夫だった場合でも突然使えなくなることがある
    • 一日一回の拡張機能更新確認のタイミングが原因と思われる
  • addons.mozilla.orgから問題拡張機能がダウンロードできない
  • 一部の拡張機能は動作する
    • 筆者環境では、3つの拡張機能が最後まで動作しました

原因

どうも、証明書の期限切れが問題のようです。

Firefoxの拡張機能は、AMO(addons.mozilla.org)に一度アップロードしなければ通常のFirefoxでは使用できません。AMOで証明書を作成し、証明書のある拡張機能のみインストールできます。この仕組があるため、Firefoxでは、あとから問題が発覚した拡張機能をユーザのFirefoxから強制的にアンインストールすることが可能です。

今回は、この証明書の証明期間が過ぎてしまい。「怪しそうだから使えませんよ」と言われている状態のようです。

参考:1549017 - All extensions disabled due to expiration of intermediate signing cert (Workaround on standard builds)

現在の流れ

  1. 2019年5月4日9時以降に問題現象発生
  2. 2019年5月4日21時頃1次修正パッチ提供開始
    • Firefoxの内部時間を変更して、問題現象のみを回避する
  3. 2019年5月5日2次修正パッチ提供開始
    • 新たな証明書をFirefoxにインポートする
  4. 2019年5月6日Firefox66.0.4リリース
  5. 技術的な詳細解説(英語)
  6. Firefox52-56用のレガシー修正プログラムが公開される

※公式の情報は、下記ページに集約されているようです
 追加情報が随時追加されているようです
 Update Regarding Add-ons in Firefox | Mozilla Add-ons Blog

回避策

公式回避策

公式に修正パッチを配布しているようです。修正パッチのインストールはユーザの操作を必要とせずに勝手にダウンロード・インストールされるようです。

下記項目をチェックすることで、早く修正パッチを受信できるようです。

  • オプション > プライベートとセキュリティー > Firefox のデータ収集と利用について > Firefoxが技術的な対話データを Mozilla へ送信することを許可する
    • 再起動が必要?(しといたほうが安全)

※遅い場合、最悪6時間待たされる可能性があります
 (6時間Firefoxを起動したまま放置すれば、インストールされる)
※チェックしておけば、今回以外の問題も同様に早く、解決できるかも?

参考:Update Regarding Add-ons in Firefox | Mozilla Add-ons Blog


about:studiesをURLバーに入力することで修正パッチを確認できます。
実施中の調査に下記項目があれば、修正パッチをインストール済みです。

  • prefflip-push-performance-1491171•有効
  • hotfix-update-xpi-signing-intermediate-bug-1548973•有効

about:studies

OSの時間を過去に戻す

OSの時間設定を日本時間で2019年5月4日9時以前に戻す。証明書の期限切れが原因のため、期限より前に設定すれば回避できるようです。

一時的なアドオンを読み込む

  1. 拡張機能のxpiファイルを準備する
  2. about:debuggingを開く
  3. 「一時的なアドオンを読み校...」からxpiを読み込む

※Firefoxを開いている間、拡張機能が使用できます。再起動した場合、一時的なアドオンは削除されます。

開発版Firefoxを使う

開発版Firefoxで拡張機能の証明書を無視してインストールする設定にした場合、問題を回避できるようです。通常のFirefox拡張機能の開発方法です。

  1. 開発版Firefoxをインストールする
  2. 開発版Firefoxでabout:configを開く
  3. xpinstall.signatures.requiredの項目をfalseに変更する

※通常Firefoxでは、問題項目を確認しないため、問題を回避できません
※Android Firefoxも同様です

特殊な方法

1549017 - All extensions disabled due to expiration of intermediate signing cert (Workaround on standard builds)

  1. about:supportを開く
  2. プロファイルフォルダーを開く
  3. テキストエディタでextensions.jsonを開く
  4. "appDisabled":true をすべて "appDisabled":false に置換する
  5. "signedState":-1 をすべて "signedState":2 に置換する
  6. ファイルを保存する
  7. Firefoxを再起動する
  8. URLバーからabout:addonsを開く
  9. 各アドオンを無効化してから有効化すると再度使えるようになる

※未検証
※上記の手順を実行すると古い拡張機能(Tab Mix Plus等)の動作報告あり
 アドオン署名チェックを無効にしているのかな?

特殊な方法(Firefox拡張機能のアドオン署名チェックを無効にする)

javascript - How can I disable signature checking for Firefox add-ons? - Stack Overflow
アドオン署名チェックを無効にするため、チェックされないのですべてのアドオンが使えます。userChrome.jsを使用して実現します。

※未検証

ノーブランド版を使う

ノーブランド版では、通常リリース版と異なり、about:configxpinstall.signatures.requiredfalseに修正することで署名チェックなしで動作させることが可能です。

参考:Latest topics > 未署名のアドオンが動作するノーブランド版Firefoxの入れ方・使い方(主にアドオン作者向け) - outsider reflex
参考:Add-ons/Extension Signing - MozillaWiki

補足

拡張機能の更新タイミング

  • 拡張機能の最終更新時間:app.update.lastUpdateTime.xpi-signature-verificationの数値
  • 最終更新時間24時間後に次の更新を確認する
  • 数値は、Unixtime形式

Firefox56-の場合

旧バージョンでも問題が発生します。ただし、サポートの関係で旧バージョンの場合、新バージョンと異なり。ユーザ側で対応しなければならないことがあるようです(新バージョンでは、ユーザが最悪なにもしなくても問題は解決します)。

現在(2019年5月6日)の時点で新しい証明書をインポートする必要があるようです。証明書の正しさに自信がないため、ここに記載するのはやめておきます。証明書とインポート方法は、ググればでてくると思います。

公式がFirefox52-56用のレガシー修正プログラムを配布、拡張機能の手動インストールで対応できる。

※未検証

備考

拡張機能が動かなくなって一番利益のでた人たち

Firefoxの拡張機能の停止に伴って、広告ブロック系の拡張機能も動作を停止したため、広告会社関連は特需だったようです。まあ、筆者のブログには関係ありませんでしたが…。

参考:Ad companies right now : firefox

証明書の期限切れといえば

証明書の期限切れで記憶に新しいのは、ソフトバンクの通信障害ではないでしょうか。通常のウェブページでもSSLの証明書の期限切れもあります。いつか、証明書の期限切れでウェブ全体が止まる日が来るかもしれませんね…。

参考:ソフトバンク通信障害の原因「証明書の期限切れ」はなぜ起きる?有効な対策は? |ビジネス+IT