微軟 藍屏事件背后,一個“草臺班子”怎么釀成全球技術浩劫

上周五,全球多地不少用微軟 PC 的打工人一開機發現,映入眼簾的不是熟悉的壁紙和桌面,而是滿屏的藍色,和一個哭臉。
“重啟大法”失效后,這個藍屏很快被人們發上 X、微博、Reddit 等平臺。大家隨后發現,這不是個案,而是席卷全球的大事件,航班因此停飛,企業引起停工,酒店無法入住,甚至手術也因此停做。
這次事件的一個后果是,CrowdStrike 安全公司被永遠刻在了科技史的恥辱柱上,因為正是他們向約 29000 個企業用戶推送的一個更新,導致了全球約 850 萬臺 Windows 設備的宕機。
讓人大跌眼鏡的是,微軟和 CrowdStrike 都無法統一修復這些設備,需要由人工一臺臺動手操作才能恢復。
世界著名安全公司,或許也只是一個草臺班子
和以往那種普遍性的服務器大宕機不同,這次的宕機是設備內部問題引起的,由于 CrowdStrike 發布的更新有代碼缺陷,并深入了 Windows 系統的內核,影響了系統驅動。
并且更新是不可在線逆轉的,即使 CrowdStrike 已經修復了更新中的錯誤,在之前就已經安裝了更新的設備還是一啟動就會變磚,就連微軟也無法“遠程施法”進行修復。
由安全軟件引起的系統崩潰問題其實屢見不鮮,比如 CrowdStrike 的 CEO George Kurtz,在他擔任老牌安全軟件公司 McAfee 的首席技術官時,該公司也曾推出過一個軟件更新,會將 Windows XP 的一個系統文件刪除,導致電腦無限重啟,聽起來和這次事件就有點相似。
另一個著名殺毒軟件卡巴斯基,和微軟自己的安全平臺 Windows Defender 也曾經在更新后引發過系統藍屏故障,只是這些事件規模遠不如 CrowdStrike 之大。
殺毒軟件成為“藍屏慣犯”有一個非常重要的原因:2009 年,微軟和歐盟達成公平競爭的協議,允許第三方安全軟件也能夠和 Windows Defender 一樣訪問 Windows 系統的內核,也就是系統非常底層和基礎的部分。
這種開放性能夠讓 CrowdStrike 這樣的第三方殺毒軟件能夠提高更高的安全性,當然,也讓 Bug 的發生變得非常致命。
就像是當年 McAfee 能把內核中的系統文件當成病毒查殺了,或者像這次 CrowdStrike 推出的一個新的配置文件,因為后綴名和驅動程序一樣,被系統錯誤當作了驅動運行,導致了系統崩潰。
內核這種系統底層向第三方開放,本身就是有點爭議的問題,蘋果已經停止了向第三方開放 macOS 的內核。但這么多年來,開放內核總體上利大于弊。CrowdStrike 這次事件更讓人覺得不安的是,這家擁有約 3 萬家客戶的公司難道完全不對軟件更新進行測試嗎?
特別是這種可以說百分百復現的 bug,只要一測試基本都能發現,結果最后這個有問題的更新,來到了全球 850 萬臺 PC 設備上。
前卡巴斯基安全公司的一名高管 Costin Raiu 表示,由于配置文件和驅動相關的文件非常重要,在卡巴斯基推出相關更新之前,都會經過數周以上的嚴格審查和測試,因此 CrowdStrike 這個事件,只能說明更新文件從未被測試過。
而且,相關更新由于并非是大型更新,CrowdStrike 并未采取比較謹慎的“分批推送”方式,而是直接面向全部設備推送,理由是“保證我們的客戶安全水平領先威脅環境”。
想不到,這場可以稱作是技術史上最大的浩劫,不是因為黑客入侵,而是因為一家像草臺班子一樣的安全公司。
計算機系統比我們想象中更落后
二十多年前,一條“千年蟲”引起了大眾的注意,指的是上世紀末一些計算機設備無法正確識別即將到來的 2000 年份,會將其識別為 1900 年,從而導致大量社會基礎設施,甚至影響到國防問題。
很多人將 CrowdStrike 事件視為“千年蟲”后最大的技術故障,這兩個事件似乎都有一個共通點,那就是看起來非常智能的計算機系統,其實非常脆弱,會出乎我們意料地因為一些問題而崩潰。
當年,對“千年蟲”的防治其實并不簡單,很多系統需要去手動更改系統的日期編碼,使其能夠正確識別 2000 年,花費了大量的人力物力,這和 CrowdStrike 事件驚人地相似。
二十年過去,計算機技術已經突飛猛進,然而在面對這種設備內部故障的問題上,我們發現應對方式竟然如此落后。
不管是早期 CrowdStrike 給出的恢復操作方式,還是微軟推出的修復工具,都繞不開大多數企業會部署的 BitLocker 磁盤加密,因此要修復這些設備,都需要管理員權限或者 BitLocker 密碼,導致修復效率非常低下。
就算不用權限和密碼,兩種修復方式基本都需要 IT 人員一臺臺修復和部署,微軟的修復軟件還需要創建一個 USB 驅動器來運行,一臺臺設備進行插入和恢復,簡直不是 2024 年科技應有的“優雅”。
諷刺的是,在美國各大航空公司因為藍屏死傷一片時,西南航空因為使用的是遠古系統 Windows 95 和 Windows 3.1 躲過一劫。
這次事件,很多媒體都提到了這么一句話:
To Err is Human; To Really Foul Things Up Requires a Computer人們只是犯錯,要把事情搞砸還得看電腦
雖然這句話有那么點反技術的意思在,但在這個事件中,我們真正意識到了這些維系著我們衣食住行的計算機系統,內部是如此不堪一擊,并且一旦出錯,修復的方式也極其落后和低效。
即使“藍色星期五”的主要責任確實在第三方廠商身上,也有觀點認為,對于大眾來說,微軟作為系統提供商,也負有一定責任,并且微軟開放了內核,卻沒有針對這種情況的應急措施。
更重要的不是追責,而是全方位優化整個科技生態系統的各個方面。故障無法避免,并且波及的范圍很可能越來越廣,因此真正需要優化的是故障發生前和發生后的流程和措施。
微軟作為游戲規則的制定者和維護者,更有理由承擔這種責任,例如收緊和限制系統內核的訪問,和完善和優化系統修復的方式和自修復的能力,而不能僅僅只是指望第三方廠商不出錯。



