吓一跳!Mac 惊现“定时炸弹”,开机 49.7 天准时触发 ypxx.net

近日,国外技术团队 Photon 挖出了一个苹果 macOS 里藏了很久,却鲜为人知的网络 “定时炸弹”漏洞。

只要你的 Mac 连续开机运行到 49 天 17 小时 2 分 47 秒,它就会准时出现网络罢工。

此时,系统的 TCP 网络协议栈就会直接失效,Mac 设备看似连着网,实际上已经彻底断网,进入网络假死状态。

不管你换什么 Wi-Fi、插什么网线都没用,设备就是无法正常联网,包括网页打不开,应用无法连接服务器等。

遇到这种情况,目前唯一有效的解决办法就是重启设备。重启后,macOS 会重置内部的 tcp_now 计数器,网络也就自动恢复正常了。

有人可能会说,为什么偏偏是 49.7 天呢?

这个精确到秒的数字听起来像玄学,但剥开外壳,其实是一个挺低级的数学坑。

Photon 团队深入 macOS 的 XNU 内核发现,问题的根源在于一个叫 tcp_now 的计时器。

在 macOS 的底层逻辑里,负责 TCP 时间戳的 tcp_now 计数器用的是 32 位无符号整数,以毫秒记录开机时长。它的上限是 2³² 毫秒,换算下来刚好约 49.7 天。

这就好比老式汽车的里程表,转到头了就会归零。

当你的 Mac 连轴转了快 50 天时,计数器突然从最大值瞬间蹦回 0。这一跳变,直接把网络驱动给整懵了,底层逻辑算不出正确的时间差,网络栈干脆直接崩溃,导致网卡停止响应,从而无法为设备提供正常网络服务。

对普通 Mac 用户来说,可能这辈子都碰不到这个 Bug。毕竟,大家平时要么下班关机,要么偶尔重启更新系统,极少有电脑能连续 50 天不休眠地干活。

但对另一类用户就很要命了,比如放在托管机房的 macOS 服务器、7×24 小时不间断跑任务的 CI/CD 构建服务器,或者是 Mac Pro 工作站。在这些专业场景下,网络突然瘫痪可能造成生产力的重大损失。

其实这个网络漏洞并不算新鲜,早在 MacOS Big Sur 和 Monterey 时代,就已经有不少用户和开发者讨论过类似现象。但因为触发门槛太高,一直没掀起什么波澜。

目前,苹果还没有发布针对这一问题的官方补丁。后续大概率会通过系统更新修复,比如把计数器升级到 64 位,或是优化时间差计算逻辑,从根源上解决这个隐患。

总的来说,这个漏洞不是苹果故意设计的,而是一个藏得比较深的底层驱动 Bug。如果你正维护着 Mac 服务器,记得关注下后续系统更新,或者干脆设个定时任务,如每隔一个月左右让设备自动重启喘口气。