+− THE DAILY DIFFdev & AI news
SHIP IT

多一個欄位導致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。 負責任地合併。

來源

  1. CrowdStrike, Root Cause Analysis — Channel File 291 (Aug 6, 2024, 12 pp.)www.crowdstrike.com
  2. CrowdStrike, Executive Summary of the RCA (Aug 6, 2024)www.crowdstrike.com
  3. CrowdStrike, Preliminary Post Incident Review (Jul 24, 2024)www.crowdstrike.com
  4. CrowdStrike, Remediation and Guidance Hub — Channel File 291 (the workaround steps)www.crowdstrike.com
  5. CrowdStrike, tech alert of Jul 19, 2024 (archived: Safe Mode → delete C-00000291*.sys → BitLocker key)web.archive.org
  6. Microsoft, David Weston, "Helping our customers through the CrowdStrike outage" (Jul 20, 2024; the 8.5 million figure)blogs.microsoft.com
  7. Delta Air Lines, Form 8-K (Aug 8, 2024; ~7,000 cancellations, at least $500 million)www.sec.gov
  8. Adam Meyers (CrowdStrike SVP), written testimony, House Homeland Security Subcommittee (Sep 24, 2024)homeland.house.gov
  9. George Kurtz on X, Jul 19, 2024, 09:45 UTCx.com
  10. Patrick Wardle on X, Jul 19, 2024 (the crash-dump index 0x14)x.com
  11. Hacker News, Jul 19, 2024 — "CrowdStrike Update: Windows Bluescreen and Boot Loops" (4,489 points)news.ycombinator.com
  12. The Guardian, Jul 24, 2024 — "CrowdStrike global outage to cost US Fortune 500 companies $5.4bn" (Parametrix estimate)www.theguardian.com
  13. Hacker News, Jul 21, 2024 — "Initial details about why CrowdStrike's CSAgent.sys crashed" (519 points)news.ycombinator.com
  14. Wikipedia — 2024 CrowdStrike-related IT outagesen.wikipedia.org

相關影片

postmortem · zh-HK · 2026年9月12日

一個正規表達式擊潰了Cloudflare。持續27分鐘。

2019年7月2日,世界標準時間13:42:一條針對Cloudflare網絡應用程式防火牆的新規則在約兩秒鐘內於180多個城市上線。這是一條模擬模式下的XSS規則,因此它不會阻擋任何東西,但它仍然會在每個請求上運行,並且以.*(?:.*=.*)結尾。PCRE回溯,每個服務HTTP的CPU核心達到100%,每個透過Cloudflare代理的網站都會在27分鐘內返回502;流量下降82%。終止開關位於

3:00 ↗
postmortem · zh-HK · 2026年9月22日

重啟令 Telstra 倒退回 2006 年。九百萬部電話。

墨爾本的一名工程師在凌晨 2 時 50 分重啟計時機箱,到早餐時,澳洲最大的流動網絡竟以為是 2006 年 11 月。2026 年 7 月 8 日:Telstra NTP 機箱中的 GPS 卡在更換電源期間重啟,其韌體從未有 GPS 週數滾動更新,因此它選擇了舊的紀元,倒退了 1,024 週。由於 2025 年 10 月的變通方法使該卡成為網絡唯一的 stratum-1 來源 — 以及 2020

3:15 ↗
postmortem · zh-HK · 2026年9月19日

Google Cloud 在空白欄位當機。三小時。

一個帶有幾個空白欄位的策略行觸發了空指標,Google Cloud 立即在所有區域當機 — 然後 Cloudflare 也隨之故障。2025 年 6 月 12 日,世界標準時間 17:49:Service Control,一個批准所有 Google Cloud API 請求的二進位檔案,讀取了一個帶有「非預期空白欄位」的配額策略變更,觸發了兩週前發布但沒有空值檢查和功能旗標的程式碼路徑,並在所有區

2:57 ↗