事象と原因について
2024年7月19日にWindowsPCがブルスクになるという報告があり、原因は米サイバーセキュリティ企業CrowdStrikeの製品が原因だった。
問題報告したユーザのスクリーンには、同社製品のドライバである「csagent.sys」が原因と記載。
法人向け製品の提供の為、今回の事象は同社製品を導入している企業PCで発症したと想定される。
要約すると、米サイバーセキュリティ企業提供のCrowdStrike製品では、カーネルレベルで動作していたことが今回の事象原因と発表。
米Microsoftがカーネル外で動作するようにWindowsに変更を加える計画を2024年9月12日に発表。
https://www.itmedia.co.jp/news/articles/2409/13/news102.html
ソフトウェアについて
カーネルを理解する為に、ソフトウェアから簡単に整理します。
ソフトウェアは大きく分けると「応用ソフトウェア」と「システムソフトウェア」の2つに分かれ、各ソフトウェアは以下のように分類できます。
今回の要因として挙げられたカーネルというのはOSの中核であり、表で言うとシステムソフトウェア内の基本ソフトウェアの部分に該当します。
基本ソフトウェアは制御プログラム・言語プロセッサ・サービスプログラムの3つに細かく分類され、制御プログラムが所謂カーネルになります。
つまり、OSを広い意味で解釈すると「OS=基本ソフトウェア」ですが、狭い意味に限定すると「制御プログラム」となります。
<制御プログラム>
ハードウェアを管理して、応用ソフトウェアやミドルウェアから、コンピュータが効率的に利用できるように制御されるソフトウェアです。
一般的に制御プログラムのことをカーネルと呼ぶらしいですが、厳密にいうと制御プログラムも、「カーネル」「デバイスドライバ」「ファイルシステム」の3つで構成されています。
カーネルは、ジョブ管理、タスク管理、記憶管理、割込み管理、データ管理などを行います。
<言語プロセッサ>
C言語やJavaなどのプログラミング言語で書かれたプログラムを、コンピュータが理解できる機械語に翻訳するプログラム
<サービスプログラム>
コンピュータの機能を補う、補助的なプログラムで、ユーティリティとも呼ぶ。ファイル圧縮プログラム等。
まとめ
ソフトウェアの中でカーネルの位置を整理したところで、カーネルというのはOSの中核であり、少しのミスでシステムそのものを破壊しかねないデリケートな存在であることがわかるかと思います。
今回の事象は、セキュリティソフトの製品がカーネルレベルで動作していたことが原因であり、対策としてカーネルレベルへの接続回避とWindows変更計画とのことで、MicrosoftがCrowdStrikeやセキュリティ会社に向けたAPIを提供する方針でしょうか。
セキュリティソフトがカーネルで動作することはハイリスクハイリターンってイメージでしょう。
ブルスクを引き起こしてしまいカーネル外で動作させるしかないという判断だと思いますが、Micorosoftによると現在は必要最小限の部分だけカーネルモードで動作させ、その他の部分は回復が容易なユーザモードで動作するようなセキュリティ製品アーキテクチャを実現できるらしいです。