何が起きたか
2024年7月19日、サイバーセキュリティ企業CrowdStrikeは、企業のマシン上でWindowsのカーネルレベルで深く動作するFalconセンサーソフトウェアに、定例の設定アップデートを配信した。このアップデートは、名前付きパイプの検査を担うChannel File 291というファイルを変更したが、これには範囲外のメモリ読み取りを引き起こす欠陥が含まれていた。センサーは穏やかに失敗する代わりに無効なページフォールトを引き起こし、Windowsをブルースクリーン・オブ・デスと起動ループに陥らせた。
Falconセンサーは非常に多くの企業システム上で高い権限で動作していたため、障害はほぼ瞬時に広がった。マイクロソフトは後に、約850万台のWindowsデバイスが影響を受けたと推定した。これは全Windowsマシンの1パーセント未満だが、企業を動かしているマシンの中では大きな割合を占める。航空会社は数千便を運航停止し、病院は紙への切り替えを余儀なくされ、銀行、放送局、小売店、政府サービスが世界中で停止した。CrowdStrikeの顧客は24,000社以上に上り、フォーチュン500企業のおよそ60%を含んでいた。
CrowdStrikeは約1時間以内に不具合のあるファイルを元に戻し、CEOのジョージ・カーツはこれが攻撃ではなく事故であることを確認した。しかし、すでにクラッシュしたマシンは修正プログラムを自動的にダウンロードできなかった。ITスタッフは各マシンをセーフモードで再起動し、問題のあるファイルを手動で削除する必要があり、BitLockerディスク暗号化を使用しているマシンではさらに複雑になった。完全な復旧には数日を要した。世界的な経済的損害は数十億ドルと推定され、情報技術の歴史における最大の障害となった。
その代償
ファイルは1時間以内に元に戻されたが、クラッシュしたマシンには手動のセーフモード修正が必要だったため、復旧には数日を要し、損失は50億ドルを超えた。
なぜ起きたのか
コンテンツアップデートは、段階的またはカナリア配信なしで、一度にすべての導入済みベースに配信される前に十分に検証されていなかった。
センサーはカーネルレベルで動作するため、そのバグは封じ込められることなくオペレーティングシステム全体をクラッシュさせた。
CrowdStrikeのソフトウェアは、顧客がコンテンツアップデートを遅延させたり段階的に配信したりする方法を提供していなかったため、すべてのマシンが問題のあるファイルを直ちに受け取った。
復旧にはマシンごとの手動介入が必要だったため、修正が存在してからも長く障害が続いた。
教訓
カーネルで動作するソフトウェアは、保護するマシン自体を停止させ得る。まず小規模なカナリアグループに配信し、コンテンツアップデートをコードと同様に検証し、不具合のあるアップデートが致命的ではなく安全に失敗するようにせよ。
その後
CrowdStrikeは謝罪し、影響を受けた顧客に補償し、コンテンツアップデートのテストと段階的配信の方法を全面的に見直し、カナリアリングと配信タイミングに対する顧客の制御を追加した。この事件は、単一のカーネルレベルのセキュリティ製品を世界の重要インフラ全体で動作させることの脆弱性、およびWindows上でそのようなソフトウェアに深いカーネルアクセスを認めるというマイクロソフトの決定についての議論を再燃させた。最も大きな打撃を受けた一社であるデルタ航空は、数億ドル規模の損失を報告した。「CrowdStrike障害」は、一つの不具合のあるアップデートがいかに世界を止め得るかを表す代名詞となった。
出典をたどる
出典
- CrowdStrike — Channel File 291 Incident Root Cause Analysis (August 2024) crowdstrike.com
- 2024 CrowdStrike incident — Wikipedia en.wikipedia.org