WebGPUでMacをフリーズさせる「Deathray」脆弱性
मूल शीर्षक: The Deathray: A simple way for an untrusted site to freeze a Mac
यह क्यों महत्वपूर्ण है
ブラウザから実行できるGPUコードがOSレベルのクラッシュを引き起こせる点は、WebGPU普及の安全性前提を問い直す。
セキュリティ研究者が、WebGPUシェーダーを悪用してMacのGraphics SystemをハングさせるPoCを公開。Chrome、Firefox、SafariすべてでMacOS上で再現。リンクをクリックするだけでWindowServerが応答不能になりカーネルパニックに至る。
연구자 auberon が公開した「Deathray」は、WebGPU の Compute Shader に無限ループを仕込むことで Mac の GPU を占有し、デスクトップ UI を操作不能にする概念実証(PoC)だ。
この攻撃は極めてシンプルだ。Compute Shader が同じバッファに対して無限にデータコピーを繰り返す。Vertex Shader は同じバッファに依存しているため先に進めず、GPU キューが詰まる。その結果、macOS のウィンドウ描画を担う WindowServer がGPUリソースを取得できなくなり、デスクトップが応答不能になる。
被害の出方は一定ではない。マウスが動く場合もあれば、ビーチボールが回り続けたり、画面にマゼンタのノイズが出たりする。SSH 接続は維持されるため CPU 自体は正常だが、WindowServer を監視する Watchdog が一定時間後にカーネルパニックを発火させ、強制再起動が発生する。
前例がある。2023年、Imperva の Ron Masas が WebGL を悪用した「ShadyShader」を発表し、Apple は CVE-2023-40441(CVSS 6.5)として修正した。その際に追加した「無限ループ検出」の入力バリデーションが、WebGPU には有効に機能していない。
研究者は「無限ループの検出はハルティング問題に帰着するため本質的な解決策にならない」と指摘し、応答不能なシェーダーのプリエンプションを改善すべきだと主張している。同じ攻撃を Windows や Linux で試しても、タブがフリーズするだけでOS全体への影響はなかった。M シリーズ MacBook の Tahoe 環境で再現を確認済み。