CrowdStrikeから学ぶソフトウェアテストの教訓【前編】
CrowdStrikeが「想定外の障害」を防げなかった“本当の理由”
システム障害は技術的な問題ではなく、テスト戦略の欠如が原因で発生することがしばしばある。CrowdStrikeによる「Windows」障害もその例だ。現代のシステム運用が抱える、ソフトウェアテストの根本的な課題とは。
2024年7月、セキュリティベンダーCrowdStrikeのエンドポイントセキュリティツール「CrowdStrike Falcon」が、MicrosoftのOS「Windows」を搭載した世界各地のデバイスにシステム障害を発生させた。その事件からある程度時間がたった。全てのソフトウェア開発者にとって、このインシデントを振り返ることには意義がある。CrowdStrike事件では何が起きたのか。なぜ起こったのか。そこから得るべき教訓とは何かを考えるために、まずは“事件の真相”に迫る。
CrowdStrikeの障害で何が起きたのか
併せて読みたいお薦め記事
CrowdStrikeの障害から考える
「アンチマルウェア」(「アンチウイルス」とも)など、セキュリティソフトウェアは通常、マシンの機能を制限なく利用できる「カーネルモード」で実行する必要がある。通常のアプリケーションのように「ユーザーモード」で実行すると、マルウェアがセキュリティソフトウェアを見つけて上書きしたり、破壊したりする危険性があるからだ。
今回の問題は、CrowdStrike FalconがOSの中核である「カーネル」で動作することが原因となって発生した。カーネルはOSに対して非常に強い操作権限を持ち、通常の権限では操作できないメモリや記憶領域を操作できる。
CrowdStrikeのレポートによると、CrowdStrike Falconのクラッシュを引き起こしたのはセンサー(エージェントソフトウェア)本体のソースコードの変更ではなく、センサーの設定更新「Rapid Response Content」だった。Rapid Response Contentはカーネルモードで実行されていたため、Windowsが例外としてキャッチできなかった。CrowdStrike FalconはOS起動時にマルウェアをスキャンするため、単純な再起動では問題を解決できなかった。OSとして「macOS」もしくは「Linux」を搭載するデバイスは、カーネルモードでセキュリティソフトウェアを実行しないため、今回のシステム障害で影響を受けなかった。
CrowdStrikeの障害の影響は?
世界全体を機能不全に陥れたCrowdStrikeの更新は、Microsoftによれば、影響を受けたのは世界中の全Windows搭載デバイスの1%未満だった。とはいえ2023年の時点で、セキュリティソフトウェア市場におけるCrowdStrikeのシェア率は15%を超えていた。ミッションクリティカルなPCがCrowdStrike Falconを使っていた可能性は否定できない。
2024年7月19日(現地時間)、米国の主要航空会社、病院、911(警察・消防への緊急通報)、地方政府機関、州政府機関、連邦政府機関において、Windowsを実行するサーバやPCにアクセスできなくなり、大規模な障害が発生した。特に大きな影響を受けたのはDelta Air Lines(デルタ航空)で、システム障害によって5日間に約7000便が欠航、総額5億ドルの損害を被ったという報道がある。
障害リスク評価ベンダーParametrix Solutionsによると、経済誌Fortuneが発表する企業の売上高ランキング「Fortune 500」に名を連ねる企業の中でMicrosoftを除き、今回の障害の直接的な損害額の見積もりは少なくとも54億ドルだ。これには、企業ブランドへのダメージや、売り上げの機会損失は含まれていない。
レポートと根本原因分析から読み解く教訓
私から見れば、CrowdStrikeのインシデントレポートは、複数の解釈ができる専門用語を使用しており、多少の曖昧さが残る。とはいえ、以下の点は明確だ。
CrowdStrikeは、Windowsのカーネルモードで実行されるプログラムの変更と、ソフトウェアの更新プログラムを配信している。更新には2種類ある。1つ目は、重大なセキュリティ脆弱性に緊急対応するためのもので、これがRapid Response Contentに当たる。2つ目は、厳格な品質保証プロセスを踏む定期的な更新だ。Rapid Response Contentは極めて重要なため、通常の段階的な展開プロセスを省いて、一斉配信される。更新の配信プロセスにおいては、事前検証にかかる時間と緊急性のバランスを取るということだ。しかし皮肉なことに、今回のシステム障害は、Rapid Response Contentとして配信されたものだった。
問題の所在は明白だ。CrowdStrikeは、テストシステムにバグがあったと説明している。同社はレポートで「Content Validator(コンテンツ検証システム)のバグによって、問題のある更新データがあったにもかかわらず検証をクリアした」と述べている。これは奇妙な説明だ。本質的には「テストが更新データの問題を見逃したという問題」を、「テストシステム自体の問題」として表現しているからだ。
CrowdStrikeが2024年8月に発表した根本原因分析レポートによると、次の技術的問題があった。
- ワイルドカード(不特定の文字列を指定するための記号)を使ったパターンマッチング(データから文字列といったパターンを特定し、似ているパターンを探す方式)は実施したが、完全一致でのテストが不十分だった
- プログラムが想定していた入力値と、実際に送られてきた値に不一致があった。その結果、境界外メモリ状態(プログラムがアクセスを許可されていないメモリ領域にアクセスしようとした状態)が発生した
レポートを見ると、根本的な原因は1つではなく、一連のエラーが連鎖していることが読み取れる。
- テストデータそのものに不備があった
- テストケースに漏れがあった
- 適切なエラー処理が実装されていなかった
CrowdStrike Falconの更新プログラムは配信方式が一斉配信のみであり、ユーザー企業は段階的な配信を選択できなかった。今回のような「偶然の重なり」は極めてまれで、そうそう直面しないと考えることはできるが、別の見方もできる。スペースシャトル「チャレンジャー」号の爆発事故の分析によると、システムは優れた保護機能を備え、冗長性があり、厳格な安全基準に従っていた。だがルールが厳格過ぎたため、現場はルールから少し外れた例外を日常的に許容してしまっていた。これは「逸脱の常態化」という現象だ。
レポートでは改善案として、「ローカル開発者のテスト」や「コンテンツの更新とロールバックのテスト」が挙げられている。これから分かるのは、開発者がテストしていなかったという事実だ。プログラミングできる開発者が、物理PCであれ仮想マシンであれ、更新をテストしていれば、問題に気付き、防ぐことができたはずだ。
次回は、CrowdStrikeのシステム障害を受けて、ソフトウェア開発者が実施すべきことについて考える。
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[LRM株式会社] 「標的型攻撃メール」事例・サンプル集 -
製品資料
[LRM株式会社] セキュリティ教育はなぜ「年間計画」を立てる必要があるのか? -
製品資料
[LRM株式会社] セキュリティの重要性が伝わらない…… 効果がない社員教育から脱却する方法 -
製品資料
[LRM株式会社] 「標的型攻撃メール訓練」導入ガイド 社員の意識を確実に高める仕組みの作り方 -
事例
[株式会社マクニカ] アイカ工業に学ぶ脆弱性対策 情シスが把握できずにいたアセットも正確に把握
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「VMware離れ」は本当か 3000社がVCF 9にかじを切った現実的な理由
-
2
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
3
「Microsoft 365」が乗っ取られる 跡形もなくMFAを破る手口
-
4
Oracle巨大ITプロジェクトはなぜつまずいたのか 8年で導入1割、追加で170億ドル
-
5
Microsoft製品でここまで自動化できる 情シスがやめられる手作業10選
-
6
AI全部入り「Microsoft 365 E7」に企業が二の足を踏む訳 移行意向はわずか4%
-
7
ISMSの“コンサル丸投げ”が招く数千万円の無駄 NTTドコモビジネスの脱出劇
-
8
エンジニアが選考を辞退する本当の理由 7割が隠す“面接の違和感”とは
-
9
Netflixのバックエンドは「ほぼJava」 3000超のアプリを支える開発基盤の裏側
-
10
なぜOpenAIやAnthropicのAIは「脱走」したのか 情シスが迫られるエージェント統制
ホワイトペーパーランキング PR
-
1
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
2
AIが「わざわざ使うツール」になっていない? 業務で自然に使う導線にする秘訣
-
3
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
4
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
5
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
6
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
7
PostgreSQLの「機能」「性能」「運用」「拡張性」に関する悩みの解消法
-
8
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
9
Macの安全神話は崩壊? 最新の脅威動向から見えた攻撃のトレンドと有効な対策
-
10
情報セキュリティ対策早分かりガイド:25の自社診断で弱点と解決策を理解
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー