В ядре macOS обнаружен баг, блокирующий сеть через 50 дней работы
В ядре XNU операционной системы macOS обнаружена критическая уязвимость, связанная с переполнением целого числа в стеке сетевых протоколов TCP/IP. После непрерывной работы устройства в течение 49 дней 17 часов 2 минут и 47 секунд система полностью прекращает принимать новые сетевые подключения. Проблема затрагивает все актуальные версии macOS и проявляется в невозможности открывать веб-страницы или запускать приложения, требующие доступа к интернету.
Причиной сбоя стал таймер tcp_now, использующий 32-битное беззнаковое целое число для учета времени с момента запуска системы в миллисекундах. При достижении максимального значения счетчик замораживается, что нарушает логику обработки временных интервалов в ядре. В результате сетевые ресурсы, которые должны освобождаться после завершения сессий, остаются занятыми, блокируя создание любых новых запросов.
Специалисты команды Photon выявили дефект при мониторинге кластеров Mac, работающих в автоматическом режиме. Диагностика осложнялась тем, что существующие соединения продолжали функционировать, а устройство отвечало на запросы ping. Аналогичный инцидент фиксировался в 1999 году в операционных системах Windows 95 и Windows 98, где переполнение переменной приводило к полной остановке работы программного обеспечения.
Наибольшему риску подвержены корпоративные серверы и станции Mac mini, предназначенные для длительного выполнения задач без отключения питания. Обычные пользователи MacBook сталкиваются с проблемой редко из-за регулярного закрытия крышки ноутбука или перезагрузки системы. На текущий момент восстановление сетевой активности возможно только путем перезапуска устройства.