「Duqu 2.0」が標的型サイバー攻撃に利用したゼロデイ脆弱性「CVE-2015-2360」の解析

2015年6月、不正プログラム「Duqu 2.0」を利用した標的型サイバー攻撃が確認されました。この攻撃の一部として、いくつかのゼロデイ脆弱性を狙った攻撃が利用されました。そのうちの 1つは脆弱性「CVE-2015-2360」で、Microsoft の 6月の定例セキュリティ情報で修正されたばかりのものです(「MS15-061」)。「CVE-2015-1701」と同様、この脆弱性はカーネルモードドライバ「Win32k.sys」に存在します。攻撃者はしばしば「Win32k.sys」を攻撃して、脆弱性を利用した攻撃を緩和するセキュリティ対策製品を回避します。

この脆弱性は、オペレーティングシステム(OS)のウィンドウの処理方法に存在します。まずはその背景を説明します。

  1. アプリケーションがウィンドウを表示したい場合、以下の 2つの手順を実行する必要があります。
    1. ウィンドウクラスを登録します。これにより、OSカーネルはウィンドウ・クラス・オブジェクトを生成します。ウィンドウ・クラス・オブジェクトは、カーネル空間に存在するため、アプリケーションプログラムはユーザモードから直接アクセスすることができません。この構造は「tagCLS」と名付けられています。ウィンドウ・クラス・オブジェクトはウィンドウの形式と動作を指定します。
    2. 手順1 で登録したウィンドウ・クラス・オブジェクトでウィンドウを作成します。これにより、OSカーネルはウィンドウオブジェクトを生成します。このウィンドウオブジェクトはカーネル空間に存在するため、アプリケーションプログラムはユーザモードからは直接アクセスすることができません。このデータ構造は「tagWND」と名付けられています。
  2. 各ウィンドウには、ウィンドウメッセージを処理するためのウィンドウプロシージャがあります。ウィンドウプロシージャは、ユーザモードもしくはカーネルモードで実行可能です。どちらで実行するかは、「CSF_flags」と名付けられたウィンドウ・クラス・オブジェクトのファイルに依存します。フィールド「CSF_flags」にフラグ「Server Side Proc」がある場合、ウィンドウオブジェクトのウィンドウプロシージャはカーネルモードで実行できます。このフラグがない場合は、ウィンドウオブジェクトのウィンドウプロシージャはユーザモードで実行できます。アプリケーションプログラムが提供するウィンドウプロシージャが初期設定のウィンドウプロシージャでない場合、ウイルスプロシージャはユーザモードのみで実行されます。つまり、ウィンドウ・クラス・オブジェクトのフィールド「CSF_flags」はフラグ「Server Side Proc」を含みません。
  3. 図1:「tagCLS」のデータ構造
    図1:「tagCLS」のデータ構造

    図1 では、「tagCLS」のフィールド「CSF_flags」のデータ構造の一部を示しています。ビットごとに 1つの特性を表します。最初のビットは特性「Server Side Proc」のフラグです。

  4. 「win32.sys」には、ユーザモードで処理する作業を実行するために、ユーザモードのコールバック関数を実行して、ユーザモードに切り替える特性があります。この特性が頻繁に攻撃者に狙われます。

この脆弱性は、図2 のように要約することができます。

図2:脆弱なメッセージ処理プロセス
図2:脆弱なメッセージ処理プロセス

例えば、「WM_SetIcon」からウィンドウメッセージが送信されると、カーネルはこのメッセージを処理します。このプロセスは長いため、図2 は脆弱性に関連する部分だけを記載しています。脆弱性は、図2 の手順4 に存在します。ユーザモードから切り替えた後、オブジェクト「tagCLS」が有効かどうかを確認せずにこのオブジェクト上でいくつかの作業が続けられます。これがセキュリティ上に深刻な問題をもたらします。

■脆弱性を利用した攻撃
攻撃者は「win32k.sys」の働きについてよく精通している必要があるため、この種の脆弱性を利用した攻撃はそれほど容易ではありません。この脆弱性はいくつかの一般的な手法で攻撃することが可能です。図 3で、想定される 1つの攻撃手法を提示します。

図3:想定される脆弱性を利用した攻撃手法
図3:想定される脆弱性を利用した攻撃手法

手順7 の後、攻撃者はフラグ「Server Side Proc」のある変更されたオブジェクト「tagCLS B」でウィンドウを作成することができます。このウィンドウプロシージャはカーネルモードで実行可能です。つまり、攻撃者は特権昇格したカーネルモードで自身のコードを実行し、侵害した PC を効果的に完全な制御下に置くことが可能になります。

■トレンドマイクロの対策
この脆弱性に対する最も効果的なセキュリティ対策は、公式に公開されている適切な更新プログラムを適用することです。なお、この脆弱性は特権昇格行うだけであることにご留意下さい。攻撃対象とした PC上でコードを実行するためには、他の攻撃手法も必要とします。この攻撃を回避し、検出することに重点を置いたセキュリティ対策は、システム管理者にとって有効となるかもしれません。

参考記事:

 翻訳:品川 暁子(Core Technology Marketing, TrendLabs)