大規模なブルースクリーン障害 原因の解析が進む
7月19日、世界各地のWindows PCが「ブルースクリーン」でダウンしたシステム障害が大きな話題になっています。いったい何が原因だったのか、解析が進んでいます。
ブルースクリーンの原因は?
システム障害が起きたのはCrowdStrike(クラウドストライク)による企業向けセキュリティ製品を導入しているWindows PCです。米国の公式ブログや、日本の販売代理店であるマクニカが技術的な背景を説明しています。
実際に起こった現象としては、Windowsが再起動を繰り返すというものですが、これが世界規模で同時に起きたことで多大な混乱を引き起こしています。巻き込まれた人は不運だったというしかありません。
ブルースクリーンはWindowsに昔から組み込まれているエラー画面で、システムを強制的に停止せざるを得ない致命的な状況に陥ったことを示しています。
SNSで多数報告されたブルースクリーン画面によると、障害を起こしたファイル名はCrowdStrikeによる「csagent.sys」、停止コードは「PAGE_FAULT_IN_NONPAGED_AREA」となっており、OSなどが使用する非ページ領域のメモリーへのアクセス時に問題が起きたことが読み取れます。
一般的なソフトウェアでは、メモリーに関する不具合があったとしても、プロセスを終了させることでOSや他のアプリは動作を続けられます。しかしカーネルモードで動くソフトウェアの場合、OSを巻き込んで落ちることになります。
強制終了をすると、保存していないデータが失われるなどの問題が起きる可能性はあるものの、放っておけば他のアプリが使っているメモリー領域を書き換えるなど、被害が拡大する恐れがあります。
ユーザー視点では、ブルースクリーンが出てくるとWindowsに問題が起きたように見えます。しかしWindows側からすれば、想定外の事態からユーザーを保護するために、ある意味「正しく」対処した形といえるわけです。
一方、CrowdStrikeの説明によると、今回の障害の原因は「チャネルファイル(Channel File)」にあるといいます。これはさまざまな脅威に対処するためのセンサー(Falcon)用の設定ファイルで、1日に数回アップデートとして配信されるようです。
このファイルはWindowsのシステムフォルダ内にある「drivers」の下に配置され、拡張子も「sys」となっているものの、設定ファイルであり、csagent.sysのようなカーネルモードドライバではないと説明されています。
一見すると理解に苦しむ仕様ですが、普通のソフトウェアとの違いとして考えられるのは、CrowdStrike自身も悪意のある攻撃に晒されるという点です。攻撃側の視点に立てば、チャネルファイルのような仕組みはどうにかして無力化したいはずなので、その対策をしている印象を受けます。
その中で、今回配信されたチャネルファイル「291」の内容に「ロジックエラー」が発生する問題が含まれていたことによってWindowsがクラッシュし、ブルースクリーンの表示に至ったと説明しています。
どういった経緯で内容に問題があるチャネルファイルが配信されてしまったのか、また実行時にチェックする仕組みはなかったのか、疑問は尽きないところですが、根本原因は引き続き調査中としています。
セキュリティ製品としては引き続き有効か
米ナスダックに上場しているCrowdStrikeは、コロナ禍におけるリモートワークを支えるセキュリティ製品として広く普及。6月にはS&P 500指数の構成銘柄に採用されています。
世界各国に採用が広がっていたことで多大な影響が出たといえますが、セキュリティのための製品で障害が起きるのは本末転倒であり、非難の声が高まるのは必至でしょう。
(追記:米マイクロソフトは850万台のPCが影響を受けたと推定しています)
ただ、CrowdStrikeのような製品が必要になる背景を考えれば、サイバー攻撃への対策というニーズがあることは明らかです。PCは自由度が高い反面、さまざまな攻撃も可能になることから、攻撃側を上回る強力な防御の仕組みが必要です。
たとえば今回問題となったチャネルファイルは「名前付きパイプ(Named Pipe)」の監視が目的としています。これはWindowsにおける古典的なプロセス間通信の仕組みの1つであり、そうした技術を悪用した攻撃が増えていることを示唆しています。
今回の障害の原因はすでに取り除かれ、問題となったチャネルファイルは正常に稼働しているとのこと。これまでに出ている情報を見る限りでは、ランサムウェアやマルウェア対策として引き続き有効なツールであると考えます。