この脆弱性は、Cisco Talos の Tyler Bohan によって検出されました。
Talos は、LibTIFF ライブラリで複数の脆弱性(TALOS-2016-0187、TALOS-2016-0190、TALOS-2016-0205)を公開しています。1 つ目の脆弱性(TALOS-2016-0187)は、攻撃に利用される可能性のあるヒープ ベースのバッファ オーバーフローで、LibTIFF TIFF2PDF 変換ツールに影響します。2 つめの脆弱性(TALOS-2016-0190)は、TIFF イメージの解析と処理に影響し、最終的にはリモート コード実行の原因になります。最後の脆弱性(TALOS-2016-0205)は、LibTIFF の PixarLogDecode API で圧縮された TIFF 画像を処理する際に発生するヒープ ベースのバッファ オーバーフローで、攻撃に利用される可能性があります。不正な形式の TIFF ドキュメントを処理するようにユーザを仕向けることのできる攻撃者は、これらの脆弱性の 1 つを使って、標的システムでリモート コードを実行させることができます。
Tagged Image File Format (TIFF )は、ロスレス形式で画像データを保存する一般的なファイル形式として、画像操作の業界が急成長していた 1980 年代半ばに開発されました。それ以来、TIFF ファイルはグラフィック アート業界で幅広く採用されただけでなく、電子ファクス システムにも取り入れられました。
LibTIFF は、Windows および UNIX ベースのプラットフォーム(Linux と MacOS X を含む)でサポートされるソフトウェア ライブラリとして無料配布されており、それによってシステムによる TIFF 形式ファイルの読み取り、書き込み、操作が可能になります。このファイル形式の強みとして、その拡張性の高さがあります。この形式には、ファイルに含まれるデータに関する特定の情報を表す多数のタグが記述されています。タグの中には、TIFF の標準規格によって定義され、このファイル形式のインタプリタによってサポートされている必要があるものと、同じように定義されているものの、サポートおよび認識の程度が異なるものがあります。
CVE-2016-5652 (TALOS-2016-0187) – LibTIFF tiff2pdf JPEG 圧縮テーブルのヒープ バッファ オーバーフロー
CVE-2016-8331 (TALOS-2016-0190) – LibTIFF FAX IFD エントリの解析タイプの混乱
CVE-2016-5875 (TALOS-2016-0205) – LibTIFF PixarLogDecode ヒープ バッファ オーバーフロー
詳細
CVE-2016-8331 は標準ビルドにある LibTIFF API を使用して TIFF 画像を解析および処理する際に発生します。RFC 2306 は、特に LibTIFF ライブラリ対応のファクス システムで使用する TIFF 形式内の一連のフィールドを定義します。この脆弱性は、フィールドの 1 つ「BadFaxLines」の処理に存在します。これによって、領域外メモリへの書き込みが可能になることがあります。攻撃者は特別に細工された TIFF ファイルを作成してこの脆弱性を不正利用し、影響を受けるシステム上で任意のコードを実行できます。
この記事が投稿された時点では、CVE-2016-8331 にはまだパッチが適用されていません
CVE-2016-5875 (検出者:Mathias Svensson) の脆弱性は、LibTIFF の PixarLogDecode API で圧縮された TIFF 画像が処理される際に存在します。LibTIFF は Zlib 圧縮ライブラリを使用して、TIFF 画像の中にある PixarLog の圧縮データを圧縮解除します。まず、「PixarLogSetupDecode」という関数呼び出しで、Zlib に渡すパラメータとバッファがセットアップされます。後でこのバッファは、実際に圧縮解除を実行する、Zlib ライブラリの「inflate」という関数を呼び出す際に使用されます。Zlib の「inflate」関数に渡されるバッファのサイズが小さい場合に、ヒープ オーバーフローが発生します。これがリモート コードの実行に利用される可能性があります。
最後の脆弱性である CVE-2016-5652 は、LibTIFF とバンドルされている Tiff2PDF ツール、つまり、TIFF ファイルが JPEG 圧縮を使用する際に存在します。このツールは、標準ビルド プロセスにおいてデフォルトでインストールされています。
TIFF は、画像の内部で複数の圧縮アルゴリズムをサポートします。その 1 つのアルゴリズムが JPEG 圧縮です。この脆弱性は、画像のタイル サイズを計算する際に発生します。巧妙に細工された TIFF 画像ファイルは、領域外への書き込みを可能にし、最終的にはリモート コードの実行につながります。巧妙に細工された TIFF ドキュメントを使ってこのユーティリティを使用するようにユーザを仕向けることのできる攻撃者は、ヒープ ベースのバッファ オーバーフローを引き起こし、その結果リモート コードを実行することができます。
検証済みバージョン
LibTiff – 4.0.6
カバレッジ
これらの問題に対処する LibTIFF 公式のリリースはありません。CVE-2016-5652 と CVE-2016-5875 のパッチは、CVS リポジトリ(CVE-2016 8331 のパッチは未適用)から入手する必要があります。お客様の保護のため、Talos はこうした脆弱性を悪用しようとする行為を検出するルールをリリースいたしました。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールの追加や変更がある場合がありますのでご注意ください。最新のルールの詳細については、FireSIGHT Management Center、または Snort.org をご覧ください。
Snort ルール:40525 ~ 40526、40533 ~ 40538、40539 ~ 40540
その他のゼロデイ レポートおよび脆弱性レポート、情報については、こちらをご覧ください。
http://talosintelligence.com/vulnerability-reports/
本稿は 2016年10月25日に Talos Group のブログに投稿された「Vulnerability Spotlight: LibTIFF Issues Lead To Code Execution」の抄訳です。