検索
ニュース

CrowdStrikeが引き起こした大規模障害の根本原因はメモリアクセス違反、Microsoftが確認セキュリティ製品がカーネルドライバを使用する理由も解説

CrowdStrikeが提供するセキュリティプラットフォーム「Falcon」の構成ファイルの不具合により、世界中の多数のWindowsデバイスでブルースクリーン問題が発生した。これを受けてMicrosoftは、この障害の根本原因の技術的概要や、現在のセキュリティ製品がカーネルモードドライバを使用する理由について公式ブログで解説した。

Share
Tweet
LINE
Hatena

 CrowdStrikeが提供するセキュリティプラットフォーム「CrowdStrike Falcon」の構成ファイルの不具合により、2024年7月19日(米国時間、以下同)に世界中の約850万台のWindowsデバイスでブルースクリーン問題が発生した。

 これを受けてMicrosoftは7月27日、この障害の根本原因の技術的概要や、現在のセキュリティ製品がカーネルモードドライバを使用する理由について公式ブログで解説した。

 CrowdStrikeは、Falconプラットフォームのセキュリティ保護メカニズムの一環として、1日に数回更新しているWindowsシステム用センサー(エージェント)の構成ファイル(「チャネルファイル」と呼ばれる)のうち、7月19日4時9分(日本時間で同日13時9分)にリリースしたものがロジックエラーを引き起こし、システムクラッシュとブルースクリーン問題につながったと、ブログなどで説明。根本原因は、このファイル(CSagent.sysドライバ)におけるメモリ安全性の問題、具体的には、境界外読み取りのアクセス違反だとしている。

 Microsoftは、「Microsoft WinDBG Kernel Debugger」と幾つかの無料の拡張機能を利用して、この障害に関連するWindows Error Reporting(WER)カーネルクラッシュダンプを分析し、CrowdStrikeの説明内容を確認した。

Microsoftの見解

 Microsoftによると、CSagent.sysモジュールは、ファイルシステムフィルタードライバとしてWindowsに登録されている。ファイルシステムフィルタードライバは一般的に、ファイルの作成や変更などファイル操作に関する通知を受信するために、マルウェア対策エージェントが使用している。これにより、ディスクに新しいファイル(ブラウザがダウンロードしたファイルなど)が保存されるたびに、セキュリティ製品がそれをスキャンするといったことが可能になる。

 さらにファイルシステムフィルターは、システムの動作を監視するセキュリティソリューションが、シグナルを受信する目的でも使用できる。

 CrowdStrikeはブログで、チャネルファイルの更新の一環として、名前付きパイプの作成に関わるデータに関連するエージェントのロジックを変更したと説明している。

 ファイルシステムフィルタードライバAPIにより、システム上で名前付きパイプのアクティビティー(名前付きパイプの作成など)が発生したときに、ドライバは呼び出しを受けることができる。このドライバの一般的な機能は、CrowdStrikeが説明した情報と相関している。

 CrowdStrikeは、障害を引き起こしたチャネルファイルを「バージョン291」として特定しており、Microsoftはクラッシュダンプの分析により、このファイルが読み込まれていたことを確認している。

 このファイルがクラッシュダンプにおけるアクセス違反とどのように関連しているかを把握するには、ツールを用いてドライバをデバッグする必要があるが、Microsoftは、その調査はブログ記事の目的から外れるとして、行っていない。

なぜセキュリティソリューションがカーネルドライバを使用するのか

 今回の大規模障害が示すように、セキュリティソリューションがカーネルドライバを使用することには、大きなリスクが伴う。Microsoftは、それでも多くのセキュリティベンダーがカーネルドライバアーキテクチャを利用している理由を以下のように解説している。

セキュリティ関連イベントの可視化

 カーネルドライバはシステム全体の可視化を可能にし、ユーザーモードアプリケーションよりも前にロードされるブートキットやルートキットのような脅威の検出も可能にする。さらにMicrosoftは、プロセスやスレッド生成のためのシステムイベントコールバックや、ファイルの作成、削除、変更などのイベントを監視できるフィルタードライバなどの機能も提供している。

パフォーマンス

 カーネルドライバは、セキュリティベンダーが潜在的なパフォーマンスメリットを求めて使用することも多い。例えば、高スループットのネットワークアクティビティーに対する分析やデータ収集には、カーネルドライバが有効な場合がある。

改ざん耐性

 カーネルモードでドライバを実行するもう1つの利点は、改ざん耐性だ。セキュリティ製品は、マルウェア、標的型攻撃、悪意ある内部者などが管理者レベルの権限を持っていても、無効化されないようにする必要がある。また、ドライバをできるだけ早期にロードし、システムイベントをできるだけ早い段階で観測できるようにする必要がある。

 Windowsはこうした理由から、ELAM(Early Launch Antimalware)としてマークされたドライバを、ブートプロセスの早い段階で起動するメカニズムを提供している。

カーネルドライバのトレードオフ

 一般的なケースとして、カーネルドライバに関しては、セキュリティベンダーが合理化しなければならないトレードオフがある。カーネルドライバは、回復力を犠牲にして上記の特徴を発揮する。Windowsで最も高い信頼レベルで実行され、封じ込めや回復の機能がもともと制約されている。

 そのためにセキュリティベンダーは、可視性や改ざん耐性といったニーズと、カーネルモードで動作するリスクとのバランスを慎重に取らなければならない。例えば、データ収集や機能強制のためにカーネルモードで動作する最小限のエージェントを使用し、製品の他機能をユーザーモードで分離して実行することで、可用性や信頼性のリスクを抑えることができる。


カーネルモードとユーザーモードで機能を分離し、セキュリティと信頼性を両立させるセキュリティ製品のアーキテクチャ例(提供:Microsoft)

 カーネルレベルで動作する全てのコードは、通常のユーザーアプリケーションとは異なり、障害発生時に再起動することができない。そのために広範な検証を必要とする。これはあらゆるOSで共通している。

 そこでMicrosoftは、複雑なWindowsのコアサービスをカーネルモードからユーザーモードに移行することに投資してきた。こうしたコアサービスの一例がフォントファイルの解析だ。

 Windowsは、仮想化ベースのセキュリティ(VBS)エンクレーブや、保護プロセスなど、改ざん耐性を実現する幾つかのユーザーモード保護アプローチを提供しており、ベンダーはこれらを用いて主要なセキュリティプロセスを保護できる。

 VBSエンクレーブは、ホストアプリケーションのアドレス空間内のソフトウェアベースの実行環境だ。VBS技術を利用して、メモリの安全なパーティション内におけるアプリケーションの機密性の高い部分を分離する。

 またWindowsは、マルウェア対策スキャンインタフェース(AMSI)など、ETW(Event Tracing for Windows)イベントとユーザーモードのインタフェースを提供し、イベントの可視化をサポートしている。

 AMSIは、アプリケーションやサービスをコンピュータ上のあらゆるマルウェア対策製品と統合できるようにする汎用(はんよう)性の高いインタフェース標準。ETWはWindowsに実装されており、ユーザーモードアプリケーションとカーネルモードドライバによって発生したイベントをトレースし、ログに記録するメカニズムを提供する。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る