veilletech.fr
11 sept. Feed du jour
#10 WEB Article

Un shader WebGPU gèle votre Mac, Apple ne corrige pas

Un lien qui coûte un redémarrage, et personne pour le corriger.

Le Deathray, publié le 10 septembre par Auberon López, est un shader WebGPU d'une boucle infinie qui bloque le GPU d'un Mac M-series sous Chrome, Firefox et Safari : WindowServer ne répond plus, et un watchdog finit par provoquer un kernel panic. Apple a reproduit le problème en juillet, puis a décidé le 26 août qu'un gel n'est pas un problème de sécurité.

3 min de lecturedébutantvidéo 1:20
Partager
Sommaire4 sections
  1. Ce qui se passe
  2. Comment ça marche
  3. Pourquoi ça compte
  4. À retenir

Ce qui se passe

Auberon López publie le 10 septembre le Deathray : une page web qui, en un clic, fige un Mac jusqu'au redémarrage forcé. Le fichier est petit, l'essentiel tient dans deux shaders WebGPU, et le résultat se reproduit sous Chrome, Firefox et Safari sur des MacBook M-series sous macOS Tahoe. Sur les autres systèmes testés, l'onglet gèle et la machine rame, mais fermer l'onglet suffit.

Comment ça marche

WebGPU, le successeur de WebGL, laisse un site soumettre des shaders au GPU. Le Deathray en combine deux :

Le second attend le premier, qui ne termine jamais. L'embouteillage déborde sur les autres processus qui ont besoin du GPU, à commencer par WindowServer, le compositeur de macOS. Les symptômes varient : souris qui bouge ou pas, roue de chargement, aplats magenta à l'écran. Le reste de la machine fonctionne, on peut s'y connecter en SSH. Mais un watchdog surveille WindowServer, et faute de réponse il déclenche un kernel panic et redémarre. Le bouton d'alimentation fait la même chose plus vite, en espérant que le navigateur ne rouvre pas le même onglet au retour.

Pourquoi ça compte

Ce n'est pas la première fois. En 2023, ShadyShader, de Ron Masas (Imperva), obtenait le même effet en WebGL avec d'énormes boucles imbriquées, techniquement finies. Apple avait publié CVE-2023-40441, score CVSS 6.5, et renforcé la validation des boucles. Cette validation semble plus faible en WebGPU : la boucle infinie du Deathray est triviale à repérer. L'auteur en tire la vraie conclusion : détecter les boucles infinies est un jeu perdu d'avance, c'est la préemption des shaders qui ne répondent plus qu'il faut, comme le font les autres systèmes. Sur les puces M, la logique de préemption du GPU vit dans le firmware du coprocesseur ASC, hors de portée du noyau, ce qui expliquerait la difficulté.

La chronologie côté Apple : rapport le 27 juillet 2026, reproduction rapide et promesse d'un correctif avec un calendrier confidentiel ; puis, le 26 août, changement de position. Un gel, un plantage ou une perte de données récupérable ne constitue pas, pour Apple, un problème de sécurité, et le rapport part vers une autre équipe pour « amélioration potentielle ». Les chercheurs en sécurité consultés par l'auteur sont plutôt d'accord sur le plan technique ; la plupart des non-spécialistes, non, parce que la confiance dans le navigateur repose précisément sur l'idée qu'un clic ne peut pas coûter plus qu'un onglet.

À retenir

Pas d'exécution de code, pas de fuite, pas d'escalade : du travail non sauvegardé perdu et un redémarrage. La barrière d'entrée est nulle, le correctif n'est pas planifié, et l'auteur espère que les usages resteront ludiques. Concrètement : sur Mac, un lien inconnu peut coûter un redémarrage, et un navigateur réglé pour restaurer sa session peut le coûter deux fois.

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