The Deathray: A simple way for an untrusted site to freeze a Mac
На macOS вредоносный WebGPU-шейдер на незащищённом сайте может полностью заморозить графический стек, сделав рабочий стол неработоспособным до принудительной перезагрузки. Достаточно одного клика по ссылке — проблема воспроизводится в Chrome, Firefox и Safari на M-серии Mac под macOS Tahoe, но не на других ОС. Шейдер содержит простой бесконечный цикл в compute-шейдере, который непрерывно копирует данные в буфер, блокируя доступ к нему вершинному шейдеру. Это создаёт конфликт доступа к GPU, который перегружает WindowServer — процесс, отвечающий за отрисовку интерфейса. В результате пользователь может увидеть пляшущий курсор, beachball, артефакты на экране или полную потерю отклика UI, хотя остальная система (например, SSH) остаётся доступной. Через некоторое время watchdog-трекер обнаруживает зависание WindowServer и инициирует kernel panic, приводя к принудительной перезагрузке. Пользователь может ускорить процесс, удерживая кнопку питания.
Эта уязвимость напоминает аналогичную проблему 2023 года — ShadyShader, использующую WebGL и получившую CVE-2023-40441 со средней степенью тяжести (CVSS 6.5). Apple тогда усилила проверку на бесконечные циклы в WebGL, но, как показывает Deathray, аналогичная защита в WebGPU оказалась недостаточно строгой — простой цикл без инкремента легко проскакивает валидацию. Хотя Apple официально не считает такие зависания проблемами безопасности (ссылаясь на отсутствие утечки данных или удалённого выполнения кода), автор отмечает, что для обычных пользователей это нарушает фундаментальное доверие к браузеру: клик по ссылке не должен приводить к полной потере управления машиной. Он призывает Apple исправить проблему, но без отключения WebGPU по умолчанию, и предлагает рассматривать такие эффекты как часть этичного эксперимента — например, в играх с добровольным согласием пользователя. Пока исправления нет, он предупреждает: не нажимайте на ссылку, если не готовы к перезагрузке.