波及全球的微軟藍色畫面事件,至今還有25萬臺裝置沒完全恢復!另據估計,崩潰的裝置多達850萬臺,到目前為止已經恢復了97%,雖然看似修復效率很高,但剩下的3%仍有25萬臺之多。

與此同時微軟也釋出了一份全面調查報告,提供了根本原因的技術概述,解釋了為什麼安全產品使用核心模式驅動程式,以及未來如何增強安全產品的可擴充套件性。

該事件影響範圍幾乎覆蓋全球,涉及了涵蓋航空公司、電視廣播、醫療機構、銀行金融等眾多行業,甚至連奧運會也受到了影響。

僅在航空業,就有5000多架次航班被迫取消,佔了全球定期航線的4.6%,美國一家航空公司甚至連續三天都出現了航班取消的情況。

經濟損失也是數以十億計,據資料分析機構Parametrix的估計,單是對於財富500強企業,這次事件帶來的損失就高達54億美元(約合391.8億人民幣)。

還有不法分子趁火打劫,冒充Crowdstrike的名義,假借釋出“修復工具”之名,公然散播惡意軟體。

網路安全專家Troy Hunt稱之為“史上最大規模的IT中斷事件”。

抓馬的是,Crowdstrike在此次事件之後,給幫助修復問題的員工和合作夥伴發放了10美元的外賣代金券作為感謝,結果被外賣平臺標記為了“欺詐”。

收到優惠券的人在準備使用時發現券已被取消,導致Crowdstrike本已經受到巨大影響的口碑又進一步下滑。

微軟的調查報告,確認了Crowdstrike初步報告中提及的驅動檔案正是造成此次事件的罪魁禍首。

進一步分析結果表明,該檔案對記憶體的越界讀取,是導致事故的直接原因。

隨著研究的深入,第三方安全軟體到底該不該被授予了核心級的操作許可權,也引發了廣泛討論。

核心原因:越權讀取記憶體

透過分析大量的崩潰報告,微軟發現這些記錄都指向了CrowdStrike的驅動程式csagent.sys。

透過調閱故障時系統留下的崩潰轉儲,微軟再現了崩潰發生時的場景——

首先檢視崩潰執行緒的Trap Frame後,發現引發異常的指令是一條針對R8暫存器、指向記憶體的讀操作。

進一步觀察Trap Frame附近的指令,又發現在該讀操作之前,有一個對R8的空值檢查,檢查失敗才會繼續執行後續的讀操作。

但是檢查R8指向的虛擬地址後,微軟發現它指向了一個非法地址,導致核心訪問違規,從而引發了此次崩潰。

另外,Crowdstrike也解釋了流程層面的原因——在上線前的測試過程中,未能檢測到更新中的“有問題的內容資料”。

事件發生後,微軟和Crowdstrike都緊急應對,Crowdstrike發動了全部技術人員,微軟也派出了5000多名技術人員7 x 24小時應對此事。

經過兩家合作研究,主要得出了兩種該問題的解決方案——

第一種簡單粗暴,就是重啟,以便在錯誤的檔案啟動之前獲取更新並將其覆蓋。

修復方案還提到,如果重啟一次不管用就多試幾次,按微軟的說法,最多可能要15次。

如果無法透過重啟獲取更新,微軟還提供了透過網路或USB裝置的啟動工具,以便能夠刪除問題檔案。

針對後續工作,兩家也分別做出表態:

微軟表示,將計劃與反惡意軟體生態系統合作,減少對核心驅動的依賴;

Crowdstrike則承諾,正在對其測試和部署流程進行更改,以防止類似情況再次發生。

該不該開放核心級操作?

引起此次崩潰的csagent.sys,正是一個核心級的驅動程式。

具體來說,csagent.sys被註冊為一個檔案系統篩選驅動,用於接收檔案操作事件。

所以在這次事件之後,到底應不應該把系統的核心級操作許可權開放給第三方,也引發了廣泛討論。

在微軟的報告中,也解釋了一些使用核心驅動程式進行安全防禦的原因:

-可見性和執行力:核心驅動可以全系統範圍內可見,並能夠在啟動早期載入,以檢測 bootkit和rootkit;

-效能:某些高吞吐量的資料採集和分析場景,使用核心驅動可以帶來效能優勢;

-防篡改:即便管理員許可權也難以停用處於核心模式的驅動,因為Windows提供了早期載入(ELAM)等機制,讓驅動能儘早執行。

但同時微軟也指出,驅動執行在最高許可權,一旦出問題難以隔離和恢復,因此驅動程式碼必須經過嚴格測試。

不過在HackerNews上,網友們並不認同核心級別的執行方式,並指出蘋果和Linux早就停用核心級操作,改為使用者級操作了。

按這位網友的說法,雖然直接原因是由Crowdstrike導致,但微軟不停用核心操作給了問題程式執行的土壤,所以也難辭其咎。

其實微軟也不是沒試過停用,甚至這次事件中的Crowdstrike,還是微軟的競爭對手。

但是其他網友指出,這是為了符合歐盟的監管要求,因為微軟自己的安全軟體有核心級操作,所以公平起見,也得開放給第三方。

但這句話只說對了一半,歐盟並未要求微軟將核心操作開放給第三方,他們還可以選擇把自己的安全產品也移出核心。

當然,如果只從技術角度分析,網友們的觀點還是比較一致的,都認為核心級操作還是開放的越少越好。

微軟的報告中也提到,今後會聯合安全軟體生態,儘可能減少核心操作對重要安全資料的訪問需要。

One More Thing

最後再說說直接造成此次事件的Crowdstrike。

實際上,這已經不是這家公司的Falcon程式第一次把作業系統搞崩了。

從今年四月開始到現在這四個月,Falcon每個月都會把作業系統搞崩一次。

前三次的受害者都是Linux核心的作業系統,不過影響範圍和受關注程度都和這次事件無法相提並論:

4月19日晚,Crowdstrike釋出了一個有缺陷的軟體更新,導致執行Debian 的計算機崩潰且無法正常重啟;

5月13日,安裝CrowdStrike軟體的伺服器在升級到Rocky Linux 9.4後可能會凍結(freeze);

6月,Red Hat在啟動了Crowdstrike的falcon-sensor程序後,也觀察到了核心恐慌(Kernel Panic)。

自 量子位