Ein WebGPU-Shader legt jeden Mac mit einem Klick lahm
The Deathray: A simple way for an untrusted site to freeze a Mac
Ein einziger WebGPU-Shader auf einer beliebigen Website kann unter macOS die GPU blockieren, den WindowServer unbrauchbar machen und einen Kernel-Panic auslösen. Der Angriff namens Deathray reproduziert sich in Chrome, Firefox und Safari auf M-Serie-Macs, während andere Betriebssysteme unbeeinträchtigt bleiben. Apple stufte den Fehler zunächst als sicherheitsrelevant ein, erklärte später jedoch, es gebe keine Sicherheitsauswirkungen. Der Entdecker fordert bessere Präemption für nicht reagierende Shader.
Es braucht eine bessere Präemption für nicht reagierende Shader, besonders wenn diese Shader nicht vertrauenswürdigen Code ausführen. Alle anderen Betriebssysteme, auf denen ich den Deathray getestet habe, machen das richtig.
- isolay
> Hoffentlich öffnet dein Browser nicht automatisch denselben Tab, wenn er wieder startet
Erwischt. Mein Browser ist genau so eingestellt.
- john_owl
Ich hatte Glück, die Website ist wegen eines Zertifikatsfehlers down.
- socalgal2
Das gibt es schon seit 2011, als WebGL eingeführt wurde. Es ist in der Spezifikation dokumentiert. Es ist ein selbstkorrigierendes Problem. Du gehst auf eine Seite, sie friert deine Maschine ein, du besuchst die Seite nie wieder.
Es werden keine Daten gestohlen, keine Privatsphäre geht verloren. Alles, was passiert, ist, dass der Täter sein Publikum verliert.
WebGL abschalten = kein Figma mehr, kein Canva mehr, keine Google Maps mehr. Ein paar selbstkorrigierende Seiten scheinen akzeptabel. Beweis: Es ist 15 Jahre her, seit das möglich war, und die Welt ist nicht untergegangen und das ganze Internet friert deine Maschine nicht ein.
Außerdem ist das wohl ein MacOS-Bug. Window und Linux haben GPU-Monitore, die die GPU neu starten, wenn ein Befehl zu lange dauert. Windows schon vor der Einführung von WebGL. Linux ein paar Jahre später. Macs erholen sich immer noch nicht von übermäßiger GPU-Nutzung.
- alwaysmrno
Hat meinen Brave-Browser unter Windows für etwa 10 Sekunden eingefroren. Jede Seite wurde weiß.
Dann haben sie sich neu geladen und funktionierten wieder, außer der betroffenen Seite.
Wie der Autor vermutete, war dieser Tab eingefroren.
- washadjeffmad
Damals in den 90ern, als das Web noch nicht kommerziell und lustig war, habe ich einen "Don't Click Me"-Link hinzugefügt, der eine 'Browser-Test'-Seite lud (nach einer Reihe von "Bist du dir wirklich ganz sicher?"-Dialogen), die jeden historischen Browser-Bug ausnutzte, den ich finden konnte. Endlose Popups, unentkommbare Dialoge, ActiveX-Eigenheiten, diverse Hänger und Abstürze, das volle Programm.
Wenn es deinen Computer nicht zum Absturz brachte, zeigte es irgendwann ein einzelnes Popup, das sagte: "Glückwunsch, dass du nicht Internet Explorer benutzt!". Ich wünschte, ich hätte die Hass-E-Mails noch.
- gucci-on-fleek
Huch, das hat meinen Firefox unter Linux komplett zum Absturz gebracht, was ich noch nie erlebt habe. Zumindest scheinen die anderen Programme auf meinem Desktop völlig unbeeinträchtigt geblieben zu sein.
- StilesCrisis
Metal basiert auf C++14, was bedeutet, dass man Duff's Device in einem Shader schreiben kann. Ich habe es auf verschiedenen Macs ausprobiert und es verursacht alle möglichen kritischen Fehler im Compiler, aber nie einen echten Kernel-Panic. (Es ist ziemlich trivial, es in KodeLife zu reproduzieren)
- xoa
Obwohl ich sicher bin, dass es seine Verwendungszwecke hat, besonders wenn jemand wirklich nur in einem Webbrowser spielen oder komplexe Berechnungen durchführen möchte, muss ich zugeben, dass ich ziemlich vorsichtig/müde geworden bin angesichts der ständig wachsenden Angriffsfläche für Hardware, die die Browser-Hersteller scheinbar überstürzt freizulegen versuchen, da insbesondere Google entschlossen zu sein scheint, so sehr wie möglich das "Betriebssystem auf dem Betriebssystem" zu sein. In diesem speziellen Fall wurde mir klar, dass ich vor einer Weile dom.webgpu.enabled und pdfjs.enableWebGPU in Firefox auf false gesetzt hatte, genau wie ich WebGL deaktiviert habe. Ich dachte mir, wenn ich jemals etwas ultra Cooles sehen würde, könnte ich es für genau dieses eine Mal aktivieren, aber bisher habe ich das nicht getan. Halbwegs verwandt: Als ich mir jetzt zum ersten Mal seit einer Weile die verfügbaren Einstellungen ansehe, bemerke ich, dass sie ein dom.webgpu.blocked-domains haben, dessen einzige Einträge "easyeda.com,*.easyeda.com" sind. Ich frage mich, was es damit auf sich hat?