トラブルシューター泣かせのイベントログメッセージ(その2)──「システム時刻の変更」に脆弱性あり?:山市良のうぃんどうず日記(85)(3/3 ページ)
前回に続き、今回もWindowsの「イベントログ」に記録された不可思議なイベントを紹介します。今回は不可思議というよりも、本当だったらちょっと怖いお話です。
また日本語固有の問題? それとも?
このような問題を発見したとき、まず疑うのが「言語固有の問題ではないか」ということです。特に、Windows 10以降、日本語環境でこうした問題が多いような気がします(気がするだけかもしれませんが)。
そこで、Windows 10 Anniversary Updateの同じビルドを実行する英語版の環境で確かめてみました。すると、英語版でもGet-EventLogコマンドレットは「Possible detection of CVE(CVEの検出の可能性)」と出力しました(画面5)。
次に疑うのが「Windowsのバージョン固有の問題ではないか」ということです。そこで、Windows 10 November Update(バージョン1511)とWindows 8.1でGet-EventLogコマンドレットを実行してみました。すると、Windows 10 November Update以前(Windows 8.1を含む)は、次のようなメッセージを表示しました(画面6)。
ソース'Microsoft-Windows-Kernel-General'のイベントID'1'の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージDLLファイルがローカルコンピュータに存在しない可能性があります……
画面6 Windows 10 バージョン1511以前(Windows 8.1を含む)のGet-EventLogコマンドレットは、システム時刻の変更イベントをメッセージに変換できないという別の問題があるらしい
「CVEの検出の可能性」問題は再現しませんでしたが、問題のイベントを“人間向けの(人が読みやすい)メッセージに変換できていない”という別の問題があるようです。
Windowsのイベントログは、ログそのものには人間向けのメッセージは含まれず、人間向けのメッセージに差し込むデータだけを保持しています。そして、人間向けのメッセージはというと、「メッセージDLLファイル(マニフェスト)」として別ファイルに用意されており、システムに登録されます(wevtutilコマンドには、マニフェストの登録/削除のオプションが用意されています)。これにより、ログのサイズを抑制するとともに、多言語対応が可能になっているのです。
Windows SysinternalsのProcess Monitor(Procmon)や「Strings」を使って調べてみると、Windows 10 Anniversary UpdateのGet-EventLogコマンドレットとGet-WinEventコマンドレットは、どちらもソース「Microsoft-Windows-Kernel-General」のマニフェストとして、システムに登録されている「C:\Windows\System32\Microsoft-Windows-System-Events.dll」と「言語(ja-jp)\Microsoft-Windows-System-Events.dll.mui)を参照していました。
そして、「Microsoft-Windows-System-Events.dll.mui」には、「CVEの検出の可能性」と「システム時刻は……に変更されました」両方のメッセージが含まれていることを確認しました(画面7)。
最後に、きちんとマイクロソフトにご報告を
さて、今回はGet-EventLogコマンドレットの問題が、Windows 10 Anniversary Update以降(Insider Previewビルドでも、筆者が確認した少なくとも2017年2月初めのビルドではそうでした)およびWindows Server 2016の問題であることを特定しました。筆者ができるのはここまでです。マイクロソフトのフィードバックチャネルの1つを通じてフィードバックしたので、今後、修正されることを期待します。
そもそも、イベントログを取得するならGet-EventLogコマンドレットよりも、より新しいGet-WinEventコマンドレットがお勧めです。筆者がGet-EventLogコマンドレットを使っていたのは、シンプルで使い慣れているのと、古い形式のイベントログ(Application、セキュリティ、システム)を高速に処理できるからです。Get-EventLogコマンドレットは、Setupログや「アプリケーションとサービスログ」(Microsoft-Windows-WindowsUpdateClient/Operationalなど)を検索することができません。
最後に、トラブルシューティングには、Windows Sysinternalsのユーティリティーが大いに役立ちます。ただし、Windows Sysinternalsには「PsLogList」というユーティリティーがありますが、実はPsLogListもまた、Get-EventLogと同じように「CVEの検出の可能性」と出力するのです。
- Windows Sysinternals(マイクロソフト TechNet)
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 2015年、私的Windows&マイクロソフト10大ニュース
本連載の2015年の締めくくりとして、2015年のWindowsおよびマイクロソフトに関連する10個の重大ニュースをピックアップしてみました。あくまでも筆者個人の見解です。 - 厳選! 人に教えたくなる、Windows 10の七不思議
今回は、Windows 10の新しい仕様や既知の不具合について、ちょっと気になるもの、思わず目を疑いたくなるものなど、“七不思議”を紹介します。 - 厳選! 人に教えたくなる、Windows 10の七不思議[第2弾]
本連載第48回では、Windows 10のちょっと気になるもの、思わず目を疑いたくなるものなどを紹介しました。今回はその第2弾です。役に立つ、立たないWindows 10の“不思議”をまた集めてみました。 - Windows 10でしれっと削除、変更された機能
以前のWindowsにはあったのに、Windows 10で削除/変更された機能は、マイクロソフトのWebサイトでも説明されています。ですが、そこに記載されていない変更点も多々あります。また、Windows 10の更新やアップグレードでひっそりと変更されていることも……。