仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

VirtualBoxのセキュリティ強化によるWinVerifyTrustエラーの原因と解決方法

数週間前、無料のシステムイメージングソフトウェア「Macrium Reflect」を試してみることにしました。Macrium Reflectは、起動可能なライブメディアとしてWindows PEを使用しており、その環境の中でバックアップと復元の両方の操作を行うことができます。システムイメージングソフトウェアにおいて、復元のテストは最も重要な作業です。そこで私は、物理ハードウェアと仮想マシンの両方でこのテストを実施することにしました。

ここで問題に遭遇しました。VirtualBoxでPEイメージを起動しようとしたところ、E_FAIL(0x80004005)というエラーが発生し、詳細はVBoxHardening.logファイルで確認できるというメッセージが表示されたのです。このファイル内の大量のログの中に、「lacks WinVerifyTrust」という記述がいくつも見つかり、そのうちの一つが下記のエラーを引き起こしていました。さて、どうすればよいのでしょうか?

問題の詳細

このエラーコードやエラー属性だけでは、あまり多くの情報は得られません。何が起こったのかを正確に把握するには、生成されたログファイルを確認する必要があります。具体的には、以下の行が障害の直接の原因となっていました:

\Device\HarddiskVolume5\Windows\System32\bcrypt.dll [lacks WinVerifyTrust]
13b4.1f40: Error (rc=0):
13b4.1f40: supR3HardenedScreenImage/NtCreateSection: cached rc=Unknown Status -626 (0xfffffd8e) fImage=1 fProtect=0x10 fAccess=0xf cHits=4 \Device\HarddiskVolume5\Windows\System32\bcrypt.dll

ここからわかるのは、特定のライブラリ(bcrypt.dll)がWinVerifyTrustチェックに失敗しているということです。なお、このチェックに失敗しても致命的ではないオブジェクトが他にも存在する可能性がある点には注意が必要です。実際、この情報をもとに調べると、この問題に関する公式チケットや、フォーラムでの長い議論スレッドが存在することが確認できます。

本質的に、この問題はおそらく、PEイメージの一部としてWindowsが提供する証明書と、現行ビルドのVirtualBoxが保持する証明書との間の不一致が原因です。このエラーは、この仮想化製品に導入されたセキュリティ強化機能によって引き起こされます。

解決策

この問題を回避する方法はいくつかあります。まず、仮想マシン用のWindowsを以前のビルドに戻す方法があります。たとえば、レスキューメディアのベースとして別の古いWindows 10 PEイメージを使用する、あるいは多くの人にとっては、単純に別のバージョンのOSを使用するといった具合です。もう一つの方法として、VirtualBoxのバージョンを変更(アップグレード)することもできます。通常、後者の方がOS側を修正するよりも手間と時間がかからない、現実的な回避策となります。理想的にはセキュリティ強化フラグをオフにできればベストですが、簡単な方法ではそれができないようです。

というわけで、「今さらそんなこと」と思われるかもしれませんが、解決策は、可能であればVirtualBoxを最新版に更新してみることです。複数のホストマシンで実施したテストでは、5.1.X系から5.2.X系へ移行することで、Windows 10ベースの仮想マシンにおけるこの問題が解決されました。

まとめ

技術者であれば、サポート担当者に「ソフトウェアを最新バージョンに更新してください」と言われて苛立ちを覚えることもあるでしょう。しかし今回のようなケースでは、それが最も迅速かつ合理的な問題回避の方法となるのです。VirtualBoxのセキュリティ強化はさまざまな複雑な問題をもたらし、MicrosoftとOracleの間のいたちごっこは今後も続いていくでしょう。時折、一部のライブラリがロードできず、VMが動作しなくなることもあります。

しかし、ここで重要なのは技術的な細部よりも、この種の問題に体系的に取り組む方法を身につけていることです。まずエラーコードを注意深く確認し、次にエラーログを読みます。原因が特定できれば、適切な質問を立て、適切な解決策を見つけることもできるようになります。今回はプログラムの更新で済む話でしたが、それは何が問題だったのかを完全に理解した上で行った対応です。皆さんの現在および将来のVirtualBoxのトラブルシューティングに、この小さなガイドが役立つことを願っています。

それでは、また。

  1. VirtualBoxでNS_ERROR_FAILURE(0x80004005)エラーが発生したときの原因と対処法

    最近、あるシステムでVirtualBoxが動作しなくなりました。どの仮想マシンを起動しようとしても、必ず同じエラーが表示されるのです。ポップアップウィンドウには「仮想マシン[マシン名]のセッションを開けませんでした(Failed to open a session for the virtual machine)」と表示され、詳細欄には「NS_ERROR_FAILURE (0x80004005)」と記されていました。困ったことに、このメッセージは非常に曖昧で汎用的なため、何が問題なのかすぐには把握できません。そこでトラブルシューティングに取り組み、試行錯誤を重ねた結果、本記事のようなガイドが完

  2. VirtualBoxで「VERR_SYMBOL_VALUE_TOO_BIG」エラーが発生したときの原因と対処法

    VirtualBoxは、私にとって概ね快適な仮想化環境です。時折問題に遭遇することもあります。ブリッジネットワークの不具合など、深刻なケースもありました。それでも、OSやソフトウェアを素早く効率的にテストできる柔軟な環境として非常に有用です。ネットワーク分離機能やスナップショットなど、便利な機能も充実しています。ところが数日前、突然仮想マシンが起動しなくなりました。エラーメッセージには「Failed to load R0 module ... for device usb-ehci (VERR_SYMBOL_VALUE_TOO_BIG)」と表示されました。一見すると意味不明な内容ですが、早速ト