Adobe Flash Playerに存在するゼロデイ脆弱性「CVE-2014-0515」の解析

Adobe は、2014年4月28日(米国時間)、Adobe Flash Player に存在するゼロデイ脆弱性が確認され、このゼロデイ脆弱性に対するセキュリティ情報を公開しました。

トレンドマイクロは、問題の脆弱性を狙った攻撃に利用されたエクスプロイトコードを解析したところ、他の脆弱性との関連性を複数確認し、これらの脆弱性は、Flash Player 以外にも他のソフトウェアに存在するものも含みます。今回、問題の脆弱性の利用がどのように実行されたかについての主要な点について説明します。

■問題の脆弱性利用について
本質的には、問題の脆弱性は、Flashオブジェクト内のコンパイルされた shader(シェーダ)を解析する際に起こるバッファオーバーフローです。このオーバーフローは、隣接する Vectorオブジェクトを含むメモリバッファを上書きします。攻撃者は、隣接する Vectorオブジェクトの length(長さ)を上書きします。ここから、攻撃者は、いくつかのプロセスを実行し、最終的に任意のシェルコードを実行することが可能になります。

このエクスプロイトコードは、まずバッファオーバーフローを利用し、隣接する Vectorオブジェクトの長さを上書きします。この破損した Vector は、隣接する Vectorオブジェクトに非常に大きな長さの値を割り当てるために利用される可能性があります。そして、この Vectorオブジェクトは、PC のメモリ領域を閲覧するのに利用され、メモリレイアウトの再配置および対象のデータの検索を行います。この特定の手法は、かなり一般的なもので Adobe Reader の脆弱性「CVE-2013-0640」や、Internet Explorer(IE)の脆弱性「CVE-2013-3163」、「CVE-2014-0322」および「CVE-2014-1776」などでも利用されました。

この破損した Vector の要素は、Flashオブジェクト「FileReference」のアドレスを確認し、偽の仮想テーブルポインタと置き換えるのに利用されます。この偽の仮想テーブルポインタは、シェルコードを指し示す関数「Cancel」のみを含みます。「FileReference.Cancel」を読み込むと、この攻撃の任意のシェルコードが実行されます。これは、まったく同じではありませんが、「CVE-2014-0322」や「CVE-2014-1776」で利用された Soundオブジェクトを利用し、「Sound.toString()」を実行させる攻撃手法と類似しています。

この攻撃は、メモリ領域を思い通りに制御することができるため、セキュリティ機能「Data Execution Prevention(データ実行防止、DEP)」を回避するのは、比較的単純です。攻撃者は、Flash ActiveX プラグイン「Flash32_12_0_0_70.ocx」に存在する特定の関数を検索します。この関数は、バッファアドレスとバッファ長の 2つのパラメータを受け取り、バッファを実行可能にします。このアドレスは、偽のオブジェクト「FileReference」の関数「Cancel」のアドレスを置き換えるのに利用されます。この受け取り後、最初の段階のシェルコードが実行可能になります。ここで留意すべきは、この攻撃は、攻撃手法「return-oriented programming(ROP)」をまったく利用せずに行われたということです。

■トレンドマイクロの対策
Adobe は、問題の脆弱性を修正する Adobe Flash の更新版を公開しました。この更新版により、Flash 13.0.0.206 へ更新されます。トレンドマイクロ製品をご利用のユーザは、今回の攻撃に対応したさまざまなソリューションが利用可能です。弊社のブラウザ向けの脆弱性利用対策技術「ブラウザガード」は、問題の脆弱性の利用を試みる Webサイトを予防的に検出します。

トレンドマイクロ製品をご利用のユーザは、弊社のクラウド型セキュリティ基盤「Trend Micro Smart Protection Network」によって守られています。特に「ファイルレピュテーション」技術により、脆弱性を攻撃する不正な Flashファイルを「SWF_EXPLOIT.RWF」として検出し、削除します。

【更新情報】

2014/05/07 16:40 弊社サーバ向け総合セキュリティ製品「Trend Micro Deep Security(トレンドマイクロ ディープセキュリティ)」および「Trend Micro 脆弱性対策オプション(ウイルスバスター コーポレートエディション プラグイン製品)」をご利用のお客様は、以下のフィルタを適用することにより、問題のゼロデイ脆弱性を利用した攻撃から保護されます。

  • 1006031 – Adobe Flash Player Buffer Overflow Vulnerability (CVE-2014-0515)
  • 1006044 – Restrict Adobe Flash File With Embedded Pixel Bender Objects

参考記事:

  • Analyzing CVE-2014-0515 – The Recent Flash Zero-Day
    by Jack Tang (Threats Analyst)
  •  翻訳:木内 牧(Core Technology Marketing, TrendLabs)