ワンポイント.NET管理テク
── ここが気になる.NET管理のヒント ──

第5回 .NET FrameworkのService Pack適用に失敗する場合の対処方法

デジタルアドバンテージ 島田 広道
2007/07/25

 ほかのWindowsのコンポーネントと同様、.NET Frameworkにも、セキュリティ上の脆弱性あるいは不具合を解消するための修正プログラムが存在する。そして修正プログラムを集めたService Packもまた、.NET Framework向けにいくつかリリースされている。

.NET Frameworkのバージョン 最新のService Pack
.NET Framework 1.0 SP3
.NET Framework 1.1 SP1
.NET Framework 2.0 SP未適用(SPが提供されていない)
.NET Framework 3.0 SP未適用(SPが提供されていない)
.NET Frameworkの各バージョンの最新Service Pack(2007年7月末現在)

 基本的にService Packは、新しいものがリリースされるたびに適用していく必要がある。なぜならマイクロソフトのサポート・ポリシーにより、最新のService Packがリリースされてしばらく経つと、その最新のService Packが適用済みの環境だけにしか修正プログラムを適用できなくなるからだ*1

*1 これは原則であり、例外もある。例えばマイクロソフトとの契約によっては、古いService Packに適用可能な修正プログラムを入手できることがある。

 とはいえ、新しいService Packを適用すると既存のアプリケーションとの互換性が損なわれる、といった問題が生じる可能性は通常の修正プログラムより高い。そのため通常は、リリース後しばらくは適用しないで様子を見つつ、1つ前のService Packのサポートが切れるまでに、最新版のService Packの適用を計画・実行することが多いのではないだろうか。

 これは.NET FrameworkのService Packに限らず、ほかのWindowsのコンポーネントにも当てはまることだ。しかし.NET Frameworkでは特別に注意しなければならないことがある。それは、適用済みの修正プログラムをアンインストールしないと、最新のService Packを適用できないことがある、という問題だ。

 現在、この問題が確認されているのは.NET Framework 1.0/1.1*2という古いバージョンに限られる。しかし.NET Framework 2.0以降についても、今後Service Packがリリースされると同じ問題に悩まされるようになる可能性がある。いまのうちに対処方法を知っておくとよいだろう。

*2 Windows Server 2003にプレインストールされている.NET Framework 1.1では、この問題は生じない。

適用済み修正プログラムによってService Packの適用が阻害される例 

 実際にService Packの適用に失敗する例を紹介しよう。.NET Framework 1.1をインストールした後、MS05-004のセキュリティ修正プログラムだけを適用し、さらに最新版である.NET Framework 1.1 SP1をWindows Update(Microsoft Updateを含む)で適用しようとすると、以下のエラー・メッセージが表示されて適用に失敗してしまう。

Windows Updateで.NET Framework 1.1 SP1の適用に失敗した例
Windows XP Professional SP2において、.NET Framework 1.1→MS05-004→.NET Framework 1.1 SP1という順番で適用したところ、このようにSP1の適用時にエラーが発生して適用できなかった。

 Windows Updateでは、詳細なエラーの内容が分からず、原因も把握できない。そこで、前出の環境(SP未適用の.NET Framework 1.1にMS05-004の修正プログラムを適用した環境)に.NET Framework 1.1 SP1の手動適用を試みたところ表示されたエラー・メッセージが以下の画面である。

手動適用で.NET Framework 1.1 SP1の適用に失敗した際のエラー・メッセージ
事前に適用した.NET Framework向け修正プログラムは1つだけだが、「修正プログラムが2つ以上インストールされている……」というエラーによってSP1の適用に失敗したことが分かる。

 MS05-004の修正プログラムが適用してあるだけなのに、「修正プログラムが2つ以上インストールされている……」というメッセージが何を意味するのかは明確でないが、どうやら.NET Framework 1.1 SP1のインストールを阻害するような修正プログラムがすでに適用されており、これがSP1適用エラーの原因になっているようだ。適用済みの.NET Framework 1.1向け修正プログラムはMS05-004だけなので、これが問題の修正プログラムだと考えられる*3

*3 MS05-004の修正プログラムには、それ以前にリリースされた複数の修正が内包されている。この内包分が別個の修正プログラムとしてカウントされた結果、「修正プログラムが既に 2 つ以上インストールされている」というエラー・メッセージが表示されたのかもしれない。

 以下のサポート技術情報によれば、このSP1の挙動は「仕様」であり不具合ではないという。

 ハッキリとは書かれていないが、MS05-004の修正プログラムがSP1の適用を阻害するのは、この修正プログラムがSP1の後にリリースされていることが原因のようだ。つまり、個別の修正プログラムを鋭意適用している環境に、後から.NET FrameworkのService Packを適用しようとすると、このような問題が発生する可能性がある。

 Windows OS向けなど、通常のService Packでは、このようなケースでもエラーなしで正しく適用できる。適用済みの修正プログラムのせいでService Packが適用できない、というのは筆者が知る限り.NET Frameworkだけで生じる問題である。

修正プログラムのアンインストールで対処

 この問題を解消するには、結果としてSP1の適用を阻害しているMS05-004の修正プログラムをいったんアンインストールし、SP1の適用後に再び適用するしかない。アンインストール作業は、基本的に個別のコンピュータに対して手作業で実行するしかないので、非常に厄介である。また、セキュリティ修正プログラムをアンインストールすると当然ながら脆弱性も復活するため、再適用が完了するまでその脆弱性を突く攻撃を受けないように回避策を講じる必要があり、実に面倒だ(回避策の詳細はMS05-004の[脆弱性の詳細]−[パスの検証の脆弱性]−[「パスの検証の脆弱性」の回避策]を参照)。

 .NET Frameworkの修正プログラムは、コントロール・パネルの[プログラムの追加と削除]アプレットあるいは[アプリケーションの追加と削除]アプレットから削除できる。

.NET Frameworkの修正プログラムをアンインストールする
これはコントロール・パネルにある[プログラムの追加と削除]アプレットから、.NET Framework 1.1 SP未適用に適用した修正プログラムKB886904をアンインストールするところ。アンインストールすべき修正プログラムを見つけるには、タイトルに含まれるMSKB番号(ここでは「886904」)を元にサポート技術情報のページを参照し、その正体を探ればよい。セキュリティ修正プログラムであれば、サポート技術情報のページにはMSセキュリティ番号(ここでは「MS05-004」)も記されているはずだ。
  このチェック・ボックスをオンにして初めて修正プログラムがリストアップされる場合があるので注意。
  このボタンをクリックするとアンインストールが始まる。画面の指示に従って進めれば、簡単にアンインストールは完了できる。

 このアプレットでアンインストールすべき修正プログラムを見つけるには、タイトルに含まれるMSKB番号を元にサポート技術情報のページを参照し、その正体を探ればよい。具体的には、「http://support.microsoft.com/default.aspx?scid=kb;ja;<6桁のKB番号>」というURLでWebページを開けばよい。

 複数の.NET Framework向け修正プログラムがリストアップされてしまい、どれが最新のService Packの適用を阻害しているのか分からない場合は、すべてアンインストールしてしまうのも手である。いずれも最新のService Packに含まれているか、あるいは最新のService Pack向けにも提供されている*4ため、実質的にすべて適用し直せるからだ。

*4 マイクロソフトのサポート窓口から一般非公開の修正プログラムを入手・適用したことがあり、かつそれが最新のService Packに含まれていない場合は、最新のService Packに対応したものを改めて入手し、適用し直す必要がある。

 アンインストール対象を決めたら、[変更と削除]ボタンをクリックするとアンインストールが始まる。あとは画面の指示に従って作業を完了させればよい。

 修正プログラムのアンインストールが済んだら、最新のService Packを適用する。Windows Update/Microsoft Updateを用いる場合は、[優先度の高い更新プログラム]から以下のタイトルの修正プログラム(Service Pack)を探して適用すればよい。手順自体は通常の修正プログラムと変わらない。

  • .NET Framework 1.0の場合
    「Microsoft .NET Framework 1.0 Service Pack 3 日本語版」
  • .NET Framework 1.1の場合
    「Microsoft .NET Framework 1.1 Service Pack 1」

 または以下のダウンロード・センターの各ページからインストール・パッケージを入手して手動で適用してもよい。

Windows Updateで.NET Frameworkをインストールする

 Service Packの適用が完了したら、忘れずにセキュリティ修正プログラムも適用すること。それには手動適用より、Windows Update/Microsoft Update/自動更新の方が簡単だろう。その手順については関連記事を参照していただきたい。End of Article

  関連リンク
  セキュリティ更新プログラム MS05-004 を先にインストールした場合、.NET Framework Service Pack のインストールが完了しない(マイクロソフト・サポート技術情報899619)
  ASP.NET パス検証の脆弱性(マイクロソフトTechNetセキュリティ情報 MS05-004)
  .NET Framework 1.0 Service Pack 3(マイクロソフト・ダウンロード・センター)
  .NET Framework 1.1 Service Pack 1(マイクロソフト・ダウンロード・センター)
     
   
     
目次ページへ  「ワンポイント.NET管理テク」
Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

スキルアップ/キャリアアップ

.NET管理者虎の巻

- PR -
- PR -