2014/03/26

Microsoft Fix it 51010 cannot fix my Word 2013 64-bit

(※ 4 月 9 日の Microsoft Update で Word のこの脆弱性を解消する更新が提供されるそうです)

広範囲の Word バージョンに影響する脆弱性に関するセキュリティ アドバイザリが公開されました。Windows 版の Word 向けには、回避策をすばやく適用できる Microsoft Fix It 51010 も公開されています。

Security TechCenter > セキュリティ アドバイザリ > マイクロソフト セキュリティ アドバイザリ (2953095) > Microsoft Word の脆弱性により、リモートでコードが実行される
[URL] http://technet.microsoft.com/ja-jp/security/advisory/2953095

Microsoft security advisory: Vulnerability in Microsoft Word could allow remote code execution (Microsoft Fix it 51010 および Microsoft Fix it 51011)
[URL] http://support.microsoft.com/kb/2953095/

ですが、この Microsoft Fix It、ローカルにインストールされている 64 ビット版 Office 2013 (64 ビット版 Word 2013) を見つけてくれないかも。筆者の Windows 7 SP1 x64 にインストールされている Office 2013 SP1 環境ではそうでした。セキュリティ アドバイザリによると、64 ビット版も影響ありだそうなので、右のメッセージを信用するのは不安。

回避策を手動で設定すればよいのですが、気になるので調査開始。

Windows Sysinternals の Procmon.exe (http://live.sysinternals.com/procmon.exe) を使って、Microsoft Fix It のプロセスである msiexec.exe のレジストリ アクセスを眺めてみると、Word 2013 のインストール場所を探すのに、HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Word\InstallRoot の Path 値を参照しているらしいことを突き止めました。HKLM\SOFTWARE\Wow6432Node は、64 ビット版 Windows に 32 ビット版のソフトウェアをインストールした場合に使われるツリーです。64 ビット版の Office 2013 は、HKLM\SOFTWARE\Microsoft\Office\15.0\Word\InstallRoot を使用するので、見つかるわけがありません。

では、なぜ HKLM\SOFTWARE\Wow6432Node の下を探しているのか、Windows 8.1 のいくつかの環境で試してみました。

まずは、64 ビット版 Windows 8.1 と 32 ビット版 Office 2013 の組み合わせから。HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Word\InstallRoot の参照が成功し、Path 値からパス C:\Program Files (x86)\Microsoft Office\Office15 を取得できてます。

続いて、64 ビット版 Windows 8.1 と 64 ビット版 Office 2013 の組み合わせ。HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Word\InstallRoot が見つからず (NAME NOT FOUND)。だからといって HKLM\SOFTWARE\Microsoft\Office\15.0\Word\InstallRoot を探している様子はありません。

最後に、32 ビット版 Windows 8.1 と 32 ビット版 Office 2013 の組み合わせ。あれれれれ、警部、HKLM\SOFTWARE\Microsoft\Office\15.0\Word\InstallRoot と HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Word\InstallRoot の両方を検索しているよ。HKLM\SOFTWARE\Wow6432Node のほうの確認は無駄だよね。

ねぇ、おじさん。32 ビット OS では 32 ビット Word 2013 と 64 ビット Word 2013 の両方を探し、64 ビット OS では 32 ビット Word 2013 だけ探しているんじゃない? 逆だよね。

・・・

この問題は、64 ビット版 Office 2013 (Word 2013) の環境だけのようです。MSI 版もクイック実行 (C2R) 版も状況は変わりません。64 ビット版
Office 2010 (Word 2010) だと、ちゃんと Fix It できました。

MicrosoftFixIt51010.msi の中身を覗いてみると、レガシな Office (Office 2010 以前) のバージョンとアーキテクチャのチェックは VBScript で行っているみたい。

3/27 追記) Office 2013 は旧バージョンと同居できます。この Fix It の挙動を見ると、Word 2013 と Word 2010 以前の両方のレジストリを変更するように作ってあるようです。ですが、64 ビット版の Word 2013 と Word 2010 の両方がインストールされた環境だと、Word 2013 は検出されず、Word 2010 のほうだけを Fix It して、Fix It できたよと言ってくると思うのでご注意。

64 ビット版の Word 2013 使っている人ってそんなにいないと思いますが (64 ビット OS でも 32 ビット Office が推奨されているので)、そんな少数派の方のために、Microsoft Fix It 51010 と 51011 がたぶんやっていることをバッチにしてみました。

[MyMicrosoftFixIt51010forWord2013x64.cmd]
[MyMicrosoftFixIt51011forWord2013x64.cmd]
このバッチを使う場合は、自己責任でお願いします。このバッチはちゃんとテストしてません。っていうか、Microsoft Fix It って可能性のあるすべての環境でテストしてないのか!

3/27 追記) このバッチで追加しているレジストリからわかるように、Microsoft Fix It 51010 は実行したユーザーの環境にだけ回避策を講じます。その PC を使用するユーザーごとに Fix It しないと安心できませんよ。ついでに言うと、Microsoft Fix It 51010 はクイック実行 (C2R) の Word 2013 32-bit は Fix It できますが、Microsoft Application Virtualization (App-V) で展開された Word は Fix It できません。なぜなら、App-V の仮想レジストリは Msiexec.exe から見えないから。
・・・
この脆弱性の根本的な解決が、間もなくサポート終了を迎える Office 2003 (Word 2003) に対して提供されるか注目しておきましょう。 

4/4 追記) 「マイクロソフト セキュリティ情報の事前通知 - 2014 年 4 月 (http://technet.microsoft.com/ja-jp/security/bulletin/ms14-apr)」から察すると、4 月の Microsoft Update で Word のこの脆弱性は解決されそうです。そうなれば、Microsoft Fix It 51010 も不要になると思うので、Microsoft Fix It 51011 で解除できるかと。

0 件のコメント: