Mozillaは、重大な脆弱性を修正して、JavaScript JITコンパイラのセキュリティ向上を含めたFirefox 46をリリースした。
46の修正の大半は、セキュリティとパフォーマンスの向上である。10個の脆弱性修正のうち、1つは重大、4つは高影響、残りの6個は中程度にランクされている。
重要な問題は、"十分な努力で"潜在的に任意のコードを実行できる可能性があり、"特定の状況下でメモリ破壊"の形跡を示すバグがあるとチームはその他メモリの安全性に関する危機として説明する。
高影響の問題はFirefox for Androidの脆弱性にあり、モバイルデバイスの方向データとモーションセンサーを使っている時、攻撃者はタッチアクションを推測できる。Mozillaのレポートでは、これはユーザーのプライバシーを侵害して、"他のユーザーの活動とともに入力されたPINコードのデータ"を明らかにする可能性がある。
このリリースではJavaScript Just In Time (JIT)コンパイラに重要なアップデートがある。 ブログの投稿においてFirefoxでW^X JIT-codeを有効にするで MozillaのソフトウェアエンジニアJan de Mooij氏は次のように言う
(これまでのFirefoxのものを含む)ほとんどすべてのJITはRWX(read-write-execute)権限を持つメモリページを割り当てる。JITは一般的に(たとえばインラインキャッシュに使う)パッチコードと書き込み可能なメモリを必要とし、パフォーマンスのオーバーヘッドなしで実行できる。
しかしながらde Mooij氏は、これはRWXページはバグの悪用を簡単にして、メモリの破壊とセキュリティの両方に問題を引き起こすと言う。Firefox 46においてJITコードページはデフォルトで書き込み不可にしている。
この変更に対するコメントにおいてde Mooij氏は、W^Xは"完全な"もしくは"すべての攻撃を止める銀の弾丸"ではなかったが、それは"確かに悪用が難しくなった...わずかな(比較的短い)コードパスは、RWコードと、非常に短いタイムウィンドウにだけアクセス権を持つ。"
MozillaはまたFirefox 46で多くの問題を修正し、WebRTCにおいてユーザーのための安定性と性能の両方を改善した
AndroidのFirefoxユーザーにはいくつかの新しいアップデートがもたらされる。それには、URLのリストをバックグラウンドでタブを開く通知、自動補完のためのデフォルトドメインの導入、そして実行時のパーミッション要求が含まれる。Firefox 46ではAndroidのHoneycombサポートが削除され、Firefoxアカウントの利点であるFirefox Sync 1.1のサポートも削除される。
Linux/GNUユーザーにおいては、Firefox 46は、GNOMEとその他のデスクトップに待望のGTK3が統合されている。
46リリースには開発者のためにドミネーターと呼ばれるメモリツールの新しいビューが含まれている。
"あなたのサイトで確保されているオブジェクトに'保持されているサイズ'を理解するために有用"でドミネーターツリーは多くのメモリを保持しているノードを表示する。
これは"ノードが保持するサイズ、合計のバイト数とパーセンテージ"、"ノードの浅いサイズ、合計のバイト数とパーセンテージ"、"ノードの名前とメモリのアドレス"を提供する。
Firefox 47の保持パスパネルは、単一ノードの5つの最短保持パスを表示し、ガベージコレクトされてから保持されているすべてのノードを確認できる。パスを保持することで、オブジェクトへの参照が維持されていることでリークしていることを確認できる。
バージョン46の完全なリストはリリースノートで提供されている。
MozillaはFirefoxに参加したい人を歓迎しており、Firefoxに貢献したいInfoQ読者には多くの方法がある。オプションの完全なリストはMozilla Developer Networkに提供されており、またHow Toガイドも公開されている。