Один сайт может заморозить Mac целиком. Apple не видит проблемы

Chrome, Firefox или Safari — без разницы.


q819335bl57xy3lbl6w9z9oo3akatpyh.jpg

Обычная веб-страница способна вывести из строя весь графический интерфейс Mac. Исследователь Оберон Лопес 10 сентября представил Deathray , демонстрацию сбоя, который воспроизводится в Chrome, Firefox и Safari на протестированных MacBook с процессорами Apple. После запуска страницы рабочий стол перестаёт отвечать, а вернуть нормальную работу помогает перезагрузка.

Лопес проверял Deathray на MacBook с чипами серии M под управлением macOS Tahoe. Распространять результат на все компьютеры Apple пока нельзя. В дополнении от 11 сентября автор отметил, что участники публичного обсуждения реже наблюдали полное зависание на моделях с чипами Max и на Intel Mac, хотя отдельные проблемы возникали и там.

Продемонстрированный эффект относится к DoS-атакам , которые лишают пользователя доступа к системе или её ресурсам. Deathray не демонстрирует кражу файлов, выполнение системных команд или захват компьютера. Практический ущерб связан с прерванной работой и риском потерять несохранённые изменения.

Страница использует WebGPU , браузерную технологию для работы с графическим процессором. Сайты могут поручать GPU отрисовку графики и параллельные вычисления, запуская небольшие программы, называемые шейдерами. Такая возможность нужна, например, сложным трёхмерным приложениям и вычислениям непосредственно в браузере.

В Deathray вычислительный шейдер бесконечно копирует одни и те же данные, а следующий этап отрисовки зависит от занятого буфера памяти. По объяснению Лопеса, задержка затрагивает другие процессы, которым нужен GPU, включая WindowServer, отвечающий за интерфейс macOS. В результате зависание выходит далеко за пределы вкладки браузера.

При этом компьютер не обязательно прекращает работу целиком. Автор сохранял возможность подключиться к Mac по сети, хотя рабочий стол уже не отвечал. Затем системный механизм контроля обнаруживал зависший WindowServer и вызывал аварийную перезагрузку. Пользователь также может принудительно выключить Mac кнопкой питания, но восстановление проблемной вкладки после запуска способно повторить сбой.

По рассказу исследователя, Apple получила отчёт 27 июля, воспроизвела проблему и сначала обещала исправление. Однако 26 августа компания ответила, что не видит последствий для безопасности, и передала обращение другой команде для рассмотрения возможных улучшений. Публичного срока исправления Deathray автор не приводит.

Похожую проблему ранее обнаружил исследователь Imperva Рон Масас. Его ShadyShader перегружал GPU через WebGL, используя огромные, но формально конечные циклы. Apple исправила ту ошибку в 2023 году, усилив проверку входных данных, и зарегистрировала CVE-2023-40441 . В официальном бюллетене компания прямо описала последствие как отказ в обслуживании при обработке веб-контента. Старое исправление относится к отдельной уязвимости и не подтверждает, что Deathray устранён.