macOS TCP 网络漏洞:一颗在运行 49.7 天后引爆的定时炸弹
Available in: 中文
Photon 的研究人员发现了 macOS 网络中的一个严重漏洞:系统运行恰好 49.7 天后,所有 TCP 连接完全停止工作——这是一个经典的整数溢出问题,将任何长期运行的 Mac 变成一个没有网络访问的孤岛。
Photon 的研究人员发现了 macOS 网络中的一个严重漏洞:系统运行恰好 49.7 天后,所有 TCP 连接完全停止工作——这是一个经典的整数溢出问题,将任何长期运行的 Mac 变成一个没有网络访问的孤岛。
漏洞
这一发现揭示了 macOS TCP 实现中的一个根本缺陷:
- 触发条件:系统正常运行时间达到约 49.7 天(4,294,967,295 毫秒——32 位无符号整数的最大值)
- 效果:所有 TCP 网络停止运行——无法上网、无法收邮件、无法调用 API、无法 SSH
- 原因:TCP 协议栈中使用的毫秒计数器发生整数溢出
- 严重程度:对服务器、关键基础设施和始终在线的 Mac 来说至关重要
- 修复:简单重启即可解决问题——直到 49.7 天后再次发生
为什么是 49.7 天?
这是一个经典的计算机科学问题:
- 2^32 毫秒 = 4,294,967,295 毫秒 ≈ 49.7 天
- 整数溢出:当计数器回绕时,计算产生错误的值
- 历史先例:类似的漏洞曾影响 GPS 系统(周翻转)、Unix 时间(Y2038 问题)和各种网络协议
谁受到影响?
任何长期运行的 Mac:
- Mac Mini 服务器:通常连续运行数月不重启
- macOS CI/CD 运行器:持续在线的构建服务器
- 开发机器:很少重启 Mac 的开发者
- Apple Silicon Mac:所有架构均受影响
- macOS Sequoia 及更早版本:已确认受影响的版本
影响
对不同用例的影响:
- 个人 Mac:烦人但可通过重启修复
- Mac 服务器:完全服务中断
- CI/CD 流水线:构建失败,生产力损失
- IoT/边缘 Mac:远程设备失去连接
- 生产服务:潜在数据丢失,SLA 违规
研究
Photon 团队在调查其长期运行的 Mac 服务器的网络问题时发现了此漏洞:
- 发现方法:对无法解释的网络故障进行系统性调试
- 确认:在多个 Mac 系统上可靠地复现
- 公开:作为对 Mac 社区的公共服务发布
- HN 反响:发布数小时内获得 86 分、44 条评论
Apple 应该怎么做
修复方法很直接:
- 使用 64 位计数器替代 32 位的时间计算
- 添加监控以检测网络协议栈中的基于运行时间的问题
- 实现自动恢复,在检测到溢出时触发
← Previous: AI Has Flooded All the Weather Apps: Machine Learning Transforms Forecasting From Data to ConversationsNext: Trump Proposes Massive 55% Cut to NSF Budget, Dissolves Social Sciences Division in 2027 Budget Plan →
0