Один клик по ссылке — и ваш Mac зависает: WebGPU-шейдер смерти

The Deathray: A simple way for an untrusted site to freeze a Mac

Новый эксплойт под названием Deathray использует WebGPU: бесконечный цикл в compute-шейдере блокирует GPU, из-за чего WindowServer перестаёт отвечать, а Mac уходит в kernel panic. Воспроизводится в Chrome, Firefox и Safari на MacOS, но не на других ОС. Автор случайно нашёл проблему во время обучения в Recurse Center и сообщил Apple, однако компания не считает это уязвимостью.

Мне кажется, среди большинства людей существует довольно сильная вера в браузер. Есть (возможно, ошибочное) убеждение, что простой клик по ссылке не повлияет негативно на остальную часть вашего компьютера, кроме, может быть, замедления работы до закрытия вкладки. Что-то вроде deathray нарушает это доверие очень заметным образом, и я думаю, что большинство пользователей считают это проблемой безопасности.
  1. isolay

    > Остаётся надеяться, что твой браузер не открывает автоматически ту же вкладку при перезапуске

    Попался. Мой браузер настроен именно так.

  2. john_owl

    Мне повезло, сайт недоступен из-за ошибки сертификата.

  3. socalgal2

    Это существует с 2011 года, когда появился WebGL. Это задокументировано в спецификации. Это самоисправляющаяся проблема. Заходишь на сайт, он вешает твою машину, ты больше никогда не посещаешь этот сайт.

    Никакие данные не крадутся, приватность не теряется. Всё, что происходит — злоумышленник теряет аудиторию.

    Отключение WebGL = больше никакой Figma, никакой Canva, никаких Google Maps. Несколько самоисправляющихся сайтов кажутся приемлемой ценой. Доказательство: прошло 15 лет с тех пор, как это стало возможным, и мир не рухнул, и весь интернет не вешает твою машину.

    Кроме того, это, возможно, баг MacOS. Window и Linux имеют мониторы GPU, которые перезагружают GPU, если команда выполняется слишком долго. Windows — ещё до появления WebGL. Linux — через несколько лет после. Mac'и до сих пор не восстанавливаются после чрезмерного использования GPU.

  4. alwaysmrno

    Заморозил мой браузер Brave на Windows примерно на 10 секунд. Каждая страница стала белой.

    затем они обновились и снова заработали, кроме той проблемной страницы.

    Как и предполагал автор, та вкладка зависла.

  5. washadjeffmad

    Ещё в 90-х, когда веб был некоммерческим и весёлым, я добавил ссылку "Не нажимай на меня", которая загружала страницу 'теста браузера' (после серии диалогов "ты действительно-действительно уверен?"), эксплуатирующую все исторические баги браузеров, какие я только мог найти. Бесконечные попапы, безвыходные диалоги, причуды ActiveX, различные зависания и падения — всё это.

    Если это не роняло твой компьютер, в конце концов появлялся один попап с надписью "Поздравляю, ты не пользуешься Internet Explorer!". Хотел бы я, чтобы у меня всё ещё были те письма с ненавистью.

  6. gucci-on-fleek

    Ого, это полностью уронило мой Firefox на Linux, чего со мной раньше никогда не случалось. По крайней мере, остальные программы на моём рабочем столе, похоже, совершенно не пострадали.

  7. StilesCrisis

    Metal основан на C++14, а это значит, что можно написать Duff's Device в шейдере. Я пробовал это на разных Mac'ах, и это вызывает всевозможные критические сбои в компиляторе, но никогда — настоящую панику ядра. (Это довольно тривиально воспроизводится в KodeLife)

  8. xoa

    Хотя я уверен, что у этого есть свои применения, особенно если кто-то действительно хочет играть или заниматься сложными вычислениями исключительно в веб-браузере, признаюсь, я стал довольно осторожным/устал от постоянно растущей площади поверхности аппаратных атак, которую производители браузеров, похоже, спешат открыть, поскольку Google, в частности, по-видимому, полон решимости пытаться быть "операционной системой внутри операционной системы" настолько, насколько это возможно. В этом конкретном случае я осознал, что некоторое время назад установил dom.webgpu.enabled и pdfjs.enableWebGPU в false в Firefox, так же как я отключил WebGL. Как-то подумал, что если когда-нибудь увижу что-то ультра-крутое, я смогу включить это только на тот раз, но пока что не видел. Полу-связанное: просматривая доступные настройки сейчас впервые за некоторое время, я заметил, что у них есть dom.webgpu.blocked-domains с единственными записями "easyeda.com,*.easyeda.com", интересно, с чем это связано?

Ещё за этот день

2026-09-10