脆弱性の発見者:Marcin Noga、Lilith Wyatt、Aleksandar Nikolic(各者 Cisco Talos)
概要
Talos では、freedesktop.org Poppler PDF ライブラリに複数の脆弱性を発見しました。これらの脆弱性がエクスプロイトされると、システムが完全に支配される可能性があります。特別に細工された PDF ドキュメントを開くと、悪意のあるコードがローカル ユーザの権限で実行される危険性があります。
詳細
「Poppler」は PDF ファイルを表示するための共有ライブラリで、各種のエンタープライズ/オープンソース ソリューション(たとえば Gimp)内でミドルウェアとして使用されています。Poppler は XPDF をベースとしており、PDF ISO 規格に完全準拠しています。Talos では、Poppler ライブラリ内に、リモートでコードが実行される脆弱性を 3 件発見しました。
TALOS-2017-0311 / CVE-2017-2814:Poppler PDF Image Display DCTStream::readScan() コード実行の脆弱性
Poppler-0.53.0 の画像レンダリング機能に、エクスプロイト可能なヒープ オーバーフローの脆弱性を発見しました。細工された PDF により、メモリ割り当て後に画像のサイズ変更が引き起こされ、DCTStream::readScan() 関数内でヒープ破損が引き起こされる可能性があります。これにより、ローカル ユーザの権限でコードが実行される危険性があります。
TALOS-2017-0319 / CVE-2017-2818:Poppler PDF Image Display DCTStream::readProgressiveSOF() コード実行の脆弱性
Poppler-0.53.0 の画像レンダリング機能に、エクスプロイト可能なヒープ オーバーフローの脆弱性が発見されました。細工された PDF を開くと、画像のレンダリング中に表示色数が非常に多くなり、ヒープ破損が引き起こされる可能性があります。この脆弱性により、細工された PDF ファイルによりローカル ユーザの権限で悪意のあるコードが実行される危険性があります。
この脆弱性は以前から発見されており(CVE-2005-3627)、DCTStream::readBaselineSOF に修正プログラムも適用されていましたが、readProgressiveSOF 関数ではバグが見逃されていました。
TALOS-2017-0321 / CVE-2017-2820:Poppler PDF ライブラリにおけるコード実行の脆弱性(JPEG2000 レベル)
Poppler 0.53.0 ライブラリの JPEG 2000 画像解析機能に、エクスプロイト可能な整数オーバーフローの脆弱性が発見されました。このバグを突いた PDF ファイルにより、整数オーバーフローが引き起こされる可能性があります。これにより、コード実行フローの後半部ではヒープ上でメモリが上書きされ、ローカル ユーザの権限で任意のコードが実行される危険性があります。上記 2 件の脆弱性と同様に、この脆弱性をエクスプロイトするには、ライブラリを使用するアプリケーション上で悪意のある PDF をユーザから開く必要があります。脆弱なアプリケーションの一例は、最新バージョンの Ubuntu Linux に同梱されているデフォルト PDF リーダーの「Evince」です。
補足事項
TALOS-2017-0311 および TALOS-2017-0321 は Poppler 内部の(最新でない)JPEG/JPEG2000 デコーダに存在する脆弱性です。重要な点ですが、これらのデコーダは決して使用しないでください。この点は Poppler のドキュメンテーションでも強く奨励されています。Poppler ライブラリを構築する際は、libjpeg や openjpeg といった堅牢な最新の外部実装の利用を強く推奨します。しかしデフォルトの Ubuntu 上では、JPEG2000 に対して堅牢な最新の外部実装が利用されない(最新でないコードが使用される)ため、Ubuntu でコンパイルされたバージョンには本脆弱性が発生します。
悪意のある PDF ファイルに起因するクライアント側の攻撃は日常的に確認されています。社内で Popper ベースのアプリケーションを使用している場合は、標的型攻撃でこれらの脆弱性が狙われる危険性があります。今回の件は、オペレーティング システムだけでなく、あらゆるアプリケーションも最新の状態に保つことの重要性を物語っています。
技術的な詳細情報については、次の Talos 脆弱性レポートを参照してください。
TALOS-2017-0311
TALOS-2017-0319
TALOS-2017-0321
カバレッジ
今回の脆弱性をエクスプロイトする試みは、以下の Snort ルールにより検出できます。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新ルールの詳細については、FireSIGHT Management Center または Snort.org を参照してください。
Snort ルール:42273-42274、42319 – 42320、42352-42353
本稿は 2017年7月7日に Talos Group のブログに投稿された「Vulnerability Spotlight: TALOS-2017-0311,0319,0321 – Multiple Remote Code Execution Vulnerability in Poppler PDF library」の抄訳です。