Обычная веб-страница способна заморозить весь графический интерфейс Mac. Исследователь Оберон Лопес представил Deathray — демонстрацию сбоя, который повторяется в Chrome, Firefox и Safari на MacBook с процессорами Apple серии M. После открытия такой страницы рабочий стол перестаёт реагировать на действия. Вернуть систему в рабочее состояние удаётся только перезагрузкой.
Лопес тестировал Deathray на MacBook с чипами серии M под управлением macOS Tahoe. На моделях с чипами Max и старых Intel Mac проблема проявляется реже, но тоже возникает. Полностью распространять результаты на все компьютеры Apple пока нельзя.
Это DoS-атака — способ лишить пользователя доступа к системе или её ресурсам. Deathray не похищает файлы, не выполняет команды и не захватывает компьютер. Вред состоит в прерванной работе и риске потерять несохранённые данные.
Атака использует WebGPU — технологию для прямой работы с графическим процессором через браузер. Сайты загружают на GPU маленькие программы (шейдеры), которые рисуют графику или выполняют параллельные вычисления. Это нужно для трёхмерных приложений и сложных расчётов прямо в браузере.
В Deathray вычислительный шейдер бесконечно копирует данные в одном буфере памяти. Следующий этап отрисовки зависит от этого буфера и остаётся в очереди. По словам Лопеса, задержка распространяется на другие процессы, которые требуют GPU, включая WindowServer — сервис, отвечающий за отрисовку интерфейса macOS. Зависание выходит далеко за границы вкладки браузера и парализует весь рабочий стол.
Компьютер при этом не полностью отключается. Лопес мог подключиться к Mac по сети, хотя визуально система не отвечала. Потом автоматический контроль обнаруживал зависший WindowServer и запускал аварийную перезагрузку. Пользователь может выключить Mac кнопкой, но при следующем запуске восстановленная вкладка способна повторить сбой.
Apple получила отчёт 27 июля, смогла воспроизвести проблему и сначала пообещала исправление. 26 августа компания ответила, что не видит угрозы безопасности, и отправила отчёт другой команде для оценки возможных улучшений. Публичного графика исправления нет.
Похожую проблему несколько лет назад нашел исследователь Imperva Рон Масас. Его ShadyShader перегружал GPU через WebGL с помощью огромных циклов. Apple исправила эту ошибку в 2023 году, усилив проверку входных данных, и опубликовала CVE-2023-40441. В описании уязвимости компания назвала последствие отказом в обслуживании при обработке веб-контента. То старое исправление касается другого бага и не гарантирует, что Deathray закрыт.
