web-dev-qa-db-ja.com

JPEG 2000 / TALOS-2016-0193 / CVE-2016-8332の影響を受けるクライアントソフトウェア

JPEG 2000ファイル形式の脆弱性 発見されました。

この記事では、このバグについて議論する際に OpenJPEG の実装について言及しているようですが、脆弱な関係者が誰なのかは明確ではありません。

  1. 脆弱性はこのライブラリを利用するソフトウェアに固有のものですか?
  2. この画像形式を作成または表示するときに脆弱性は発生しますか?
  3. すべての視聴者が脆弱ですか?視聴者が脆弱かどうかはどのように確認できますか? (Adobe、Chrome組み込みのリーダーなど)
2

完全なCISOC TALOSレポート は、脆弱性を非常に詳細に説明しています。 @dandavisのコメントはすでにあなたの質問のほとんどに答えていますが、私はそれを繰り返すことができます:

脆弱性はこのライブラリを利用するソフトウェアに固有のものですか?

はい、影響を受けるのはlibopenjp2.so.2.1.1だけです(おそらく古いバージョンです)。他のJPEG2000ライブラリは脆弱ではありません。

この画像形式を作成または表示するときに脆弱性は発生しますか?

巧妙に作成された画像を表示すると発生します。ライブラリは誤ってMCC(モーション補正)を解析します。つまり、安全に十分ではありません。結果として任意のポインターになるMCを作成し、次のMCがそのポインターに何かを書き込むことができます。一般に、任意のヒープ位置に書き込むことができます。

すべての視聴者が脆弱ですか?

実際には、JPEG2000が実際にキャッチされなかったため、かなり限られた数のビューアが脆弱です。レポートによると、注目すべき脆弱な閲覧者は、Poppler、MuPDFおよびPdfiumです。 Poppler いくつかのPDFレンダリングアプリケーションでライブラリとして使用されるため、最も注目に値します。

視聴者が脆弱かどうかはどのように確認できますか? (Adobe、Chrome組み込みのリーダーなど)

脆弱なバイナリを特定する方法をいくつか見てみましょう。

Pooplerは最も有名なソフトウェアパッケージであり、そのpdfinfopdftocairopdfimages(およびその他)は明らかに脆弱です。 Linuxの場合:

[root@haps ~]# ldd /usr/bin/pdfimages | grep libopenjp2
    libopenjp2.so.7 => /usr/lib/libopenjp2.so.7 (0x00007f0be0bfa000)
[root@haps ~]# ls -l /usr/lib/libopenjp2.so.7
lrwxrwxrwx 1 root root 19 Aug  4 21:08 /usr/lib/libopenjp2.so.7 -> libopenjp2.so.2.1.1

はい、間違いなく脆弱なopenjp2 2.1.1を使用しています。

ありがたいことに、今日のほとんどのソフトウェア*では、cairoの代わりにpopplerライブラリを使用しています。次に例を示します。

[root@haps ~]# ldd /usr/bin/gimp | grep pop
[root@haps ~]# ldd /usr/bin/gimp | grep cairo
    libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00007f4ce1d9f000)
    libcairo.so.2 => /usr/lib/libcairo.so.2 (0x00007f4ce110f000)

上記のメソッドはlddを使用してlibopenjp2への依存関係をチェックします。しかし、それは弾丸を証明する方法ではありません。ソフトウェアは実行時に共有ライブラリをロードします。たとえば、これを投稿しているブラウザーはJPEG2000画像にlibopenjp2を使用しません。

[root@haps ~]# lsof /usr/lib/libopenjp2.so.2.1.1
[root@haps ~]# lsof /usr/lib/libjpeg.so.8.1.2
COMMAND PID     USER  FD   TYPE DEVICE SIZE/OFF    NODE NAME
firefox 522 grochmal mem    REG    8,3   432880 3844022 /usr/lib/libjpeg.so.8.1.2

ただし、すべてのJPEGレンダリングにlibjpegを使用します。 JPEG2000の場合でも(JPEG2000アトムはオプションです)。

追記

libopenjp2 2.1.2 脆弱性を修正する機能はすでに利用可能です。脆弱性の公開は、このバージョンがリリースされた1日後に行われました。つまり、責任ある公開でした。 (数時間前に自分のマシンで更新したところです。)


*この例ではGIMPを使用していますが、これは余分なライブラリをロードする可能性のあるプラグインを使用しているため、特に良い例ではありません(@ MichaelSchumaher を思い出してくれてありがとう)。一方、GIMPのJPEG2000プラグインは、JPEG2000仕様自体と同様に、実際にはキャッチしませんでした。 プラグイン は2008-2010年頃は使用量が少なかったが、それ以来使用されなくなった。

GIMPには、popplerを使用するfile-pdf-loadもあります。さらに、誰でもlibopenjp2を含むGIMPプラグインを作成できるため、ライブラリをメモリにロードし、それを使用してJPEG2000を開くことができます。これはGIMPに限定されているわけではありませんが、追加の共有ライブラリをロードするプラグインを許可するアプリケーションです。

要約すると、libopenjp2を使用するプラグインを明示的にアプリケーションにロードしている場合、CVE-2016-8332に対して脆弱です(更新されたライブラリを使用しない限り)。

3
grochmal