多数の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
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— Patrick Wardle (@patrickwardle) 2024年7月19日
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
...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— Patrick Wardle (@patrickwardle) 2024年7月19日
そのため、Crowdstrikeの問題は「セーフモードで起動してC-00000291〜.sysを削除する」という方法で解決することができます。
How to fix the Crowdstrike thing:
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— vx-underground (@vxunderground) 2024年7月19日
CrowdStrikeの公式ブログによると、C-00000291〜.sysは「チャンネルファイル」と呼ばれる一種の構成ファイルで、CrowdStrikeによって発見された新しい戦術、技術、手順に応じて毎日数回更新が行われるとのこと。
An update from @CrowdStrike confirms our analysis: https://t.co/2BpWVqOuMm
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)— Patrick Wardle (@patrickwardle) 2024年7月20日
C-00000291〜.sysが自動更新用のファイルであり、全てのクライアントに設定を問わず自動で適用されてしまったことで今回の事故の規模が大きくなってしまいました。
Note "channel updates ...bypassed client's staging controls and was rolled out to everyone regardless" https://t.co/UecaAmJdqc
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)— Patrick Wardle (@patrickwardle) 2024年7月19日
CrowdStrikeの公式ブログでは、「論理的欠陥がどのように発生したかを突き止めるための徹底的な根本原因分析」が行われており、調査の進行に合わせて根本原因分析の結果を公表すると述べられています。
なお、CrowdStrikeは2024年4月にもDebianおよびRocky LinuxにおいてPCを起動不能にする問題を起こしていたことが明らかになっています。
CrowdStrikeによるPC起動不能問題はこれまでにもDebianとRocky Linuxで発生していた - GIGAZINE