突如パソコンが固まる「ブルースクリーンエラー」、原因はアンチウィルスソフトかも?
Tech Note
皆さん、こんにちは。Blue Planet-works坂尻です。
突然ですが、こんな経験ありませんか?
「何時間もかけて編集している資料を保存しようと思ったらパソコンが固まって保存する前に消失した。」
こんな時はかけた時間に比例して、言葉には表せない喪失感や疲労感を感じてしまうものです。
パソコンが固まった時、Windows OSは青いエラー画面を表示することがあります。これは、その見え方から「ブルースクリーンエラー」と呼ばれています。
このエラーが発生する主な原因としては、以下のようなことが考えられます。
① Windowsドライバに不具合がある
② パソコンのメモリが不足していたり、メモリ自体に障害が発生している
③ パソコンのハードディスクが破損している
今回は、この「ブルースクリーンエラー」を引き起こすWindowsドライバとアンチウィルスソフトウェアの関係についてお話します。
ブルースクリーンエラーを引き起こすアンチウィルスソフトウェア
少し古い話になりますが、2018年1月にCPUのアーキテクチャに関する脆弱性「Meltdown」と「Spectre」が公開されました。マイクロソフト社は公開当日にWindows OSの緊急アップデートを配布しましたが、注意事項として『アンチウィルスソフトウェアを導入しているパソコンやサーバに適用した場合に「ブルースクリーンエラー」が発生する危険性がある』と指摘しました。
過去のブログ「深刻なCPUアーキテクチャの脆弱性に対するAppGuardの優れた効果」
具体的な指摘内容をマイクロソフトサポート記事の一部を抜粋して掲載します。
“The compatibility issue arises when antivirus applications make unsupported calls into Windows kernel memory. These calls may cause stop errors (also known as blue screen errors) that make the device unable to boot. To help prevent these stop errors, Microsoft is currently only offering the January and February 2018 Windows security updates to devices that are running antivirus software that is from antivirus software vendors who have confirmed that their antivirus software is compatible by setting a required registry key.”
※出典 「Important: Windows security updates and antivirus software」
この記事を翻訳すると以下の通りです。
『アンチウィルスソフトがWindowsカーネルメモリに対して非公開のコールを行った場合に互換性の問題が発生します。これらのコールによってブルースクリーンエラーが発生することがあり・・・(中略)・・・必要なレジストリキーを設定したアンチウィルスソフトウェアが動作しているデバイスにのみ提供しています。』
これは、アンチウィルスソフトウェアが不正なプログラムを検出するために非公開のカーネルインタフェースを利用していることを意味しており、これにより、Windows OSのアップデート時に「ブルースクリーンエラー」を引き起こされてしまう可能性があることを示唆しています。
ただ、一方でWindows OSの緊急アップデートでも全く影響を受けなかったセキュリティ対策ソフトウェアがありました。それがAppGuardです。AppGuardはなぜWindows OSのアップデートに影響を受けなかったのでしょう。その謎を紐解くために、次項ではAppGuardの設計原理を紹介します。
Windows OSアップデートの影響を受けないAppGuard
ほとんどのアンチウィルスソフトウェアは、非公開のカーネルインタフェース(Undocumented Kernel API) やアプリケーションレベルの非公開で独自のAPIフックを利用して設計されています。これらは、Windows OSとの連携で重大な障害を度々引き起こしてしまいます。結果として、端末に前述した「ブルースクリーンエラー」といった深刻な影響を与えてしまいがちなのです。
一方、AppGuardはマイクロソフト社が認定して公開したカーネルAPI(Documented Kernel API)を利用しています。これこそが、AppGuardがWindows OSとAPIの連携で深刻な問題を発生させない主たる設計原理なのです。
弊社CTOであるファティ・コムレコグルはマイクロソフト社のカーネルチームと直接連携して、公開されたカーネルインタフェース(API)を構築しました。
彼が推奨・設計・構築した公開カーネルAPIは15年以上前からWindows OSに実装されており、現在もOSの基本的な機能であり変更することは基本的にできません。
この公開カーネルAPIはWindows Vista SP1からWindows10の全バージョンで変更されることなく実装されていることから、その普遍性が証明されています。
また、この公開されたカーネルAPIはWindows Server 2008 R2、Windows Server 2012、Windows Server 2016、およびWindows Server 2019でも変更されることなく実装されているためAppGuard Server for Windowsでも同じ設計原理が適用されています。
Windows 11も公開カーネルAPIを搭載
マイクロソフト社はWindowsに対して下位互換性を提供する必要があります。なぜならば、これらのコアとなるWindows OSのAPIや関連するデータ構造を変更すると、APIを利用するアプリケーションが全て動作しなくなってしまうからです。
マイクロソフト社がAPIのアーキテクチャを変更する場合、すべてのアプリケーションが動作を担保する必要があります。そのためマイクロソフト社はWindowsアプリケーションとカーネルドライバが依存している全ての公開APIを書き換えなければなりません。なぜなら、マイクロソフト社自身も重要なシステム機能を実装するために、これらのカーネルAPIを利用しているからです。技術的には不可能な話ではありませんが、これは何年もの時間をかけてこそ成し得るかつてない程の大規模プロジェクトなのです。この事実から、公開カーネルAPIが今後変更される可能性は限りなく低いのです。
マイクロソフト社がWindows OSのバージョンアップに伴う公開カーネルAPIの互換性を担保する限りAppGuardのWindows OS互換性も担保されるということになります。
最後に、Windows 11プレビュー版でも、公開カーネルAPIが利用可能でAppGuardが動作することは確認済みであり、互換性が担保されていることは証明されました。
2021年10月6日
株式会社Blue Planet-works
Chief Technical Service Officer 坂尻 浩孝
AppGuardで感染対策を!ホワイトペーパーをダウンロード!