まず、Microsoftではここ数年、開発に「セキュリティ開発ライフサイクル(SDL)」という考えを導入して安全性の強化を目指しているが、その元で新たなファイルフォーマット「Open XML」を開発し、Office 2007から導入している。Open XMLは、テキストベースのXMLと、それ以外の画像やOLEオブジェクトなど、1個1個のファイルをZIP形式でひとまとめにしたファイルフォーマット。.docx、.xlsx、.pptxという拡張子が使われるが、拡張子を.zipに切り替えれば中身を見ることもできる。Officeの設定やグループポリシーで、XML以外のファイルをまとめることを禁止することも可能だ。
これによって、従来のようにバイナリを挿入して実行する、という動作ができなくなり、脆弱性があっても攻撃の危険性を低減した。
また、Windows Vistaでは、新たにユーザーアクセス制御(UAC)という仕組みを導入。これは、普段はVistaのアクセス権限をユーザー権限で利用し、管理者権限が必要な場合はその都度ダイアログを表示してユーザーに確認させる仕組みだ。
先ほどの攻撃の例では、
- 不正なPowerPointファイルからEXEを出力し、デスクトップに保存する
- 拡張子.logのEXEファイルがtempフォルダに作成され、実行される
という動作までは、一般のユーザー権限で動作する。しかし、 - 2つのバイナリをsystem32フォルダに出力し、HKLMレジストリを変更する
- Winlogon.exeに取り付く
という動作は管理者権限が必要となる。
つまり、Vistaでは(3)の段階でUACが働き、ダイアログが表示されるので、その時に実行を拒否すれば攻撃は最後まで実行されないということになる。PowerPointの脆弱性のため、update.exe自体は取り出され、実行されてしまうが、.logのファイルは管理者権限を持たないため、system32フォルダには書き込めず、最後まで攻めきれない。「これがUACのいいところで、被害を最小限にできる」(同)。ただし、UACのダイアログで実行を許可すると攻撃が成功してしまうので注意は必要だ。
Windows XPは管理者権限で使われるのが一般的だが、小野寺氏は「ベーシックなこと(対策)をやっていくしかない」として、標準のユーザーアカウントを使って管理者権限を使わないことを推奨。「完璧主義者で、セキュリティのためなら使い勝手はいらないという人なら」(同)という前提で、マイクロソフトが提供する「DropMyRights.exe」を使えば簡単に最小権限に設定できる。とはいえ、「大変使いにくい。ほとんどのアプリケーションは動かない」(同)ということで、小野寺氏は限定したPCの使い方であれば有効としている。
Vistaに関してはUACを有効にすれば危険性は低減できるが、一部でUACを無効にすることで使い勝手が向上すると紹介されていることに対して、小野寺氏は「セキュリティを捨ててしまう」として否定。デフォルトのUAC設定はセキュリティと使い勝手のバランスが取れていると強調する。
しかし、「OSにできるのはこれぐらい。ほとんど防御しきれていない」と小野寺氏。OSだけでなく、アプリケーション側での防御が必要との認識を示す。