orangeitems’s diary

クラウドで働くエンジニアの日々の感想です(ほぼ毎日更新)。

(更新・復旧方法あり)Firefoxの署名有効期限切れによるアドオン利用不可は復旧に時間がかかるのではないか→66.0.4リリースで解決

f:id:orangeitems:20190504154700j:plain

 

FIrefoxのアドオンが全滅。世界中でユーザーが悲鳴。

もう世界中で騒ぎになっているこの件。

 

forest.watch.impress.co.jp

「Firefox」にインストール済みのアドオンがすべて無効化され、利用不能になる問題が複数報告されている。アドオンを新規にダウンロード・インストールすることもできない。

 

この問題、署名の仕組みを考えると、そんなに簡単に解決するように思えないのです。個人メモとして記事にしておきます。

(強調しますが、個人的な想像です。)

 

Firefoxのアドオン署名の経緯

Firefoxのアドオンが署名必須になったのは、2015/12/15にリリースされたFirefox 43からです。

 

forest.watch.impress.co.jp

 15日に公開された「Firefox 43」ではアドオンに署名が義務付けられ、未署名のアドオンは自動的に無効化されて利用できなくなる。この施策は、もともと「Firefox 41」で実施されるはずだったが、アドオン開発者の対応を待つためか導入が延期されていた。

 

署名の有効期限が切れたのが2019/5/4 0:00 UTCということは2019/5/3までの有効期限だったということになります。推測ですが2014年中に5年期限で作成した感じでしょうか。

 

さて、この問題を正しく知るためには、Firefoxのアドオンの公開プロセスを知っておく必要があります。

 

developer.mozilla.org

アドオンに署名を施すセクション

 

Firefox 43以降では、Firefoxを対象とした拡張機能およびマルチパッケージ・インストーラは、リリース版およびベータ版のFirefoxに対してインストール可能にするために、Mozillaによって署名を施す必要があります。テーマや言語パックなどのその他の種類のアドオンは署名を必要としません。

署名されていないアドオンは、FirefoxのDeveloper Edition、Nightly、およびESR版では、about:config で xpinstall.signatures.required を変更すれば引き続きインストールすることができます。

Mozilla は AMO ウェブサイトを通じてアドオンに署名し、署名するアドオンの提示には次の3つのメソッドがあります:

 

・Developer Hub on AMOからアドオンをアップロードする。
・addons.mozilla.org 署名 APIを使う。
・web-ext sign を使う。
すべての署名オプションは Firefox Add-on Distribution Agreement に従います。

 

署名 API や web-ext を使うと、AMOで公開されることなく、署名されたアドオンが返されます。AMO Developer Hub でアドオンをアップロードするオプションを選ぶと、AMO で公開するか自己配布するかを選択できます。自己配布を選んだ場合、処理の最後でアドオンの署名されたコピーをダウンロードします。

方法に関係なく、すべてのアドオンは署名前に自動バリデーション(妥当性チェック)を通る必要があります。手動のコードレビューを受けることもあります。アドオンに適用されるレビュー条件は Add-on Policies で見ることができます。

 

もっとかみ砕いて説明します。アドオン開発者はアドオンを作成します。作成過程は省略します。作成したファイルだけではFirefoxでは使えません。

AMO(addons.mozilla.org)へアドオンを送付し、「妥当性チェック」を受ける必要があります。もし妥当であると承認を受けることができると、「署名」が施されたアドオンが返信されるという仕組みです。

この署名済みアドオンをAMO(アドオンの公式配布サイト)で配布するかは作成者の自由です。しかし、配布しない場合であっても、利用するためには署名済みである必要があります。FIrefox内部で署名が正しいかどうかを確認するプロセスが走るからです。

アドオンを公開しようがしまいが、アドオンはAMO側で品質やセキュリティーを担保してFirefoxで使わせたいというポリシーだと思います。

今回の問題では、Firefoxがインストール済みアドオンの署名を確認したら、署名の有効期限が切れていた、という問題ということです。ですから、パソコンの日付を5/3以前にすると署名が有効と反映され使えてしまうということです。

※ただし、システムクロックを戻す運用は絶対にお勧めしません。他の不具合が出る可能性が十分にあります。

 

リカバリーには時間がかかるはず

以下、個人的な推測です(憶測に近い)。

署名をAMO側(いわゆる運営側)で行っていることが問題を深刻にしていると思います。アドオン作成者にはどうにもできないからです。

仮に、署名のための証明書・鍵をAMO側で新しくしたとしても、幾多のアドオンはすでに署名済みです。再度AMO側で署名しなおさなければいけません。また、新しい署名を有効とみなせるように、最新バージョンのFirefoxを配布しなければいけません。

今AMO側で公開されているアドオンについては、以下のリカバリー方法を選択するのではないか‥と思います。

 

1)AMOが証明書・鍵を再作成する
2)AMO側で保管しているアドオンについて、バッチ等で再署名する
3)新しいFirefoxを配布し、再署名したアドオンをAMOからオンラインでアップデートし使えるようにする

※ただし、署名を更新する際、勝手にAMO側でアドオンを改変していいのかいなという倫理的な話もあります。

※単にアドオン開発者に新しい署名を再度行うよう呼びかけ、再度AMOにアップロードさせるのかもしれません。

 

ここまで読んできて、「署名のタイムスタンプだけのばせないのか・・」と思う方もいらっしゃると思いますがどうも今回は、証明書の期限とのことなので無理だと思っています。このあたりの仕組みがIPAのサイトにわかりやすくまとめられていますので添付しておきます。

9.5 電子署名の長期保存 | IPA

 

なぜこんなに署名の有効期限が短かったのか

署名を使う別の場面として、Androidアプリの場合があるのですが、以下の記載があります。

 

developer.android.com

署名戦略を決定する際のもう 1 つの重要な検討事項として、アプリケーションの署名に使用するキーの有効期間の設定方法があります。

・アプリケーションのアップグレードをサポートするには、キーの有効期間は、アプリケーションの予定される試用期間以上である必要があります。有効期間は、25年以上であることが推奨されます。キーの有効期間が切れた場合、ユーザーはアプリケーションの新バージョンにシームレスにアップグレードできなくなります。

・同じキーで複数の異なるアプリケーションに署名する場合、キーの有効期間が、今後のアプリケーション スイートに追加される依存アプリケーションを含め、すべてのアプリケーションのすべてのバージョンの予定される使用期間を超えることを確認してください。

・アプリケーションを Android マーケットに公開する予定の場合、アプリケーションの署名に使用するキーの有効期間を、2033 年 10 月 22 日以降の期限に設定する必要があります。マーケット サーバーは、新バージョンが公開されたときにユーザーがマーケット アプリケーションをシームレスにアップグレードできるよう、この要件を義務付けています。

アプリケーションの設計時にこれらの点を考慮し、アプリケーションの署名に適切な証明書を使用してください。

 

以上のように、公開するアプリへの署名は、アプリケーションの寿命といってもよいくらい長くする必要があることをGoogleが推奨しています。

したがって、2019/5/4に期限切れを迎えてしまったAMOの署名の期限の短さは、どう考えても開発元であるmozzilaの不手際であるように思われます。特にAMO側で一括管理しているのですから、もっと長い期限の署名であるべきです。

 

※本件、個人的な推測です。

※サクっと治ったら・・ごめんなさいします。。

 

追記(2019/5/4 20:15)

本件、ちらほら「治った」という話を聞くようになってきました。

 

現在、firefoxは下記のスレッドで対応されているようです。
bugzilla.mozilla.org

 

下記に、最新コメントがあり、希望の光が見えました。

Update: We have rolled out a partial fix for this issue. We generated a new intermediate certificate with the same name/key but an updated validity window and pushed it out to users via Normandy (this should be most users). Users who have Normandy on should see their add-ons start working over the next few hours. We are continuing to work on packaging up the new certificate for users who have Normandy disabled.

(日本語訳)

更新:この問題に対する部分的な修正をロールアウトしました。同じ名前/キーで更新された有効期間を持つ新しい中間証明書を生成し、それをNormandy経由でユーザーにプッシュしました(これはほとんどのユーザーになるはずです)。 Normandyを使用しているユーザーは、今後数時間でアドオンが機能するようになるはずです。 Normandyが無効になっているユーザーのために、新しい証明書のパッケージ化に引き続き取り組んでいます。

 

なんだか、予想を超える解決法でした。

解決に時間はかからないようです。予想が外れてごめんなさい。

 

こういう手順のようです。

 

 

具体的には、下の位置です。

 

f:id:orangeitems:20190504203207p:plain

 

f:id:orangeitems:20190504203221p:plain

※オンにしてFirefoxを再起動するとFIXがすぐ降りてくるかもしれません。 降りてきたらオフにして問題ありません。

 

また、サポートは現在、ONにしていないユーザー向けにも、対応を考えているそうです。急いで復旧したい方は上記をどうぞ。

 

追記(2019/5/5 8:10)

公式ブログがアップデート。

blog.mozilla.org

(日本語訳)

5月3日金曜日遅く(日本では5月4日 9:00)、Firefoxで既存および新規のアドオンの実行またはインストールが妨げられる問題に気付きました。Firefoxをご利用の方々にご迷惑をおかけして申し訳ありません。

私たちのチームは、リリース、ベータ、ナイトリーのすべてのFirefoxデスクトップユーザーのための修正を識別し、そして展開しました。修正は数時間以内にバックグラウンドで自動的に適用されます。アドオンを再び機能させるために積極的な手順をとる必要はありません。特に、問題を解決するための試みとして、アドオンを削除または再インストールしないでください。アドオンを削除すると、それに関連付けられているデータはすべて削除されます。無効にしてから再度有効にしても削除されません。

ご注意:この修正はFirefox ESRまたはFirefox for Androidには適用されません。私達は両方のための修正をリリースすることに取り組んでいて、そしてこことソーシャルメディアで更新を提供するでしょう。

この修正を短期間で提供するために、Studiesシステムを使用しています。このシステムはデフォルトで有効になっており、スタディが無効にされていない限り、何もする必要はありません。

(中略)

私たちはStudiesシステムを使わない一般的な修正に取り組んでおり、それに従ってこのブログ記事を更新し続けるでしょう。

私たちはこの記事の継続的な努力に関する最新情報を提供し続けるでしょう、そして今後数日中にもっと実質的な最新情報を共有するでしょう。

 

Android版はまだ未対応とのことを明確にしています。

 

 

追記(2019/5/6)

完全解決の報が来ました。

 

forest.watch.impress.co.jp

 Mozillaは5月5日(米国時間)、デスクトップ向け「Firefox」の最新安定版v66.0.4を公開した。現在、MozillaのWebサイトからダウンロード可能。インストール済みの場合は、ツールバー右端のメニューボタンから[ヘルプ]-[Firefox について]メニューへアクセスし、バージョン情報ダイアログを開くと最新版へ更新できる。

(中略)

 なお、企業向けの長期サポート版「Firefox ESR」やAndroid向け「Firefox」でも、同様の修正を施した最新版がリリースされているとのこと。

 

長期休暇開けの日本に配慮したかのようなタイミングですね。

66.04のリリースノートはこちら。ダウンロードもできます。

 

www.mozilla.org

(日本語訳)

修正:

無効にされたWeb拡張機能を再度有効にするため、証明書チェーンを修復した。

 

修正されていない問題:

・少数のアドオンがサポートされていないと表示されたり、about:addonsに表示されないことがあります。彼らのデータは失われません。ユーザーはアドオンを再インストールしてデータを回復できるはずです(バグ1549129)。

・コンテナー機能を使用するアドオン(マルチアカウントコンテナーやFacebookコンテナーなど)がこの問題の一部として無効になっている場合、失われたサイトデータやそれらのアドオンのカスタム構成はこのリリースでは回復されません。ユーザはそれらを設定してabout:addonsで再度ログインする必要があるかもしれません(Bug 1549204)。

・テーマを再度有効にすることはできません。ユーザはabout:addonsでそれらを再び有効にする必要があるかもしれません(Bug 1549022)。

・アドオンによってカスタマイズされたホームページまたは検索設定はデフォルトにリセットされるかもしれません。ユーザはabout:preferencesまたはabout:addonsでそれらを再度カスタマイズする必要があるかもしれません(Bug 1549192)。

 

連休中に解決されてよかったですね。