マイクロソフト
Chief Security Advisor
高橋 正和

 今回は,Windows Vistaでどのようなマルウエア対策が施されているのかを紹介する。まず,MS Blaster,CodeRed,SQL Slammerなどのワームに対してWindows Vistaに施された対策を,順を追って解説しよう。

 ワームは,Webサーバーなどのサービス(デーモン)のぜい弱性を利用して任意のコードを実行することでシステムに感染する。Windows Vistaでは,このような攻撃に対応するため,システムの基本的な部分で対策を講じている。!)システムのぜい弱性を減少させる取り組みと,!)ぜい弱性を使った攻撃を成功しにくくするDEP,ASLRといった機構の導入である。

より安全なソフトウエアを構築するためのアプローチ(SDL)

 マイクロソフトでは,システムのぜい弱性を減少させ,より安全なソフトウエアを構築するための取り組みとしては,SDL(Security Development Lifecycle)と呼ぶアプローチが挙げられる。SDLは次のSD3+Cを原則とした開発手法である。

  • 設計による安全性確保:Secure by Design
  • 既定設定による安全確保:Secure by Default
  • 導入/展開時の安全確保:Secure by Deployment
  • コミュニケーション:Communication

 SDLの成果については,Jeff Jonesが”Windows Vista 6-MONTH VULUNERABILITY REPORT”で,「Windows Vistaは,Windows XPやその他の最新のOSと比較して,もっとも良い結果を出していると評価できる」とまとめている。少ないながらも,重要なぜい弱性もみつかっていることから明らかなように,ぜい弱性が無くなることはないまでも,よいスタートが切れたと考えている。

 なお,SDLについてはその概要を「信頼できるコンピューティングのセキュリティ開発ライフサイクル」で解説している。ぜひ参照していただきたい。

ぜい弱性の利用を防止するアプローチ

 次に,攻撃を成立しにくくする,言い換えるとぜい弱性を利用しにくくする工夫だが,代表例はDEP(Data Execution Prevention)である。ハードウエアを使ってデータ領域でのコードの実行を防止する技術で,Windows XPから導入されている。

 コンピュータに侵入する場合,攻撃者の多くがバッファ・オーバーフローと呼ばれる手法を利用する。ぜい弱性を利用し,データ中に埋め込んだコードを実行させる手法で,スタック・オーバーフローとヒープ・オーバーフローの2種類がある。多くのワームで使われてきたのは古典的な手法と言えるスタック・オーバーフローの方で,再現性が高く,安定した攻撃ができる可能性が高い。

 本来,コード(プログラム)は,コード領域で実行され,データ領域で実行させる必要がないにもかかわらず,スタック・オーバーフローによる攻撃では,データ領域でコードを稼働させる。そこで,データ領域でのコード実行を防ぐための仕組みとしてDEPが開発された(図1)。


図1 不審なアプリケーションの起動を制限するDEPの設定画面
[画像のクリックで拡大表示]

 ただ,DEPは効果的な防御手法である半面,データエリアの管理が不十分なプログラム(率直にいうとバグがあるプログラム)や,意図的にデータ領域でプログラムを実行するソフトウエアが動作しなくなるという問題がある。このためWindows Vistaでは,デフォルトではWindowsだけがDEP保護の対象となっている。任意のアプリケーションをDEPで保護する場合は,保護対象のリストに追加する必要がある。なおDEPの利用を前提とする場合,プログラム開発時にNX Buildを行うことでDEP利用を強制することができる。

 DEPで保護されていないプログラムに対する攻撃や,ヒープ・オーバーフローなどの必ずしもデータ領域でコードが動かない攻撃に対してはどうか。そのための保護の仕組みがASLR(Address Space Layout Randomization)である(図2)。


図2 ASLRはバッファ・オーバーフローによる攻撃の危険を抑えられる
[画像のクリックで拡大表示]

 Windows XPでは,システム・モジュールは一定の順番で順次メモリーに読み込まれるため,常に同じアドレスに読み込まれることになる。このため,攻撃の際に,利用したいAPIのアドレスを直接呼び出すことで確実に呼び出すことができてしまう。ASLRはこの問題点を解決する。具体的には,ASLRを利用しているとき,システム・モジュールが読み込まれるアドレスがランダムに変更されるようになる。これによりAPIの呼び出しアドレスが不定となり,ぜい弱性の利用に成功しても,コードが実行される可能性を減らすことができる。

 個々のアプリケーション・ソフトでもさまざまな対策を講じてある。特に意識されているのが,標的型攻撃に代表される「アプリケーションに対する攻撃」の防御である。アプリケーションに対する攻撃は,攻撃コードを埋め込んだメールやWebページ,また,オフィス・ソフトなどのぜい弱性が利用されることが多い。このような攻撃は,従来のウイルスやワームのような派手さがないので危険性が分かりにくいが,攻撃が成功した場合は,ファイアウォールの内側への侵入を許してしまう。その上,外部から任意の操作を行える場合が多く,極めて危険な状況に直面することになる。マイクロソフトは,このような攻撃に対応するため,Office 2007,Internet Explorer 7,Windows Vistaでさまざまな対策を行っている。