Один клик по ссылке — и ваш 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 нарушает это доверие очень заметным образом, и я думаю, что большинство пользователей считают это проблемой безопасности.
- isolay
> Остаётся надеяться, что твой браузер не открывает автоматически ту же вкладку при перезапуске
Попался. Мой браузер настроен именно так.
- john_owl
Мне повезло, сайт недоступен из-за ошибки сертификата.
- socalgal2
Это существует с 2011 года, когда появился WebGL. Это задокументировано в спецификации. Это самоисправляющаяся проблема. Заходишь на сайт, он вешает твою машину, ты больше никогда не посещаешь этот сайт.
Никакие данные не крадутся, приватность не теряется. Всё, что происходит — злоумышленник теряет аудиторию.
Отключение WebGL = больше никакой Figma, никакой Canva, никаких Google Maps. Несколько самоисправляющихся сайтов кажутся приемлемой ценой. Доказательство: прошло 15 лет с тех пор, как это стало возможным, и мир не рухнул, и весь интернет не вешает твою машину.
Кроме того, это, возможно, баг MacOS. Window и Linux имеют мониторы GPU, которые перезагружают GPU, если команда выполняется слишком долго. Windows — ещё до появления WebGL. Linux — через несколько лет после. Mac'и до сих пор не восстанавливаются после чрезмерного использования GPU.
- alwaysmrno
Заморозил мой браузер Brave на Windows примерно на 10 секунд. Каждая страница стала белой.
затем они обновились и снова заработали, кроме той проблемной страницы.
Как и предполагал автор, та вкладка зависла.
- washadjeffmad
Ещё в 90-х, когда веб был некоммерческим и весёлым, я добавил ссылку "Не нажимай на меня", которая загружала страницу 'теста браузера' (после серии диалогов "ты действительно-действительно уверен?"), эксплуатирующую все исторические баги браузеров, какие я только мог найти. Бесконечные попапы, безвыходные диалоги, причуды ActiveX, различные зависания и падения — всё это.
Если это не роняло твой компьютер, в конце концов появлялся один попап с надписью "Поздравляю, ты не пользуешься Internet Explorer!". Хотел бы я, чтобы у меня всё ещё были те письма с ненавистью.
- gucci-on-fleek
Ого, это полностью уронило мой Firefox на Linux, чего со мной раньше никогда не случалось. По крайней мере, остальные программы на моём рабочем столе, похоже, совершенно не пострадали.
- StilesCrisis
Metal основан на C++14, а это значит, что можно написать Duff's Device в шейдере. Я пробовал это на разных Mac'ах, и это вызывает всевозможные критические сбои в компиляторе, но никогда — настоящую панику ядра. (Это довольно тривиально воспроизводится в KodeLife)
- xoa
Хотя я уверен, что у этого есть свои применения, особенно если кто-то действительно хочет играть или заниматься сложными вычислениями исключительно в веб-браузере, признаюсь, я стал довольно осторожным/устал от постоянно растущей площади поверхности аппаратных атак, которую производители браузеров, похоже, спешат открыть, поскольку Google, в частности, по-видимому, полон решимости пытаться быть "операционной системой внутри операционной системы" настолько, насколько это возможно. В этом конкретном случае я осознал, что некоторое время назад установил dom.webgpu.enabled и pdfjs.enableWebGPU в false в Firefox, так же как я отключил WebGL. Как-то подумал, что если когда-нибудь увижу что-то ультра-крутое, я смогу включить это только на тот раз, но пока что не видел. Полу-связанное: просматривая доступные настройки сейчас впервые за некоторое время, я заметил, что у них есть dom.webgpu.blocked-domains с единственными записями "easyeda.com,*.easyeda.com", интересно, с чем это связано?