セキュリティ組織である米SANS Instituteは先日,頻繁に悪用される20種類のセキュリティ・ホールを公開しました。詳細は,こちらを参照していただくとして,本記事では,公開された情報とWindowsの関係をサンプル・プログラムを使って具体的に考えてみるとことにします。

図1●米SANS Instituteが公開した“Top 20”セキュリティ・ホール
図2●「W4」についての情報
 まずは,米SANS Instituteが公開したセキュリティ・ホールを確認しておきましょう。図1[拡大表示]をご覧ください。

 この公開情報では,WindowsとUNIXのセキュリティ・ホールをピックアップしています。本連載はWindowsを取り上げていますから,ここでは,10種類リストされているWindowsセキュリティ・ホールのうちの,Internet Explorerに関する「W4」情報を検討してみます。

 「W4」についての情報を読んでみると,次のような4つの事項が強調されています(図2[拡大表示])。

強調1:Windows Updateを訪問しインストール・パッチ情報を調べること
強調2:HFNetChkかMBSAツールでインストール・パッチ情報を調べること
強調3:修正パッチ822925を必ず適応すること
強調4:IEセキュリティ・ホールのほとんどは,Active ScriptingかActiveXコントロール経由で悪用されること

 これらすべての強調内容を詳細に検討する紙面の余裕はありませんから,今回は,「強調3:修正パッチ822925を必ず適応すること」の背景を検討します。まずは,「修正パッチ822925とは何か」を調べてみましょう。

修正パッチ822925とは何か?

 前回触れたように,IEに関する更新内容の詳細はWindows XP SP1ではシステム・データベースに記録されません。修正パッチ・インストーラは,大きく分けるとWindows Server 2003と64ビット版Windows XP用と,32ビット版Windows XP用の2種類が用意されています。そして,これらの2種類の修正パッチ・インストーラの動作は異なる,ということです。

 そこで今回は,Windows Server 2003で前回のサンプル・プログラムを動作させ,とりあえず,修正パッチ822925の正体を突き止めます。私のWindows Server 2003環境で実行すると,次のような情報が返されます。なお,32ビット版Windows XP用のサンプル・プログラムは後で紹介しますから,次に紹介する実行結果は参考程度に目を通してください。

InstalledDate: 8/20/2003
Type: Update
UninstallCommand: C:\WINDOWS\$NtUninstallKB822925$\spuninst\spuninst.exe

File: 0
BuildDate: Wed Aug 06 10:39:22 2003
FileName: urlmon.dll
Location: C:\WINDOWS\system32
Version: 6.0.3790.75

File: 1
BuildDate: Wed Aug 06 10:39:22 2003
FileName: shdocvw.dll
Location: C:\WINDOWS\system32
Version: 6.0.3790.59

File: 2
BuildDate: Wed Aug 06 10:39:21 2003
FileName: mshtml.dll
Location: C:\WINDOWS\system32
Version: 6.0.3790.64

File: 3
BuildDate: Wed Aug 06 10:39:22 2003
FileName: urlmon.dll
Location: C:\WINDOWS\system32\DllCache
Version: 6.0.3790.75

File: 4
BuildDate: Wed Aug 06 10:39:22 2003
FileName: shdocvw.dll
Location: C:\WINDOWS\system32\DllCache
Version: 6.0.3790.59

File: 5
BuildDate: Wed Aug 06 10:39:21 2003
FileName: mshtml.dll
Location: C:\WINDOWS\system32\DllCache
Version: 6.0.3790.64

 この情報は,修正パッチ822925を適用すると,urlmon.dll,shdocvw.dll,mshtml.dllの3種類のファイルが更新されることを示しています。ただし,この修正パッチ822925のインストール日付を見ると,「InstalledDate: 8/20/2003」となっていますから,すでに古いパッチであることが分かります。最新パッチは前回紹介したように,10月4日付けのKB828750というものです。それでは参考のために,この最新パッチKB828750に関する情報も取り出してみましょう。

InstalledDate: 10/4/2003
Type: Update
UninstallCommand: C:\WINDOWS\$NtUninstallKB828750$\spuninst\spuninst.exe

File: 0
BuildDate: Tue Sep 23 07:17:44 2003
FileName: urlmon.dll
Location: C:\WINDOWS\system32
Version: 6.0.3790.84

File: 1
BuildDate: Tue Sep 23 07:17:43 2003
FileName: shdocvw.dll
Location: C:\WINDOWS\system32
Version: 6.0.3790.85

File: 2
BuildDate: Tue Sep 23 07:17:43 2003
FileName: mshtml.dll
Location: C:\WINDOWS\system32
Version: 6.0.3790.88

File: 3
BuildDate: Tue Sep 23 07:17:44 2003
FileName: urlmon.dll
Location: C:\WINDOWS\system32\DllCache
Version: 6.0.3790.84

File: 4
BuildDate: Tue Sep 23 07:17:43 2003
FileName: shdocvw.dll
Location: C:\WINDOWS\system32\DllCache
Version: 6.0.3790.85

File: 5
BuildDate: Tue Sep 23 07:17:43 2003
FileName: mshtml.dll
Location: C:\WINDOWS\system32\DllCache
Version: 6.0.3790.88

File: 6
BuildDate: Tue Sep 23 07:12:25 2003
FileName: mshtml.dll
Location: c:\windows\$hf_mig$\KB828750\RTMQFE
Version: 6.0.3790.89

File: 7
BuildDate: Tue Sep 23 07:12:47 2003
FileName: shdocvw.dll
Location: c:\windows\$hf_mig$\KB828750\RTMQFE
Version: 6.0.3790.85

File: 8
BuildDate: Tue Sep 23 07:12:52 2003
FileName: urlmon.dll
Location: c:\windows\$hf_mig$\KB828750\RTMQFE
Version: 6.0.3790.84

 ご覧のように,更新されるファイルはurlmon.dll,shdocvw.dll,mshtml.dllの3種類です。この点は変更されていませんが,システム・データベースに記録された更新情報は増えています。これ以上の詳細には踏み込みませんが,2003年8月20公開KB822925と2004年10月4日公開KB828750の間には,インストーラ・レベルでかなりの変更が発生していることが分かります。

 希望を述べれば,32ビット版Windows XP用の修正パッチ・インストーラも更新内容をきちんとシステム・データベースに記録するように変更してほしいと思います。記録されていれば,どのような変更が行われているのか効率的に調べられますから,問題が発生した時の対処も効率的に行えるようになります。少なくとも,エンド・ユーザーが技術者に相談する際には,必要な情報を提供できるはずです。

図3●サンプル・プログラムの実行結果

今回のサンプル・プログラム

 Windows Server 2003用のサンプル・プログラムは前回のものとほとんど同じです。ここでは,Windows XP用の単純なサンプル・プログラムを紹介いたします。今回のサンプル・プログラムはこちらからダウンロードしてご使用ください。このサンプル・プログラムは,No21XP.vbsという名称を持ち,Windows XP環境でのみ動作します。まずは,実行結果を見ていただきましょう(図3[拡大表示])。

 ご覧のように,このサンプル・プログラムは,目的の修正パッチがインストールされているかどうかを調べて,その結果を返してくれます。このサンプル・プログラムは「インストールされている」ことを通知してくれますが,「どのような更新処理が行われたのか」までは通知してくれません。前回触れたように,マイクロソフト社がWebで公開するドキュメントは更新ファイルの一覧を教えてくれますが,その公開情報は100%信じられるものではありません。この意味でも,32ビット版Windows XP用修正パッチインストーラの動作を変更し,64ビット版用のものと同じにしてほしいと思います。

サンプル・プログラムの機能と拡張上のヒント

今回紹介したNo21XP.vbsはリスト1のようになっています。このプログラムは,次のようなコードで始まっています。

Class ITProToyota
Private strRegEntry
Private strResult

 ご覧のように,Classというコードが記述されています。オブジェクト指向などに興味のある方は「VBScriptはクラスをサポートするのか?」と驚くかもしれません。実は,(変則的ながら)サポートするのです。クラスは,VBScriptのバージョン5からサポートされるようになりました。このため,今回のサンプル・プログラムを実行するためには,バージョン5以上のInternet Explorerが必要になります。クラスを使ったプログラミングに興味のある方は,今回のサンプル・クラスを参考にしながら,お時間のあるときに,自分なりのクラスを作成してみるとよいでしょう。

 サンプル・プログラム内には,次のようなコードが記述されています。

Private Sub Class_Initialize

strRegEntry = "HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{96543d59-497a-4801-a1f3-5936aacaf7b1}\IsInstalled"

End Sub

図4●修正パッチに関する公開情報のページ
 strRegEntry変数に設定する内容を変更すれば,目的のIE用修正パッチ情報がインストールされていることを確認できます。変数に設定する内容は,図4[拡大表示]のような公開情報内に含まれています。コピーするだけですから,きわめて簡単です。ぜひ実行してみてください。

 今回は,セキュリティ組織である米SANS Instituteが公開するセキュリティ情報とWindowsの関係を考えてみました。世界中にはいろいろなセキュリティ組織があり,必要な情報を懸命に発信してくれています。しかし,今回確認できたように,公開されるすべての情報が最新というわけではありません。自分を守るのはあくまでも「自分以外にない」というのが現実です。頑張りましょう,皆さん!

 今回は以上で終了です。次回またお会いいたしましょう。ごきげんよう!