前回の「幻のWindows 8.1 Update 2と盆(凡)のアップデート」の最後に追記したように、8月13日からWindows Updateで配布された更新プログラムの一部が原因で不具合が発生するという問題が明らかになり、数日後に“Windows 8.1 Update 2”とウワサされた(Update 2ではない)「Windows 8.1 August Update(KB2975719)」を含む以下の四つの更新プログラムの提供が停止されました。
また、これらの更新プログラムで問題が発生していないPCについても、予防的な措置として更新プログラムのアンインストールが勧められました。
最初の「KB2982791」については、代替の更新プログラムKB2993651が8月28日にWindows Updateを通じて配布され、「MS14-045」のセキュリティ問題は解消されました。
他の三つについては9月2日に同じKB番号で再リリースされました。これらはセキュリティ更新ではなく、オプションの更新プログラムであるため、自動更新ではインストールされません。これらの更新が9月2日以前にすでにインストールされているかいないかにかかわらず、9月3日以降にWindows Updateを実行して検出されたオプションの更新プログラムから選択することで修正版をインストールできます。9月になりましたが、August Update(KB2975719)は幻にならずに済んだようです。
前回は、Windows 8.1のAugust Update(KB2975719)の新機能の一つとして、「古いActiveXコントロールのブロック」(Out-of-date ActiveX control blocking)機能が「Internet Explorer(IE)11」に導入されること、ブロック機能の発動は9月の定例更新まで猶予されていること、そして同じ機能がWindows 7 Service Pack(SP)1のIE 8以降、Windows 8のIE 10にも更新プログラムKB2976627として提供されるということを紹介しました。
前回の内容について訂正があります。Windows 8.1向けの古いActiveXコントロールのブロック機能は、当初、August Update(KB2975719)の機能として公表されましたが、更新プログラム「Internet Explorer 11の累積的なセキュリティ更新プログラム(KB2976627)」の一部として提供されるの誤りでした。
「Out-of-date ActiveX control blocking」について言及していた以下のサポート技術情報からも、現在では「Out-of-date ActiveX control blocking」の記述が削除されています。
つまり、Windows 8.1にAugust Update(KB2975719)がインストールされているかどうかには関係なく、更新プログラムKB2976627がインストールされているWindows 7 SP1以降およびWindows Server 2008 R2以降のIE 8以降には、“すでに古いActiveXコントロールのブロック機能が導入されている”ということになります(画面1)。
マイクロソフトによると、古いActiveXコントロールのブロック機能は、最初は以下のJavaプラグインを対象に9月9日(米国時間)から始まる予定とのことです。ブロック対象のActiveXコントロールのリストは、順次、更新される予定です。
マイクロソフトは企業ユーザーがブロック機能の影響を評価できるように1カ月の猶予期間を設けたのでしょうが、8月の更新の大騒動でこの新しいセキュリティ機能に対する注目は薄れてしまったかもしれません。そこで、9月9日の開始前にこの機能を試してみました。
更新プログラムKB2976627がインストールされている場合は、すでにブロック機能に対応済みです。ブロック対象の古いActiveXコントロールは、マイクロソフトが作成し、ユーザーごとにダウンロードされる「%LOCALAPPDATA%\Microsoft\Internet Explorer\VersionManager\versionlist.xml」ファイルによって制御されます。
ブロック機能に対応済みの場合は「versionlist.xml」ファイルが存在しますが、現状はブロック機能が働かないように記述されています。これが、9月9日(米国時間)以降にダウンロードされる新しいファイルに上書きされることで、ブロック機能が働くようになるというわけです。
以下のサポート技術情報に説明されている方法で「versionlist.xml」ファイルをブロック機能が働くように書き換えることで、事前にテストすることができました。
Windows 8.1に古いバージョンのJava(バージョン7 Update 60など)をインストールし、IE 11でJavaプラグインを必要とするWebページを開きます。例えば、「http://java.com/」を開き、「Javaの有無をチェック」をクリックすると、古いバージョンのJavaプラグインの読み込みを開始できます。なお、「http://java.com/」を例にしたのは、ローカルにすでにインストールされているJavaプラグインを読み込ませるためであって、「http://java.com/」に問題があるわけではありません。Javaプラグインを必要としているWebページであれば、どこでもかまいません。
通常は、Javaコントロールがロードされ、アプリケーションが動きます。「http://java.com/」の「Javaの有無をチェックする」をクリックした場合は、ローカルのJavaが起動して、バージョンチェックが行われます(Java 7自身の機能でJavaのバージョンが古いと通知されますが、続行できます)。
IEに古いActiveXコントロールのブロック機能が導入されている場合、次の画面のようにIEがコントロールのロードをブロックして、「更新」と「今回は実行」のボタンを表示するようになります(画面2)。
このブロック機能は、「信頼済みサイト」および「ローカルイントラネット」ゾーンに対しては機能しません。そのため、引き続き古いActiveXコントロールを利用する必要がある場合は、これらのゾーンにURLを登録することでブロック機能の影響を回避できます(画面3)。
ブロック機能が働いても「今回は実行」ボタンで続行できますが、アプリケーションによっては「今回は実行」ボタンをクリックしても正常に動作しない場合があります(画面4)。企業ユーザーの方は、その辺りを評価して、ブロック機能を完全に無効化するか、あるいは対象のURLを「信頼済みサイト」や「ローカルイントラネット」ゾーンに登録してブロックされないように対応する必要があるでしょう。
古いActiveXコントロールのブロック機能は、予定通りなら「9月9日」(米国時間)から始まってしまいます。Javaに依存するWebアプリケーションをIEで利用している企業の方は、最新のJavaを利用していない場合、アプリケーションが利用できないなどの影響が多発する可能性があります。
今となっては、影響を評価している時間もないでしょう。古いActiveXコントロールのブロック機能はIEの累積的なセキュリティ更新の一部として組み込まれてしまう(しまった)ので、更新プログラムをアンインストールするというわけにもいきません。
ですので、古いバージョンのJavaを使い続けなければならない理由がある企業のために、すぐに実行できる対処方法をお教えしましょう。古いActiveXコントロールのブロック機能は「グループポリシー」や「ローカルポリシー」を使用することで、コンピューター全体またはユーザーやグループごとに無効化することができます。
それには、以下のポリシーを「有効」に設定して、コンピューター、ユーザー、またはグループに適用します(画面5)。
コンピューターの構成(またはユーザーの構成)\管理用テンプレート\Windows コンポーネント\Internet Explorer\セキュリティの設定\アドオン管理\Internet Explorer で古い ActiveX コントロールのブロックを無効にする
このポリシーに対応した管理用テンプレートは、更新プログラムKB2976627がインストールされているPCの次の場所にあります。Active Directoryのグループポリシーでセントラルストアを利用している場合は、セントラルストア側の管理用テンプレートを入れ替える必要があるので注意してください。
グループポリシーを利用すれば、古いActiveXコントロールのブロック機能を有効にしたままで、「信頼済みサイト」や「ローカルインターネット」ゾーンのURL登録をポリシーで配布して、影響を回避することも可能です。該当するポリシーは次の場所にあります。
コンピューターの構成(またはユーザーの構成)\管理用テンプレート\Windows コンポーネント\Internet Explorer\インターネット コントロール パネル\セキュリティ ページ\サイトとゾーンの割り当て一覧
ただし、このポリシーを配布した場合、ユーザーはIEの「インターネットオプション」でセキュリティゾーンの設定を編集できなくなることに注意してください。セキュリティゾーンの設定をポリシーで配布する場合は、ゾーンの保守を全て中央で管理しなければならなくなります。
グループポリシーを使用せず、レジストリの編集によってブロック機能を無効化することもできます。具体的には「HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\VersionManager」にDWORD型の値を新規作成し、「DownloadVisionList」という名前に変更して、値のデータに「0」を設定します。
また、すでにダウンロードされている「%LOCALAPPDATA%\Microsoft\Internet Explorer\VersionManager\versionlist.xml」があれば削除します(画面6)。これにより、ブロック機能を動かすための「versionlist.xml」がダウンロードされなくなるため、それに依存するブロック機能は働かなくなります。
この方法はユーザーごとの設定であり、ローカルPCの管理者権限を必要としません。コマンドプロンプトから次の2行のコマンドラインを実行して無効化するのが簡単です。
REG ADD "HKCU¥Software¥Microsoft¥Internet Explorer¥VersionManager" /v DownloadVersionList /t REG_DWORD /d 0 /f DEL "%LOCALAPPDATA%¥Microsoft¥Internet Explorer¥VersionManager¥versionlist2.xml"
古いActiveXコントロールのブロック機能は、今のところ9月9日(米国時間)から開始の予定ですが、8月の更新の大騒動を考えると先延ばしになるかもしれません。しかしながら、ブロック機能自体は累積的な更新によって、すでに多くのIEに導入されてしまいました。後は「versionlist.xml」の配布を待つばかりです。予定通りに開始されてもされなくても、機能の無効化やゾーン設定による例外対応はやっておいてもムダにはならないはずです。
一般ユーザーの方は、ブロック機能が開始することによって、今まで気が付かなかった古いActiveXコントロールの存在を知り、更新するきっかけになるでしょう。Webのセキュリティを強化する新しい機能ですので、機能を無効化するのではなく、例外設定で対処することをお勧めします。
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Hyper-V(Oct 2008 - Sep 2014)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手がける。個人ブログは『山市良のえぬなんとかわーるど』。
Copyright© 2014 ITmedia, Inc. All Rights Reserved.