AI 服務供應商近日揭露,macOS XNU 內核存在嚴重整數溢位漏洞。只要 Mac 機持續運行 49 天 17 小時 2 分 47 秒後,TCP/IP 網絡協議棧將完全停止接受新連接,意味電腦無法開啟任何新網頁或運行需要聯網的應用程式。目前所有 macOS 型號均受影響,唯一的臨時解決方法是重新啟動裝置。

發現問題經過
發現問題的 Photon 團隊最初在用於監控 iMessage 服務 Mac 裝置集群中發現異常。部分機器會在毫無先兆情況下拒絕所有新網絡連接,但 ping 探測顯示正常,ping 是測試網絡連線是否通暢的簡單工具,但現有連接亦維持運作,令問題排查工作異常困難。
運維人員最終只能以重啟裝置作為應急措施,但經過觀察後發現,問題會在裝置運行約 49.7 天後再度出現。
32 位元整數溢位根源
深入調查後,Photon 團隊找到了問題的核心根源。macOS 內核使用一個名為 tcp_now 的計時器來記錄系統自啟動以來的毫秒數。這個計時器採用「32 位元無符號整數」儲存數值,這在電腦世界就像一個只能顯示 10 位數的計數器,其最大上限是 4,294,967,295。當我們把這個毫秒數換算成天數時,剛好就對應 49 天 17 小時 2 分 47 秒。
當數值到達這個上限,內核中負責計算時間的函數邏輯出錯,導致 tcp_now 凍結在最後一個數值,而不會重新歸零或繼續跳動。一旦時鐘凍結,系統會陷入邏輯混亂:原本應該在通話結束後釋放的網路資源(TIME_WAIT 狀態),因為系統以為「時間停止了」而永遠不會過期。
歷史上同類事故
此漏洞與 1999 年 Windows 95 及 Windows 98 的 49.7 天系統凍結事件如出一轍,同屬 32 位元整數溢位問題,當年 Microsoft 亦要發布補丁才修復。macOS 情況略有不同,溢位後僅影響新 TCP 連接,現有連接及 ping 仍可正常運作。
普通用戶影響有限 長期運行裝置首當其衝
對於一般 MacBook 用戶而言,裝置會定期關機或重啟,幾乎不會觸發此漏洞。然而愈來愈多企業及開發者用 Mac mini於長期執行自動化任務,裝置需連續運行數月,因此會持續地觸發問題。


▲ 愈來愈多企業及開發者用 Mac mini於長期執行自動化任務,會持續地觸發問題
Photon 團隊正積極研發替代方案,但從根本上解決問題,仍有賴 Apple 推送內核層面系統更新。
資料來源:Photon、Tom’s Hardware
