Hacker News 中文摘要

RSS订阅

macOS漏洞导致TCP网络在49.7天后停止工作 -- A macOS bug that causes TCP networking to stop working after 49.7 days

文章摘要

研究人员在macOS的TCP网络协议栈中发现了一个定时炸弹式漏洞:当系统运行49天后,会因整数溢出导致TIMEWAIT状态异常。该漏洞源于TCP连接关闭时的TIMEWAIT计时机制缺陷,可能引发网络连接问题。

文章总结

标题:我们在macOS TCP网络中发现一枚定时炸弹——它会在49天后引爆

核心发现

Photon团队在macOS的TCP网络协议栈中发现一个关键漏洞:当系统持续运行49天17小时2分47秒(即2³²毫秒)后,内核的32位TCP时间戳计数器tcp_now会发生溢出,导致TCP连接状态TIME_WAIT无法被回收,最终耗尽所有临时端口,使系统丧失建立新TCP连接的能力。

技术背景

  1. TIME_WAIT机制
    TCP关闭连接时,主动关闭方会保留连接30秒(macOS的MSL为15秒,2×MSL=30秒),用于处理延迟报文和确保可靠关闭。

  2. 漏洞原理

    • tcp_now是XNU内核中记录启动时间的32位毫秒计数器,最大值约49.7天。
    • 溢出后,时间比较逻辑if (tmp < current_tcp_now)失效,导致计数器冻结。
    • 依赖该计数器的TIME_WAIT清理机制瘫痪,连接永久堆积。

实验验证

  • 测试环境:两台运行49天16小时的Mac服务器
  • 关键现象
    • 溢出前TIME_WAIT连接在30秒内正常回收(动态平衡约200个)。
    • 溢出后TIME_WAIT连接数从399开始只增不减,9.5小时后飙升至8000+。
    • 后果:新TCP连接因端口耗尽全部失败,仅存续的ESTABLISHED连接和ICMP仍可工作。

影响范围

  • 高危场景:长期不重启的macOS服务器(如CI/CD节点、监控设备、渲染工作站)。
  • 用户设备:普通用户因系统更新重启通常不会触发。

解决方案

  • 临时措施:每49天内重启系统。
  • 根本修复:需修改XNU内核代码,正确处理计数器溢出(团队正在开发补丁)。

漏洞特征

  • 隐蔽性:无崩溃日志,初期仅表现为网络逐渐退化。
  • 历史相似性:类似Windows 95的49.7天崩溃、2038年问题等整数溢出缺陷。

关键数字:49.7天——这是macOS网络功能的"死亡倒计时"。

评论总结

以下是评论内容的总结:

  1. 历史相似性问题

    • 多位用户提到这与Windows 95的49.7天崩溃漏洞类似。
    • 引用:"lol reminds me of the windows 95 crash bug after 49.7 days"
    • 引用:"Wasn't windows 95 famous for having an issue like this?"
  2. 实际影响争议

    • 部分用户认为问题被夸大,实际影响有限,因长期不重启的情况少见。
    • 引用:"A ticking time bomb? What an overly dramatic way to talk about a bug"
    • 引用:"very few users are likely to be affected by this"
  3. 技术验证与例外

    • 有用户报告Mac设备运行超过600天未出现问题,质疑漏洞的普遍性。
    • 引用:"have multiple macOS machines with 600-1000+ day uptimes... still expiring their TIME_WAIT connections as normal"
    • 引用:"I rarely restart my Mac mini, and I have never had such an issue"
  4. 测试方法讨论

    • 建议通过模拟环境加速测试而非实际运行50天。
    • 引用:"You can simulate the environment and tick the clock faster"
  5. 对OpenClaw的困惑

    • 多名用户质疑文章与OpenClaw的关联性。
    • 引用:"What does this have to do with OpenClaw exactly?"
    • 引用:"Ctrl+F 'OpenClaw'. No results. Que?"
  6. 对AI撰写文章的批评

    • 部分用户认为文章冗长、不自然,可能由AI生成。
    • 引用:"these AI-authored blog posts difficult to read... takes way too long to get to a point"
  7. 解决方案与调侃

    • 有用户提供脚本计算崩溃时间,另有人调侃此为OpenClaw的“功能”。
    • 引用:"I threw together a fish shell function that calculates the precise timestamp"
    • 引用:"In case of OpenClaw, this is a feature"
  8. 对苹果生态的吐槽

    • 部分用户表达对苹果支持Linux的期望。
    • 引用:"God I wish Apple offered first party support for Linux on Mac computers"

总结:评论主要围绕漏洞的历史相似性、实际严重性、技术细节及文章质量展开,观点分歧明显,但普遍认为问题被过度渲染。