近期 Photon 團隊透露,macOS 的內核存在一個嚴重的整數溢位漏洞,在系統持續運行達到49天17小時2分47秒時,其 TCP/IP 網絡協議棧會出現徹底癱瘓。該問題在目前所有的 macOS 版本中存在。

該問題最早是在 Photon 用於監控 iMessage 服務的 Mac 裝置集群中發現,有部分機器會在無明顯徵兆的情況下拒絕所有新的網絡連接,但 ping 探測正常,已有連接不會斷開,這導致問題排查更加困難。

為解決網絡問題,運維人員只能通過最原始的重啓來恢復。但經過一段時間後發現,該問題會在 49.7天的運行時間後再次出現。

經過深入調查,Photon 團隊發現了問題的所在。macOS 內核中的 tcp_now 計時器以 32bit 整數來記錄系統啓動的毫秒數,所以最大值為 4,294,967,295(即2³²-1),剛好就是 49.7天。數值達到上限後會歸零或翻轉,如果系統沒有進行處理,系統就會出現崩潰的情況,從而導致網絡驅動程式認為時間順序錯誤,停止處理所有數據。

該問題與 1999年 Windows 98 的 49.7天藍屏事件一樣,都是屬於整數溢位問題。

其實 RFC 7323 標準已經對時間戳時鐘溢位時的處理方式作出規範,但是 Apple 的內核並未進行處理。

對於普通 MacBook 用戶,裝置會定期關機或者進行重啓,所以基本不會出現網絡崩潰的問題。但當下 Mac mini 會被用來進行養龍蝦等任務處理,裝置需要連續運行數月,所以就會穩定的觸發該問題。

目前問題的唯一解決方案便是定期重啓,Photon 團隊正在開發替代方案,但根源需要 Apple 進行內核層面的推送更新。

_______

更多平台立即 Follow:Qooah IG (@qooah)Qooah YouTube,八掛產品發佈會現場,睇盡靚靚 Show Girls