多一個欄位導致850萬部電腦崩潰。78分鐘。
2024年7月19日,世界標準時間04:09:CrowdStrike向所有在線的Windows Falcon傳感器推送了頻道檔案291——一個快速響應內容更新。
2024年7月19日,世界標準時間04:09:CrowdStrike向所有在線的Windows Falcon傳感器推送了頻道檔案291——一個快速響應內容更新。它所饋送的模板在2月份聲明有21個輸入欄位;提供輸入的代碼構建了一個包含20個元素的陣列。四個月來,沒有任何東西讀取第21個欄位,因為每條規則都將其保留為萬用字元。這次更新在該處放置了一個真實的模式。雲端內容驗證器根據聲明計數21個並通過;傳感器的內容解釋器在沒有邊界檢查的情況下,在核心模式下讀取第21個插槽,並導致Windows頁面錯誤:PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys。驅動程式故意在啟動初期載入,讀取相同的檔案,再次崩潰——啟動迴圈。世界標準時間05:27,即78分鐘後,該檔案被復原,但850萬台機器(微軟的計數,佔Windows不到1%)已經有了該檔案,而修復措施是每台鍵盤前都需有人工操作:安全模式、刪除C-00000291*.sys、BitLocker恢復金鑰。航空公司、醫院、銀行和911中心停擺;達美航空取消了約7,000個航班,並向CrowdStrike和微軟索賠至少5億美元;Parametrix估計財富500強的損失接近54億美元。事後檢討來自CrowdStrike自己的根本原因分析、初步事件後審查、微軟的部落格、達美航空的8-K文件和眾議院證詞。Git blame:65% CrowdStrike / 25% 核心模式設計 / 10% 星期五。修復方案的裁決:SHIP IT,勉強通過。
本影片涵蓋的內容
- 2024年2月28日 – 4月24日:傳感器7.11發布IPC模板類型(聲明21個欄位,實際提供20個);壓力測試於3月5日通過;四個實例均正常運作,因為第21個欄位是萬用字元
- 7月19日,世界標準時間04:09:兩個新的模板實例;內容驗證器的邏輯錯誤讓非萬用字元實例通過;核心模式下超出邊界讀取;世界標準時間05:27復原
- 7月19日 – 29日:手動修復(安全模式,刪除檔案,BitLocker金鑰);約97%的傳感器在7月24日前恢復,約99%在7月29日前恢復
- 7月25日 – 8月19日:運行時邊界檢查、編譯時欄位計數驗證、驗證器檢查、金絲雀部署環+部署環、客戶對快速響應內容的控制、兩次獨立審查;8月6日完成帶有崩潰轉儲的完整RCA
翻譯的文字記錄
從英文原文旁白翻譯。可用的音頻和字幕由 YouTube 控制。
0:00 一次安全更新將二十一個欄位帶入為二十個欄位構建的驅動程式中, 八百五十萬台Windows機器在早餐前藍屏。 2024年7月19日,世界標準時間04:09。 CrowdStrike向每個Falcon傳感器推送了頻道檔案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



