多数のWindowsでブルースクリーンを発生させてしまったCrowdStrikeのコードは何が悪かったのか
世界中のWindows搭載PCにおいてブルースクリーンオブデスを発生させてしまったCrowdStrikeの問題について、エンジニアのパトリック・ワードル氏が原因を分析してXに投稿しました。
I don't do Windows but here are some (initial) details about why the CrowdStrike's CSAgent.sys crashed
— Patrick Wardle (@patrickwardle) 2024年7月19日
Faulting inst: mov r9d, [r8]
R8: unmapped address
...taken from an array of pointers (held in RAX), index RDX (0x14 * 0x8) holds the invalid memory address@_JohnHammond pic.twitter.com/oqlAVwSlJj
CrowdStrikeが原因で発生したブルースクリーンオブデス問題は850万台のWindows端末に影響し、いくつもの公共交通機関がストップしました。
全世界的に発生したCrowdStrikeによるブルースクリーンオブデス問題の影響を受けたWindows端末は850万台で全体の1%未満 - GIGAZINE
ワードル氏の分析によると、CrowdStrikeの実行ファイルである「CSAgent.sys」内の「mov r9d, [r8]」という命令において、不正なメモリアドレスが指定されてしまっていたことが原因とのこと。
上記の通り、不正なアドレスを指定してクラッシュを直接発生させたアプリケーションは「CSAgent.sys」ですが、不正なアドレスのデータは「C-00000291-[環境によって異なる名前].sys」というファイルに保存されており、CSAgent.sysはC-00000291~.sysファイルからデータを読み込んだせいでクラッシュしてしまっていました。
The other "drivers" (e.g. 'C-00000291-...32.sys') appear to be obfuscated data ...and are x-ref'd (perhaps ingested?) by CSAgent.sys
— Patrick Wardle (@patrickwardle) 2024年7月19日
...so maybe invalid (config/signature) data triggered the fault in CSAgent.sys
This would be easier to tell/confirm via debugging 😅 pic.twitter.com/AEOAFVT40i
そのため、Crowdstrikeの問題は「セーフモードで起動してC-00000291~.sysを削除する」という方法で解決することができます。
How to fix the Crowdstrike thing:
— vx-underground (@vxunderground) 2024年7月19日
1. Boot Windows into safe mode
2. Go to C:\Windows\System32\drivers\CrowdStrike
3. Delete C-00000291*.sys
4. Repeat for every host in your enterprise network including remote workers
5. If you're using BitLocker jump off a bridge
CrowdStrikeの公式ブログによると、C-00000291~.sysは「チャンネルファイル」と呼ばれる一種の構成ファイルで、CrowdStrikeによって発見された新しい戦術、技術、手順に応じて毎日数回更新が行われるとのこと。
An update from @CrowdStrike confirms our analysis: https://t.co/2BpWVqOuMm
— Patrick Wardle (@patrickwardle) 2024年7月20日
Namely:
▫ The C-...sys files aren't kernel drivers, but rather are "configuration files" dubbed "Channel Files"
▫ C-00000291- "triggered a logic error that resulted in an OS crash" (via CSAgent.sys)
C-00000291~.sysが自動更新用のファイルであり、全てのクライアントに設定を問わず自動で適用されてしまったことで今回の事故の規模が大きくなってしまいました。
Note "channel updates ...bypassed client's staging controls and was rolled out to everyone regardless" https://t.co/UecaAmJdqc
— Patrick Wardle (@patrickwardle) 2024年7月19日
A few IT folks who had set the CS policy to ignore latest version confirmed this was, ya, bypassed, as this was "content" update (vs. a version update)
CrowdStrikeの公式ブログでは、「論理的欠陥がどのように発生したかを突き止めるための徹底的な根本原因分析」が行われており、調査の進行に合わせて根本原因分析の結果を公表すると述べられています。
なお、CrowdStrikeは2024年4月にもDebianおよびRocky LinuxにおいてPCを起動不能にする問題を起こしていたことが明らかになっています。
CrowdStrikeによるPC起動不能問題はこれまでにもDebianとRocky Linuxで発生していた - GIGAZINE
◆フォーラム開設中
本記事に関連するフォーラムをGIGAZINE公式Discordサーバーに設置しました。誰でも自由に書き込めるので、どしどしコメントしてください!Discordアカウントを持っていない場合は、アカウント作成手順解説記事を参考にアカウントを作成してみてください!
• Discord | "CrowdStrikeが原因の世界的なPC障害、身の回りで何か影響はあった?" | GIGAZINE(ギガジン)
https://discord.com/channels/1037961069903216680/1264874986376659086
・関連記事
20年前のOS「Windows XP」を丸腰でインターネットに放り込むとこうなる - GIGAZINE
Chromeでウェブアプリがクラッシュする問題を調べると「1枚のGIFアニメーション画像」が原因だったという珍しい事例 - GIGAZINE
Intelの第13・14世代のCPUには欠陥がありクラッシュ・強制終了・エラーの原因となっているという指摘を証明する膨大な量のレポートデータが発見される - GIGAZINE
IntelハイエンドCPUを搭載したPCで頻繁にゲームがクラッシュした問題の原因はマザーボードにあり - GIGAZINE
ゲームボーイアドバンスのクラッシュ音から元のゲームを復元することに成功 - GIGAZINE
・関連コンテンツ