Mozilla Security Blog 日本語版

Mozilla Security Blog を日本語に翻訳(非公式)

【翻訳】非 HTTPS ページへの新しい警告表示

この記事は、2017 年 1 月 20 日付で Mozilla Security Blog に投稿された Communicating the Dangers of Non-Secure HTTP(筆者: Tanvi Vyas, Peter Dolanjski)の翻訳です。この翻訳は公式なものではありません。詳しくはこちらをご覧ください。


新しい警告表示

安全な HTTP プロトコルである HTTPS は、現代の web において重要な役割を担っています。ブラウザと web サーバの間では HTTPS による認証と暗号化が行われ、安全な通信路が確立されます。インターネットバンキング、または友人とのやり取りなど、HTTPS は web の様々な場面で盗聴や改ざんを防ぐのに役立ちます。通常の HTTP で通信してしまうと、web サイトの内容がネットワーク上の第三者に見られたり書き換えられたりするリスクがあるため、HTTPS の存在は重要であると言えます。

web を利用しているユーザの安全を確保するため、開発者の皆様には web サイトを HTTPS で配信するようお願いしています。HTTPS の採用に関しては 以前よりもハードルが低くなっています。今日における web のトラフィックは大半が HTTPS で保護されており、HTTPS の利用率には 大きな改善が見られます

(訳注:HTTPS の利用率に関するグラフは 元記事 から参照してください。)

Firefox の新しいセキュリティ UX

Firefox のアドレスバーには従来、HTTPS の web サイトには緑色の鍵アイコンが、非 HTTPS であれば(鍵ではない)通常のアイコンがそれぞれ表示されていました。緑色の鍵アイコンは、サイトと安全に通信が行われていることを表しています。

HTTPS 時の従来表示

HTTPS 時の従来表示

非 HTTPS 時の従来表示

HTTPS 時の従来表示

HTTPS であるリスクをユーザへ明確に示すため、今月の Firefox 51 からは「パスワードの入力欄を持つ非 HTTPS な web ページ」について、赤線の入った灰色の鍵アイコンがアドレスバーに表示されます。

新しい警告表示

新しい警告表示

“i” のアイコンがクリックされると、パネルには「この接続は安全ではありません」と「このページのログインフォームは安全ではありません」と表示されます。

Firefox Developer Edition では既に、2016 年 1 月よりこの新しい警告表示が実装されています。その 2016 年 1 月以降、完全に HTTPS で保護されたログインフォームの割合は、Firefox が確認した範囲で 40% から 70% に増加しHTTPS のページ数も全体で 10% 増加しました(訳注:元記事のグラフ参照)。

今後の Firefox のリリースでは、ユーザ名やパスワードの入力欄をユーザがクリックした際に、もしそのページが非 HTTPS であれば、入力欄の直下に警告メッセージが表示される予定となっています。このメッセージには先程と同様、赤線の入った灰色の鍵アイコンと、「この接続は安全ではありません。このページのログインフォームは安全ではありません。」のメッセージが表示されます。

非 HTTPS ページのパスワード入力欄に対する警告表示

今後の展望

HTTPS の利用を推進しつつ、ユーザにリスクを正確に伝えるため、最終的に Firefox は非 HTTPS ページのすべてに斜線入りの鍵アイコンを表示するようになるでしょう。これにより、安全でない旨をユーザへ明確に示すことに繋がると思われます。引き続き計画の進捗は報告いたしますが、今回の変更を受けて開発者の方々には是非、web ユーザを HTTPS で保護するのに必要な取り組みを行ってください。

今回の機能に関する技術的な詳細は、昨年の ブログ記事(参考:日本語訳)をご覧ください。今回の変更が Firefox のリリース版へ反映される前に web サイトをテストしたい場合は、最新版の Firefox Nightly をインストールしてください。

謝辞

今回の変更に関して、エンジニアリング、ユーザ体験、ユーザ調査、品質保証、プロダクトチームの Sean Lee, TImGuan-tin Chien, Paolo Amadini, Johann Hofmann, Jonathan Kingston, Dale Harvey, Ryan Feeley, Philipp Sackl, Tyler Downer, Adrian Florinescu, Richard Barnes の各氏に感謝申し上げます。そして特に Matthew Noorenberghe 氏に感謝を申し上げます。彼の助け無くしては実現できなかったでしょう。

【翻訳】SVG アニメーションにおける脆弱性の修正

この記事は、2016 年 11 月 30 日付で Mozilla Security Blog に投稿された Fixing an SVG Animation Vulnerability(筆者: Daniel Veditz)の翻訳です。この翻訳は公式なものではありません。詳しくはこちらをご覧ください。


太平洋沿岸時間 11 月 30 日午後 1:30 頃、MozillaFirefox のアップデートをリリースしました。このアップデートでは、Tor Browser ユーザの秘匿性を能動的に無効化する目的に用いられていると報告された脆弱性が修正されています。既存の Firefox は 24 時間以内に自動で更新されるはずですが、更新版を手動でダウンロード することも可能です。

11 月 29 日(火)に、これまで未知だった Firefox の脆弱性 を利用した攻撃コードが Mozilla に提供されました。この攻撃コードは、後に別の個人によって Tor Project の公式メーリングリストにも投稿されました。今回の攻撃手法は、悪意ある JavaScriptSVG コードを含んだ web ページを被害者に読み込ませることで、対象システム上で任意のコードを実行させてしまう Firefox のバグを利用したものでした。攻撃者は今回の手法を用いることで、対象システムの IP / MAC アドレスを収集した後に中央サーバへ送信させることが可能でした。攻撃コード自体は Windows でしか動作しないものでしたが、同様の脆弱性Mac OSLinux にも存在します。この脆弱性と修正内容に関する詳細は、Mozilla の情報公開ポリシー に基づいて公開される予定です。

今回の攻撃手法は、FBI が Tor ユーザの秘匿性を無効化する際に用いる「ネットワーク捜査技術」と本質的に同様です(FBI が 宣誓供述書 で説明しています)。このような類似性から、今回の攻撃手法が FBI や他の司法当局によって作成された可能性が考えられます。しかし、現時点においてその真偽は定かではありません。もしこの攻撃手法が政府機関によって実際に開発・利用されたものならば、こうして内容が公開され誰もが Firefox ユーザを攻撃できるという現実を踏まえると、対象は限定的と言われている政府のハッキング行為が、Web の世界において幅広い脅威となり得ることの証左と言えるでしょう。

【翻訳】コンテンツセキュリティのデフォルト適用技術

この記事は、2016 年 11 月 10 日付で Mozilla Security Blog に投稿された Enforcing Content Security By Default within Firefox(筆者: Christoph Kerschbaumer)の翻訳です。この翻訳は公式なものではありません。詳しくはこちらをご覧ください。


Firefox では URI の指すリソースを読み込むのに先立ち、その web コンテンツが悪意ある処理を実行できないことを確認するために様々なセキュリティチェックを行っています。例えば、あるオリジン上の悪意あるスクリプトから別のオリジン上の機密情報へアクセスさせないために、まずは Same-Origin Policy (SOP) が適用されます。Firefox によるセキュリティチェックでは、ユーザのデスクトップやモバイル端末に表示を行う web コンテンツがローカルファイルにアクセスできないことも確認します。加えて Firefox では Cross-Origin Resource Sharing (CORS) / Mixed Content Blocking / Content Security Policy (CSP) / Subresource Integrity (SRI) をサポートしており、web コンテンツが悪意ある処理を行えないよう他にも様々な対策を講じています。最新のコンテンツセキュリティにおける概念や、安全な web サイトを構築するための設定方法に関する詳細は Mozilla's HTTP Observatory を参照してください。ここで重要なことは、web の進化のみならず、エンドユーザのセキュリティやプライバシーを確保するためにコンテンツセキュリティの仕組みもまた必要であり、従ってブラウザ内部の新しいセキュリティ機能から利用する API の整備もまた不可欠であるということです。

以前までのコンテンツセキュリティの適用方法

Firefox のレイアウトエンジンである Gecko は、HTML / CSS / JavaScript などの web コンテンツを読み込み、ユーザの画面に表示します。しかし、インターネットを通じてリソースを取得する過程においては、Necko と呼ばれるネットワークライブラリに依存しています。Necko はプラットフォームに依存しない API 群であり、トランスポート層からプレゼンテーション層までのネットワークレイヤで必要な機能を提供するものです。歴史的な経緯により、Necko はスタンドアロンなクライアントとして開発されました。このような独立性のため、セキュリティチェックは Necko ではなく Gecko で行う必要があり、コンテンツを読み込むコンテキストについて Necko は無知である必要がありました。

以前のアーキテクチャ

画像にある通り、Necko を通じてリソースをネットワークへリクエストする前の段階で、すべてのセキュリティチェックが Gecko 側で行われます。このような以前のアーキテクチャでは、リソースのリクエストをネットワークへ向けて発行する前に、Gecko 内の異なるサブシステムが別々にセキュリティチェックを行わなければならない、という欠点があります。例えば、ImageLoaderScriptLoader は画像ないしスクリプトの GET リクエストを発行する前に、必要なセキュリティチェックを別々に行わなくてはなりません。系統的なセキュリティチェックは必ず行われますが、そのセキュリティチェックを行うためのコードが至る所に散らばってしまいます。動的にコンテンツを読み込む仕様を複数実装してきた経験則から、先述した分散型のセキュリティモデルは過ちを誘発しやすいことが分かっていました。

デフォルトとしてのコンテンツセキュリティ適用

リソースを読み込む前に必ずセキュリティチェックを行う代わりに、セキュリティチェックがデフォルトで適用されるよう Firefoxリファクタリングを行いました。

新しいアーキテクチャ

画像にある通り、Firefox のセキュリティアーキテクチャを改修し、すべてのセキュリティチェックが Necko 内部で一元的に行われるよう API を整備しました。この新しい実装により、ネットワークリクエストを発行するごとに Gecko 内部でセキュリティチェックを行うのではなく、読み込み時のコンテキスト情報を Gecko から提供するようしたため、適切なセキュリティチェックを Necko が一括して行えるようになりました。今回の新しい技術では、ネットワーク越しにデータ(スクリプトCSS、画像など)をリクエストする時点において、イミュータブルな loadinfo-object を作成し、読み込み処理全体を担う各ネットワークリクエストに紐付けます。また、サーバサイドでのリダイレクトを受けたリソースの読み込みについても、同じセキュリティチェックを行えるような仕組みになっています。この新しい実装は Firefox 53 ですべて適用される予定となっていますが、実装に関する詳細な解説は Enforcing Content Security By Default within Web Browsers (DOI 10.1190/SecDev.2016.8) を参照してください(この文書は 2016 年 11 月 4 日に IEEE International Conference on Cybersecurity Development で発表されたものです)。