先日CrowdStrikeの欠陥アップデートにより、世界中の多くのWindowsデバイスでBSODが発生するという深刻な問題が発生しました。
MicrosoftはCrowdStrikeらと協力して事態の沈静化のために動き、CrowdStrikeは問題の原因が、同社のCSagentドライバが境界外アクセス違反(read-out-bounds access violation)を発生させたことによると「Preliminary Post Incident Review(事故後の予備的レビュー)」で説明しています。
Microsoftもこの問題に対する詳細な技術分析を発表し、クラッシュの原因はCrowdStrike社のCSagentドライバのメモリ安全性エラーであったことをあらためて確認しています。
この記事によるとcsagent.sysは、ファイルの作成や変更を含むファイル操作に関する通知を受け取ることができるファイルシステムフィルタドライバとしてWindows PCに登録されていたとのこと。ファイルシステムフィルタドライバは、ブラウザ経由でディスクに保存された新しいファイルをスキャンするために、セキュリティ製品でよく使われています。
Microsoftはサードパーティのソフトウェアにカーネルレベルのアクセスを許可していることから、多くの批判を受けましたが、ブログの中で、なぜセキュリティ製品にカーネルレベルのアクセスを提供するのかについて次のように説明しています:
- カーネルドライバは、システム全体の可視化と、ブートキットやルートキットのような脅威を検出するためにブートプロセスの早い段階でロードする機能を可能にする。
- Microsoftは、プロセスやスレッド生成のためのシステムイベントコールバック、ファイルフィルタドライバなどの機能を提供している。
- カーネルドライバは、高スループットのネットワークアクティビティなどの場合に、より優れたパフォーマンスを提供する。
- セキュリティソリューションは、マルウェア、標的型攻撃、悪意のある内部者によって、たとえ攻撃者が管理者レベルの権限を持っていたとしても、自社のソフトウェアが無効化されないようにしたいと考えている。Windowsは、このような理由から、ブートプロセスの早い段階でEarly Launch Antimalware(ELAM)を提供する。
セキュリティ製品からカーネルドライバのアクセスは必要なものですが、カーネルドライバはWindowsで最も信頼されているレベルで実行されるため、リスクが高まるというトレードオフも存在します。
Microsoftは、セキュリティソリューションプロバイダーに対し、可視性や改ざん防止といったニーズと、カーネルモード内で動作するリスクとのバランスを取るよう推奨しています。例えば、カーネルモードで動作する最小限のセンサーをデータ収集と実施に使用することで、可用性の問題への露出を抑えることができるようになります。アップデートの管理、コンテンツの解析、その他の操作といった残りの機能は、ユーザーモード内で分離して行うことができます。
Microsoftは今後信頼性とセキュリティを高めていくため次のようなことを計画しています:
- セキュリティ製品のアップデートをより安全に実施するための、安全なロールアウトガイダンス、ベストプラクティス、技術の提供。
- 重要なセキュリティデータにアクセスするためのカーネルドライバの必要性を減らす。
- 最近発表されたVBSエンクレーブのような技術により、強化された分離と改ざん防止機能を提供する。
- Windowsネイティブ・セキュリティ機能の健全性に基づいてマシンのセキュリティ状態を判断する方法を提供する高信頼性認証のようなゼロ・トラスト・アプローチを可能にする。
セキュリティ製品がWindowsのカーネルドライバを利用することは当面避けられそうもありませんが、リスクを減らすための取り組みが行われていることがわかります。
[via Neowin]