一個額外欄位使850萬台電腦當機。78分鐘。
世界標準時間2024年7月19日04:09:CrowdStrike向每個上線的Windows Falcon感測器推送Channel File 291——一個快速響應內容更新。
世界標準時間2024年7月19日04:09:CrowdStrike向每個上線的Windows Falcon感測器推送Channel File 291——一個快速響應內容更新。它所饋送的模板在2月時宣告有21個輸入欄位;提供輸入的程式碼則建構了20個元素的陣列。四個月來,沒有任何東西讀取欄位21,因為每個規則都將其保留為萬用字元。此更新在此處放置了一個真實的模式。雲端內容驗證器根據宣告計數為21並通過;感測器的內容解釋器在沒有邊界檢查的情況下,在核心模式讀取了槽位21,導致Windows發生分頁錯誤:PAGE_FAULT_IN_NONPAGED_AREA,csagent.sys。驅動程式在啟動時特意提早載入,讀取相同檔案,再次當機——導致啟動循環。在78分鐘後的05:27 UTC撤銷,但850萬台機器(微軟的統計,不到Windows的1%)已經有了該檔案,解決方案是每台鍵盤前都需有人工操作:安全模式,刪除C-00000291*.sys,BitLocker復原金鑰。航空公司、醫院、銀行和911中心停擺;達美航空取消了約7,000個航班,並向CrowdStrike和微軟索賠至少5億美元;Parametrix估計財富500強的損失接近54億美元。事後分析來自CrowdStrike自己的《根本原因分析》、《初步事件後審查》、微軟部落格、達美航空的8-K文件和眾議院證詞。Git blame:CrowdStrike佔65% / 核心模式設計佔25% / 星期五佔10%。修復方案的裁決:SHIP IT,勉強。
本影片重點
- 2024年2月28日至4月24日:感測器7.11發布了IPC模板類型(宣告21個欄位,提供20個);壓力測試於3月5日通過;四個實例之所以能運作,是因為欄位21是萬用字元
- 7月19日,04:09 UTC:兩個新的模板實例;內容驗證器的邏輯錯誤讓非萬用字元的那個通過;核心中的越界讀取;05:27 UTC撤銷
- 7月19日至29日:手動修復(安全模式、刪除檔案、BitLocker金鑰);約97%的感測器在7月24日前恢復,約99%在7月29日前恢復
- 7月25日至8月19日:執行時邊界檢查、編譯時欄位計數驗證、驗證器檢查、金絲雀部署環、客戶對快速響應內容的控制、兩次獨立審查;8月6日完成帶有崩潰轉儲的完整根本原因分析
翻譯文字稿
譯自英文原版旁白。可用的音訊和字幕由 YouTube 控制。
0:00 一項安全更新將二十一個欄位帶入一個為二十個欄位建構的驅動程式, 導致八百五十萬台Windows機器在早餐前藍屏。 2024年7月19日,04:09 UTC。 CrowdStrike向每個Falcon感測器推送Channel File 291。 七十八分鐘後他們將其撤回;到那時,航空公司、 醫院和銀行都盯著同一個藍色矩形。 執行長的第一篇貼文說這不是網路攻擊,確實如此,但這不是重點。 它如何發生,為何可能,以及誰該負責。
0:27 這是《The Daily Diff》,事後分析。 2月28日。感測器7.11發布了一個用於命名管道的新檢測器。 它宣告了二十一個輸入欄位;餵給它的程式碼建構了一個由 二十個元素組成的陣列。沒有人注意到:四個月來,每個規則都將欄位二十一保留為 萬用字元,而沒有人會讀取萬用字元。 壓力測試通過,四個規則發布,一切正常。 7月19日,04:09。 兩個新規則;其中一個在欄位二十一中放置了一個真實的模式。
0:51 雲端驗證器根據宣告計數為二十一,並表示正常。 每個上線的Windows主機立即下載它,因為沒有金絲雀環。 感測器讀取槽位二十一,那不是它的記憶體, 然後核心執行了核心會做的事情。 05:27,撤銷。對於所有重新啟動過的人來說太遲了:驅動程式在 啟動時提早載入,讀取相同檔案,再次當機。 啟動循環。為什麼這會發生? 這些規則是從雲端推送的配置,因此不是程式碼跳過了程式碼
1:16 管線。解釋器沒有邊界檢查;它信任驗證器, 而驗證器信任宣告。 而且這一切都在核心模式中運行,在那裡,一個壞指標不是異常,而是 Windows稱無法透過try-except保護的分頁錯誤。 Patrick Wardle在那天下午從一個崩潰轉儲中讀取到:索引零x十四, 槽位二十一。修復是手動的。 安全模式,刪除C-00000291,重新啟動。 使用BitLocker,首先輸入一個四十八位元的
1:43 復原金鑰,它位於一個 同樣藍屏的伺服器上。 git blame。CrowdStrike,百分之六十五:RCA列出了六項發現, 而發現六是一句完整的句子:模板實例應有分階段 部署。核心模式設計, 百分之二十五:CrowdStrike表示Windows目前 無法在核心之外託管安全性,微軟表示這不是微軟事件, 而分頁錯誤不在乎這些。
2:05 星期五,百分之十。 提交訊息稱這不是程式碼。 影響範圍:八百五十萬台設備,不到Windows的百分之一。 達美航空取消了七千個航班並索賠五億美元, 包括微軟。保險公司估計財富500強的損失接近五十億美元。 Hacker News:四千五百個點讚。 諷刺的是:一個旨在檢測新型攻擊技術的更新,反而交付了一種新型攻擊。 裁決,事後分析:SHIP IT,勉強。
2:27 六天內完成邊界檢查,分階段環,客戶對內容更新的控制, 兩次外部審查。 之所以是勉強,是因為所有這些原本就已是標準實務。 星期一:無論您的代理程式從雲端拉取什麼,都會經過金絲雀環。 一旦有東西在無法拋出錯誤的地方解析它,配置就變成了程式碼。 請將您仍不允許談論的事件發送給我, 在評論中,或發送到thedailydiff.dev。 這就是今天的diff。
2:48 我是來自Axrisi的Niko。 請負責地合併。
來源
- CrowdStrike, Root Cause Analysis — Channel File 291 (Aug 6, 2024, 12 pp.)www.crowdstrike.com
- CrowdStrike, Executive Summary of the RCA (Aug 6, 2024)www.crowdstrike.com
- CrowdStrike, Preliminary Post Incident Review (Jul 24, 2024)www.crowdstrike.com
- CrowdStrike, Remediation and Guidance Hub — Channel File 291 (the workaround steps)www.crowdstrike.com
- CrowdStrike, tech alert of Jul 19, 2024 (archived: Safe Mode → delete C-00000291*.sys → BitLocker key)web.archive.org
- Microsoft, David Weston, "Helping our customers through the CrowdStrike outage" (Jul 20, 2024; the 8.5 million figure)blogs.microsoft.com
- Delta Air Lines, Form 8-K (Aug 8, 2024; ~7,000 cancellations, at least $500 million)www.sec.gov
- Adam Meyers (CrowdStrike SVP), written testimony, House Homeland Security Subcommittee (Sep 24, 2024)homeland.house.gov
- George Kurtz on X, Jul 19, 2024, 09:45 UTCx.com
- Patrick Wardle on X, Jul 19, 2024 (the crash-dump index 0x14)x.com
- Hacker News, Jul 19, 2024 — "CrowdStrike Update: Windows Bluescreen and Boot Loops" (4,489 points)news.ycombinator.com
- The Guardian, Jul 24, 2024 — "CrowdStrike global outage to cost US Fortune 500 companies $5.4bn" (Parametrix estimate)www.theguardian.com
- Hacker News, Jul 21, 2024 — "Initial details about why CrowdStrike's CSAgent.sys crashed" (519 points)news.ycombinator.com
- Wikipedia — 2024 CrowdStrike-related IT outagesen.wikipedia.org



