kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。 Ubuntuの最新情報も紹介しています。

ディストリビューションがWebKitGTK+のアップデートを行わず、脆弱性を残したままにしている

  GNOMEのWebKitGTK+プロジェクトで活動しているMichael Catanzaro氏が私見であるとしながらも、WebKitGTK+をアップデートしてもWebKitGTK+を配布しているディストリビューションやコミュニティーがアップデートされたWebKitGTK+をユーザーに配布せず、脆弱性や不具合をそのままにしている、と警鐘を鳴らしています。


WebKitとGTK+

  まずは、GTK+とWebKitの関係です。


  WebKitとは

    WebKitとは、HTMLを解釈してユーザーに整形した文章や画像などを表示するソフトウェアです。
    このようなソフトウェアのことを、「HTMLレンダリングエンジン」と言います。

    「HTMLレンダリングエンジン」は、ブラウザーにとって要となるソフトウェアです。

    ユーザーから見ると、サイトが正しく表示されるか、パフォーマンスは良いか、メモリの使用量は適切か、といった視点で見ることが多いでしょう。
    ブラウザーは「HTMLレンダリングエンジン」を実装しています。

    「HTMLレンダリングエンジン」には、いくつか種類があります。
    WebKitも「HTMLレンダリングエンジン」の1つです。

  WebKitといえばSafari

    WebKitを実装しているブラウザーと聞いて真っ先に候補に上がるのがSafariでしょう。
    SafariはOS Xのデフォルトのブラウザーです。

    Webkitは、Appleが2001/6/25にKDEのHTMLレンダリングエンジンである「KHTML」と、同様にKDEのJavaScriptエンジンである「KJS」をフォークして開発したものです。
    その後2005/6/7にWebKitはオープンソースとして公開されます。

  Webkit2へ

    2010/4/8、WebKitプロジェクトはWebKitを再設計したWebKit2を開発するとアナウンスしました。
    2011/7/20、Safari 5.1でWebKit2に移行しました。

    ここではまとめてWebkitと表現します。

  Google ChromeもWebKitを採用していた

    「Google Chrome」も 「HTMLレンダリングエンジン」にWebKitを採用していました。
    2013/4/3に開発方針の違いからWebKitをフォークし、Blinkへ移行しています。

  WebKitとGTK+

    GTK+はユーザーインターフェースを構築するためのフレームワークです。
    GTK+はGNOMEが主体となって開発しているフレームワークです。

    GNOMEが開発するアプリの多くは、このGTK+を利用してユーザーインターフェースを構築しています。
    Ubuntuでデフォルトでインストールされるアプリの多くは、GNOMEが提供しているアプリです。
    Ubuntuでも多くの場面でGTK+が使用されています。

    このGTK+でWebkitを利用できるように移植を行っているプロジェクトが、WebKitGTK+です。
    WebKitGTK+は、GNOME環境における標準的な 「HTMLレンダリングエンジン」です。
    例えば Epiphany(GNOME Web)やMidoriは、WebKitGTK+を利用したブラウザーです。
    他にも様々なアプリでWebKitGTK+が利用されています。

  • Anjuta
  • Banshee
  • Bijiben (GNOME Notes)
  • Devhelp
  • Empathy
  • Evolution
  • Geany
  • Geary
  • GIMP
  • gitg
  • GNOME Builder
  • GNOME Documents
  • GNOME Initial Setup
  • GNOME Online Accounts
  • GnuCash
  • gThumb
  • Liferea
  • Midori
  • Rhythmbox
  • Shotwell
  • Sushi
  • Yelp (GNOME Help)

  WebKitGTK+の種類

    GTK+がそうであるように、WebKitGTK+には複数の種類(メジャーバージョン)が存在しています。

WebKitGTK+ 概要
webkitgtk-1.0 GTK+2向けWebKit1
webkitgtk-3.0 GTK+3向けWebKit1
webkit2gtk-3.0 GTK+3向けWebKit2
webkit2gtk-4.0 GTK+3向けWebKit2

  「webkitgtk-X.0」は、2014/3に「WebKitGTK+ 2.4」がリリースされた後、削除されました。
  2014/9にリリースされた「WebKitGTK+ 2.6」では、「webkit2gtk-4.0」のみリリースされました。
    WebKitGTK+を利用するアプリがどのWebKitGTK+を利用するかにより、サポート状況が変わります。
    推奨されるのは、「webkit2gtk-4.0」の利用です。

UbuntuとWebKitGTK+

  Ubuntuでは、公式のリポジトリーでWebKitGTK+を提供しており、ユーザーはWebKitGTK+を簡単にインストールできます。

  しかしWebKitGTK+が配置されているリポジトリーは「universe」リポジトリーであり、「universe」リポジトリーに配置されているソフトウェアはサポートの対象になりません。


  WebKitGTK+に脆弱性が見つかりWebKitGTK+がアップデートされても、アップデートされたWebKitGTK+が配布されるとは限りません。
  ブラウザー(HTMLレンダリングエンジン)の脆弱性は致命的な問題につながります。
  WebKitGTK+を使用したブラウザーを利用する場合は、この点に注意する必要があります。

  FirefoxやThunderbird

    Ubuntuにデフォルトでインストールされるブラウザーやメールクライアントアプリは「Firefox」や「Thunderbird」であり、これらのソフトウェアは「main」リポジトリーにあります。
    「main」リポジトリーにあるソフトウェアは、サポートの対象になります。

    また「HTMLレンダリングエンジン」はWebKitGTK+ではなくGeckoを採用しています。

    「Firefox」のサポートは以下のようになっています。


    同様に「Thunderbird」のサポートは以下のようになっています。



  以下Ubuntuに関する部分の意訳です。

注意:
この投稿の内容は私見であり、私の雇用者やWebKitGTK+プロジェクトの公式見解ではない。

主要なブラウザーは、セキュリティーアップデートをユーザーに直接配布している。
なので多くのユーザーは、セキュリティーアップデートに関する心配をしなくても良い。

しかしLinuxディストリビューションのユーザーは、ディストリビューションのアップデートポリシーに影響を受ける。

WebKitGTK+の開発元が脆弱性を修正したWebKitGTK+をリリースしても、ディストリビューションがその修正されたWebKitGTK+をタイムリーに配布するとは限らない。

昨年AppleはWebkitの100を超える脆弱性を修正した。
Appleは修正されたセキュリティーアップデートをタイムリーに配布するため、Appleのユーザーはセキュリティーアップデートに関する心配をしなくても良い。

WebKitGTK+も同様に修正されたWebkitを取り込み、リリースを行っている。

歴史的にWebKitGTK+では、セキュリティーアップデートとというリリース方式を採用していない。
もちろん不具合や脆弱性の修正を行ったWebKitGTK+をリリースしていたが、脆弱性を識別するCVEを発行していなかった。

開発者は、セキュリティーの問題をCVEで追跡する。
CVEがないということはセキュリティーの問題がないということであり、ディストリビューションはいくつかの例外を除き修正されたWebKitGTK+をユーザーに配布しなかった。

この状況は、多くのアプリにとってそれほど問題のある話ではない。
しかしウェブブラウザーやメールクライアントアプリからすれば、致命的な問題である。

そこで我々はこの状況の改善するため、2015/1/26に初めてセキュリティアドバイザリーをCVEの識別子と共に発行した。
このセキュリティアドバイザリーの発行により、各ディストリビューションが修正されたWebKitGTK+をユーザーに配布してくれることを期待した。

その後Web Engines Hackfestイベントでの結果から、2回目のセキュリティアドバイザリーを2015/12/28に発行した。
このセキュリティアドバイザリーには、130を超える脆弱性が報告されている。
ディストリビューションやコミュニティーが気づけるよう、oss-securityメーリングリストにこの件を投稿した。
これが今から1ヶ月前の出来事である。(2016/1)

[Ubuntuの対応]
UbuntuのWebKitGTK+のアップデートには一貫性がない。

Ubuntu 14.04リリース時、インストールできるWebKitGTK+のバージョンは「2.4.0」であった。
その後アップデートされ、「2.4.8」がインストールできるようになった。
しかし8ヶ月以上前にリリースされた「2.4.9」は未だにUbuntuのユーザーに配布されていない。

Ubuntu 15.10リリース時、インストールできるWebKitGTK+のバージョンは「2.8.5」であった。
その後アップデートされたWebKitGTK+はUbuntuのユーザーに配布されていない。
最新版のWebKitGTK+と比較すると、「2.8.5」には約40の脆弱性が残ったままになっている。

Ubuntuでは、WebKitGTK+が「main」リポジトリーではなく「universe」リポジトリーにあり、セキュリティーサポートの対象から外されている。
Ubuntuの多くのアプリで使用されているWebKitGTK+が「universe」リポジトリーにあることにUbuntuユーザーは驚くだろう。

[WebKit API]
WebKit2のAPIに対応したWebKitGTK+ 2.0は、2013/5に安定版をリリースした。
WebKitGTK+ 2.0には、以下の3種類のAPIを含んでいる。

  • webkitgtk-1.0(GTK+2向けWebKit1)
  • webkitgtk-3.0(GTK+3向けWebKit1)
  • webkit2gtk-3.0 (GTK+3向けWebKit2)

2014/5にWebKitGTK+ 2.4をリリースした後、WebKit1 APIを削除した。
WebKit1 APIを利用していたアプリは、WebKit2 APIへ移行する期間が丸1年あった。

2014/9にリリースしたWebKitGTK+ 2.6では、webkit2gtk-4.0のみリリースしている。
webkit2gtk-4.0はwebkit2gtk-3.0とAPI/ABIの互換性があり、ほぼ同じだ。
できればGTK+ 4.0までこの互換性を確保するつもりだ。

WebKit1 APIを利用しているアプリをWebKit2 APIに対応させるには、それ相応のコストが必要だ。
まずGTK+2で動作するアプリは、GTK+3に移行する必要がある。
WebKit2 APIではWebViewにGTK+ウィジェットを埋め込むことはできない。
似たような動作を提供するには、HTML5で書き直す必要がある。

さてご存知の通りWebKit2 APIに移行していないアプリがたくさんある。
ディストリビューションがWebKitGTK+ 2.4を提供しないとなると、動作しなくなるアプリが出てくる。
そこでディストリビューションは、WebKitGTK+ 2.4と新しいバージョンのWebKitGTK+ を提供する。
しかしWebKitGTK+ 2.4は昨年の5月以降アップデートしておらず、約130の脆弱性が残ったままだ。

[どうすれば]
WebKitGTK+ 2.4から新しいWebKitGTK+に移行していないアプリのためにどうすればよいのだろうか?

いくつか考えられることがある。

1.WebKitGTK+ 2.4にもセキュリティーの修正を適用する(バックポートする)
  この方法は非常に時間がかかる作業であり、負担が大きい。
  この方法は困難だ。

2.webkitgtk-1.0とwebkitgtk-3.0を復活させる
  現在のWebKitGTK+に廃止になったwebkitgtk-1.0とwebkitgtk-3.0を復活させる方法だ。
  これも大変な作業だ。
  元々これらのメンテナンスコストを削除するために廃止したのだ。

3.WebKitGTK+ 2.4以前のパッケージを削除する
  ディストリビューションがWebKitGTK+ 2.4以前のパッケージを提供しない方法だ。
  この方法は、アプリのWebKit2 APIへの移行を強要する。

  ただ多くのアプリは、WebKit2 APIへの移行に人手を割けないだろう。
  結果、移行できないアプリは利用できなくなってしまう。

  しかしこの方法が最も現実的な方法だろう。
 

参考



関連コンテンツ
同一カテゴリーの記事
コメント
オプション