CrowdStrikeによるWindowsの大規模障害について
はじめに
2024/07/19に全世界のWindows端末でBSOD(Blue Screen Of Death)が発生した(なお、トップ画像はBSODのサンプルとして掲載したが、今回の物ではないので注意されたい)。多分ITの人以外には何が起きたのかもそうだが、そもそも原因となったCrowdStrikeってなによってのもピンとこないと思う。なので、ちょっとした社会貢献のつもりでそのあたりをまとめてみようと思う。
一般の方へのわかり易さ重視で書いてるので、専門家から見て嘘があったらゴメンナサイ。
BSODってなにさ
BSODとはWindows系のOSで致命的なエラーが発生した状況のことである。OSが死んだ時の青いスクリーンの事なので、Blue Screen Of Deathと呼ばれている。
発生の原因としては機械の故障やウイルス等によるものもあるが、一般的にはドライバ(パソコンに刺さってる部品とかを制御したりするための基礎となる小さなプログラムのようなもの)の不具合で発生することが多い。なので、新しい周辺機器を追加した後なんかによく発生する。
windows3.1ぐらいからパソコンを使っている大きなお友達は頻繁にこういう画面を見たと思うが、最近はあまり発生しない。何故か。
昔よくあった原因はメモリ破壊だ。パソコンの中はメモリという、作業中の状態を色々メモする領域があって、それを見ながら動いている。阿呆プログラムが間違えて大事なところを書き換えると、OSが参照するメモが壊れてるのでマトモに動かなくなるのだ。
今どきのWindowsはOSがメモする領域と、あとで入れたゲームとかのアプリのメモする領域を別の部屋に分離したりして、阿呆プログラムがいてもOSが落ちないようガードを固めたりしている。
しかし例外なのがドライバだ。機械を動かしたりする都合上、OSと連携して動く必要があるため、同じ部屋で仕事をすることになる。なので今どきのOSは、ドライバがマトモかどうかを検証して、マイクロソフト社の署名を付けるなどの工夫で、ドライバが原因の障害を抑える努力をしているのだ。
じゃあ何でCrowdStrikeはやらかしたの?
CrowdStrikeはEDRと呼ばれるセキュリティ強化の製品だ。OSのいろんな動きを監視したり、ログを残したり、時にOSの動きに手を加えたりして、様々な攻撃から守る強力な守護者である。なので、OSと同じ部屋の中で動く必要があるのだ。
攻撃者の手口は日々とんでもない速度で更新される。なのでそれを防ぐための方法も日々更新しなければいけない。その更新の中に致命的なバグ、プログラムの欠陥が含まれたため、今回の問題が起きたのだ。
何でこんなに被害が大きかったの?
CrowdStrikeがEDRというセキュリティソフトのジャンルにおいて、世界一信頼される、世界一シェアの高い製品だからである。セキュリティを強化するために、パソコンにもサーバーにも導入されていた。今回問題となった更新が公開されてから、修正版が公開されるまでの間に電源が入っていた端末がほぼほぼ被害を受けた形となり、世界の被害台数は850万台にも登るという。
すぐに更新版が提供されたなら何が問題なの?
詳細は不明だが、BSODになって、パソコンなどの端末を再起動したらそこそこ動いて、ネット経由で更新版が適用されて、うまく直った端末と、何度再起動してもBSODになる端末がいるようだ。
後者はネットに繋がらない、というかOSとして起動してこないので、そもそもネット経由では更新版が適用できない。後者の場合が非常に問題なのだ。セーフモードで起動して、問題となるファイル1個を手動で消す必要がある。
windowsにはセーフモードと言って社外のドライバなどを読み込まずに起動する方法があるのだ。大体の場合は何かのボタンを押しながら再起動して、起動方法の選択画面とかに入ってセーフモードを選ぶことになる。多分、一般ユーザーには操作が難しい。暗号化されているパソコンの場合は回復キーが必要な状況もある。結果として、拠点をたくさん持つ会社のITシステム担当は、ネットワーク越しには対応ができず、各拠点を回ることになるだろう。
さらに面倒なパターンがあって、AWSとかAzureとかパブリッククラウドと呼ばれる、仮想サーバを貸してくれるサービスが有る(みんな意識していないが、スマホゲームのサーバは全部そうだ。ただ、普通ゲームサーバはwindowsではないのでゲームは止まってないはず)。実は仮想サーバの場合、ボタンを押しながらセーフモードという方法が使えない。ではどうするか。
OSの入った仮想ハードディスクを一旦仮想サーバから取り外して、別の仮想OSに外付けハードディスクのように接続して、問題のファイルだけ消して、また元の仮想サーバに接続してって作業が必要になる。ITに詳しくない人にはなんだか分からないと思うので、「セーフモードにするボタンがないから、なんか色々差し換えしてから直す必要がある」ぐらいに思ってくれれば良い。ようは超面倒くせぇのだ。
じゃあ何でCrowdStrikeなんて入れたの?何が良いの?
ネット上の攻撃に対して最強で、かつ、ユーザー企業のIT担当として運用がめっちゃ楽だから。本当に。
パソコンを買うとマカフィーとかシマンテックとかESETとかがおまけで付いてたりする。あれはAV(Anti Virusアンチウィルス)と呼ばれる製品だ。安価なものは何十年も仕組みが変わっていない、パターンマッチング型の製品である。どういうものかというと、指名手配書を見て、同じ顔だったら隔離してアラートを上げるものだ。
当たり前の話だけど、初犯の犯罪者を指名手配書で捕まえることはできない。なのでパターンマッチング型は対応が後手後手に回る。
また、指名手配書方式なので、変装や整形に弱い。同じコンピュータウイルスを「すぐに別の顔に整形するプログラム〜♪」ってのがネット上には転がってて、中学生でも5分で新しいウィルスが作れる。セキュリティのお勉強会なんかだと、アンチウィルスソフトで検知できたウイルスを目の前でツールて整形して、簡単にすり抜けましたーって10分ぐらいのデモを良くやる。初めて見る人はまぁまぁショックな顔をする。
で、次に登場したのが、NGAV(Next Genaration Anti Virus)だ。これはその名の通り、エヴァンゲリオンぐらい性能の良いガードマンだ。よく振る舞い検知と呼ばれるのだが、指名手配書ではなく、プログラムの動きをAIなどを駆使して分析し、このプログラムの動きはウイルスっぽいぞ!と判定して、プログラムを止めたり隔離したりするのだ。ナイフを持ってたり、棒を振り回したりしたら止めるので、初犯の犯人も捕まえることができる。
なんだよ、完璧じゃんと思った人は、スパイ映画とかを見て欲しい。巧妙なスパイは武器を持って正面からはいかないのだ。色仕掛けでIDカードを手に入れて正しく入館して、普通にデータを持ち帰ってくる。凄いやつになると、入社試験を受けて、就職して、社員としてデータを盗んだりするだろう。果たしてガードマンに彼らが止められるだろうか。
また、誤検知が多いという問題もある。ナイフを持ってると止めるので、料理人が入ろうとすると止めてしまうし、野球部のやつがバットを持って入ろうとすると止めてしまうのだ。なのでNGAVを導入する際には、業務上必要なプログラムが止められないよう、あいつは料理人だから包丁持っててもOK!って感じのホワイトリスト登録をする、調整期間が必要となる。やってることが複雑な会社ほどこの作業は大変だ。NGAV機能付きの製品を買ったけど、誤検知が多いから無効にした、という会社は決して少なくない。
上述の巧妙なスパイを捕まえるために登場したのがEDR(Endpoint Detection and Response)である。大雑把に言えば高性能監視カメラと自動分析AIの組み合わせだ。
EDRはパソコンやサーバ内のあらゆる処理をカーネルレベルで記録する。サンダースは関係ない。要は人間の操作だけではなく、裏の見えないところで動いているパソコン内部の処理も全部記録しているのだ。
最近の攻撃にはネットワーク機器の不具合等の穴を突いた攻撃が多い。ネットワーク機器の穴から入り、セキュリティ設定の弱い端末がないか、使えそうな情報や、古いOSのセキュリティの穴などがあれば、そこから管理者のIDとパスワードを入手し、通常の操作かのように、大切なデータを暗号化して人質にして金銭を要求したり、個人情報を盗んで販売したりするわけだ。
悪い「プログラム」が入ってくるわけではないので、このような攻撃はNGAVでは捕まえられない。そこでEDRで記録した操作歴を分析し、「いつも日本からしか操作されないのにアメリカから?」とか「突然ファイルサーバのデータを夜中に大量に書き換えてるぞ」とか「何度もログインを試みてるのは何故だ?」などのきっかけでアラートを上げるのである。
これで巧妙なスパイも見つけられるが、残念ながら誤検知は沢山発生する。なので導入初期にホワイトリストの登録は必要となる。また、攻撃っぽい動きが本当に攻撃なのか、攻撃だったとしてどう対処するのか、IT担当の人は日夜頭を悩ませなければいけない。
で、登場するのがMDR(Managed detection and response)である。監視カメラを代わりに見ておいて、悪い奴だと判断したら、捕まえてくれるサービスだ。機械任せではなくセキュリティの専門家たちが24/365で待機しており、AIによる危ないかも?という検知をみて、適切な判断や対処をやってくれるのだ。
多くのサービスでは、重要度高の物は、パソコンの停止や問題のあるプログラムの隔離などを勝手にやってくれて、壊された部分の修復についてのアドバイスまでくれる。重要度中以下のものについては、通知とアドバイスをくれる。月次でレポートなどをくれるものが殆どだ。
CrowdStrikeはこのNGAVとEDRとMDRがセットになった製品である(他にもオプションがあるけど割愛)。で、CrowdStrike社のMDRサービス(Falcon Complete)がめっちゃ凄い。重要度低から高まで全部対処して、対処結果だけ報告が来る。攻撃の最中にOSの一部を書き換えられたなどの場合、アドバイスではなくリモートでコマンド叩いて修復して直しておきました報告が来る。
しかも、初期導入時の面倒なホワイトリスト登録も、ユーザーではなくCrowdStrikeが過去の経験からほとんど勝手にやってしまう。どうしても判断がつかないものだけユーザーに質問が来る形なのだ。
CrowdStrikeが正しく導入された環境で致命的な状況に陥ったことは過去に一度もないらしく、ユーザーは殆ど何もすることが無く、欠点は他社よりやや値段が高いだけ、という製品なのである。
なので、今回の一件で「なんか変なソフト入れてた会社が軒並みやられたな」と思った人がいたら大きな間違いなのである。一番第三者機関の評価が高く、一番値段も高いソフトを入れていた、意識の高い会社のシステムが全部止まったのである(だから大事なのだ)。
CrowdStrikeはやめたほうが良いのかな?
現時点ではNo。今回の障害は世界最大規模だったがランサムウェアでデータの漏洩や消失を喰らうよりは被害は小さい。今回はCrowdStrikeだったけど、他社製品が同じことを起こさない保証はどこにもないからだ。「CrowdStrike全部消したから復活したぜ!」とか自分でTweetしてた某電気自動車会社の社長は、ちょっと軽率が過ぎる。海外のハッカー集団が攻撃をしかねない宣言だからだ。
しかし、二度目はない。ここまでCrowdStrike社の肩を持ってるかのような説明ばかりしたけれど、元開発者として、今回の障害はありえないレベルの問題だ。
バグの入ったプログラムを公開しちゃうなんてのは、各社飽き飽きするぐらいやってる。でも、そこに情状酌量の余地があるのは、特殊な状況で稀に発生するバグからだ。
稀に発生するバグを検出するのは難しい。100台のパソコンで試験しても起きない問題が、例えばメモリを増設すると起きる、とか、別のソフトとの相性で起きる、なんてのはよくある。こういうのは丁寧に試験を行っても検出できずにリリースされることはよくある。
しかし、今回の問題は社内の全端末が、というくらいに高い再現度で発生していることから、試験されていないモジュールがリリースされたとしか思えないのである。
世界最高峰のセキュリティソフトを出している会社がそんなチェック体制がないわけがない。物凄い台数のパソコンでの自動テスト環境があるに決まっている。何らかのやらかしリリースを隠すために、試験の不十分な修正版をリリースした社員がいて傷を深めたとか、社に不満を持つ人間の腹いせの社内テロじゃないのかとか、そういう邪推をしてしまうレベルのやらかしだ。
そういう根本原因と、再発防止策の発表がないため、今のところ何とも言えないが、二度目はないよ、と言うのは確実に言えるだろう。金曜日には12%の株価減を記録したCrowdStrike社だが、二度目を起こしたら、客の多くが別の製品に乗り換え、他社に買収されることになるだろう。
この記事が気に入ったらサポートをしてみませんか?