この脆弱性は、Cisco Talos の Tyler Bohan によって検出されました。
ファイル形式にはさまざまな種類がありますが、その多くは特定の業界の特定の用途向けに設計されています。Apple は、OS X プラットフォーム上でさまざまな形式の画像データにアクセスするためのインターフェイスとして、複数の API を提供しています。Talos は、OS X での画像処理に関連したリモート コード実行の脆弱性として、次の脆弱性を公開しました:TALOS-2016-0171、TALOS-2016-0180、TALOS-2016-0181、TALOS-2016-0183、TALOS-2016-186。
TALOS-2016-0171
Tagged Image File Format(TIFF)(CVE-2016-4631)
Tagged Image File Format(TIFF)はロスレス形式で画像を保存できるため、グラフィック アーティストや写真家、出版業界でよく使用されるファイル形式です。TIFF は 1980 年代の中頃に、標準的なスキャン画像ファイル形式を確立するという試みの中で開発されました。Cisco Talos は、Image I/O API が、タイル化された TIFF 画像ファイルを解析・処理する際に脆弱性があることを発見しました。特別に細工された TIFF 画像ファイルが Image I/O API を使用するアプリケーションによってレンダリングされると、ヒープ ベースのバッファ オーバーフローが発生し、システムやデバイスでリモート コードが実行される可能性があります。
この脆弱性は、タイル化された TIFF 画像を、Apple の Image I/O API を使用してレンダリングする任意のアプリケーションで発生するため、特に注意が必要です。なぜなら攻撃者は幅広い攻撃ベクトルを利用して、この脆弱性を利用するペイロードを送り込むことができるからです。こうした攻撃ベクトルには、iMessage、悪意ある Web ページ、MMS メッセージ、およびその他の悪意ある添付ファイルなどが含まれます。Apple の Image I/O API を使用してレンダリングを行う任意のアプリケーションでこうしたファイルを開こうとすると、脆弱性が利用される可能性があります。
さらに、やり方によってはユーザの操作を介さずに脆弱性が悪用されてしまう可能性すらあります。iMessage などの多くのアプリケーションでは、デフォルトの設定により、画像ファイルを受信すると自動的にレンダリングが行われてしまうからです。この脆弱性は、OS X 10.11.5 および iOS 9.3.2 で確認され、これら以前のすべてのバージョンにも存在するものと考えられています。また、影響を受けるデバイスは相当数に上ります。
TALOS-2016-0180、TALOS-2016-0181
OpenEXR ファイル形式(CVE-2016-4629、CVE-2016-4630)
OpenEXR は、ハイダイナミックレンジの画像ファイル形式です。Industrial Light & Magic によって特撮などの用途用に開発され、コンピュータ グラフィックスの分野で広く利用されています。この形式では、ピクセルに保存される情報のビット深度を柔軟に指定できます。悪意のある OpenEXR ファイルは、この柔軟性を悪用します。Apple の Image I/O API に、意図された書き込み先バッファ外に画像情報を書き込ませるのです。
さらに Image I/O には、OpenEXR ファイルに含まれる B44 圧縮データの処理に関する脆弱性が存在します。圧縮データのサイズは、EXR ファイル内で指定されますが、この値が int 値に保存できる値よりも大きいと、保存できなかった部分はメモリの意図されたスペース以外のスペースに書き込まれてしまいます。
いずれの脆弱性においてもメモリの内容を操作して必要な設定を行えば、デバイス上でリモートコードを実行することが可能になります。
TALOS-2016-0183
Digital Asset Exchange ファイル形式(CVE-2016-1850)
COLLADA(COLLAborative Design Activity)としても知られる Digital Asset Exchange ファイル形式は、デジタル コンテンツ作成ツールがファイル交換に使用する XML のファイル形式です。こうしたツールでは、Digital Asset Exchange ファイル形式を使用できない場合、互換性のないファイル形式が使用されます。Apple の SceneKit は、Digital Asset Exchange ファイルをサポートする 3D モデリング フレームワークのひとつです。
Digital Asset Exchange ファイルに特別な細工を施して SceneKit に渡せば、別の種類のファイルとして認識させることが可能です。その場合、ファイルの誤認識を利用して、領域外メモリにアクセスさせることが可能です。この脆弱性を悪用すれば、デバイス上でリモート コードを実行させることが可能です。
注:TALOS-2016-0183 は、OSX 10.11.5 にて修正されました。
TALOS-2016-0186
BMP ファイル形式(CVE-2016-4637)
BMP ファイル形式は歴史が古く、その構造は単純です。ヘッダには、サイズ、レイアウト、画像タイプに関する情報が格納されています。このファイル形式では、画像の高さを表すプロパティの処理に脆弱性が存在します。特別に細工した BMP 画像ファイルを保存してから開き、サイズ情報の一部を操作すると、この脆弱性を悪用することが可能です。こうしたファイルを Apple の Core Graphics API を使用する任意のアプリケーションで開くと、意図された領域の外部への書き込みが行われ、リモート コードの実行が可能になります。
既知の脆弱性バージョン
OS X Mavericks v10.9.5、OS X Yosemite v10.10.5、OSX El Capitan 10.11.5
iOS 9.3.2、watchOS 2.2.1、tvOS 9.2.1
TALOS-2016-0180、TALOS-2016-0181
OS X Mavericks v10.9.5、OS X Yosemite v10.10.5、OSX El Capitan 10.11.5
OSX El Capitan 10.11.4
OS X Mavericks v10.9.5、OS X Yosemite v10.10.5、OSX El Capitan 10.11.5
iOS 9.3.2、watchOS 2.2.1、tvOS 9.2.1
まとめ
画像ファイルは、Web や電子メールを通じて疑いをもたれずに簡単に配信できるため、攻撃者にとっては理想的な攻撃ベクトルです。Apple の Core Graphics API、SceneKit、Image I/O は、OS X プラットフォーム上でソフトウェアによって幅広く利用されるため、これらの脆弱性は特に危険です。
こうした脆弱性を解決するために、ソフトウェアにはパッチを適用して最新バージョンに更新する必要があります。Talos はお客様を保護するために、こうした脆弱性悪用の試みを検出する Snort ルールをリリースしました。さらに、通常業務において一度も、あるいはめったに遭遇しないタイプのファイルは、ネットワーク ゲートウェイ上でブロックすることを検討したほうがよいでしょう。
今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新のルールの詳細については、Firepower Management Center、FireSIGHT Management Center、または Snort.org を参照してください。
Snort ルール:16222、39634 ~ 39635、39597 ~ 39632
その他のゼロデイ レポートおよび脆弱性レポート、情報については、こちらをご覧ください。
http://talosintel.com/vulnerability-reports/
本稿は 2016年7月19日に Talos Group のブログに投稿された「Vulnerability Spotlight: Apple Remote Code Execution With Image Files」の抄訳です。