❌

Vue lecture

Le Deathray - Le shader WebGPU qui fait redémarrer votre Mac

Auberon López vient de publier sur son blog un bouton qui freeze complètement les Mac à partir d'un simple clic dans un navigateur. Il a baptisé ça le Deathray (le rayon de la mort quoi...) et c'est un shader WebGPU diffusé via une page web des plus ordinaires, qu'il suffit d'ouvrir d'un simple clic sur un lien.

Ce qui arrive ensuite change d'une fois sur l'autre : Vous aurez le doit à la roue multicolore, ou la souris qui se fige, ou encore parfois des saletés magenta sur une partie de l'écran. Le reste de l'ordinateur, lui, va très bien et vous pouvez vous y connecter en SSH depuis une autre machine sans souci. C'est juste l'affichage qui ne répond plus, et il ne reviendra pas sauf si vous rebootez.

Le fait est que macOS surveille également son WindowServer, le processus qui dessine tout ce que vous voyez. S'il ne répond plus pendant deux minutes, le chien de garde déclenche un kernel panic et la machine redémarre ensuite toute seule. Mais vous pouvez aussi appuyer sur le bouton d'alimentation si vous êtes pressé, mais en croisant les doigts pour que votre navigateur ne rouvre pas l'onglet au redémarrage...

Le truc tient dans un seul fichier HTML, et histoire de vous expliquer un peu plus, un compute shader part dans une boucle écrite sans incrément, donc elle ne se termine jamais, et recopie indéfiniment le même vecteur en mémoire. À côté, le vertex shader qui dessine l'image lit alors cette même zone, et comme le premier ne lâche jamais la main, le second ne peut pas avancer d'un pouce.

Sauf que l'embouteillage ne reste pas cantonné au navigateur. Tous les processus qui veulent le GPU se retrouvent alors à patienter derrière, WindowServer compris, d'où l'écran figé. López dit avoir reproduit la chose dans Chrome, Firefox et Safari, sur des MacBook à puce M tournant sous macOS Tahoe. Après sur les autres systèmes testés, l'onglet rame un bon coup, puis tout rentre dans l'ordre dès qu'on ferme la page.

Mais alors pourquoi eux et pas les autres OS comme Windows ?

Hé bien parce que Windows embarque un mécanisme appelé TDR , qui repère qu'une carte graphique met plus longtemps que prévu à répondre et qui la réinitialise pour éviter que tout le système se bloque. Deux secondes par défaut, et le shader qui déconne se fait éjecter.

Alors que sur Apple Silicon, c'est un coprocesseur maison, l'ASC, qui pilote le GPU avec un firmware Apple et qui s'occupe de tout : énergie, ordonnancement des commandes, préemption des tâches. Asahi Lina , qui a retourné la puce M1 pour écrire un pilote Linux , a d'ailleurs relevé que si ce firmware plante, il n'y a qu'un moyen de s'en sortir. La seule solution c'est de redémarrer complètement la machine.

López a signalé le problème à Apple Security fin juillet. Apple a reproduit le bug, annoncé un correctif et donné un calendrier (confidentiel, donc on ne le connaîtra pas). Puis le 26 août, revirement complet d'Apple qui explique ne voir "aucune implication de sécurité dans ce rapport", lequel n'entraînera donc aucun changement dans ses produits. Le dossier est ensuite parti vers une autre équipe pour d'éventuelles "considérations d'amélioration".

En 2023 pourtant, Ron Masas d'Imperva avait déjà fait planter des Mac, des iPhone et des iPad avec un shader, en WebGL cette fois. Apple avait alors sorti le CVE-2023-40441 , noté 6,5 sur 10, et l'avait bouché en renforçant la validation des entrées pour mieux repérer les boucles folles.

Seulement voilà, sa boucle à lui était énorme mais finie, donc détectable, alors que celle du Deathray tourne pour toujours. Et une boucle infinie, la repérer à coup sûr, c'est le problème de l'arrêt ... donc personne ne sait faire.

López l'écrit d'ailleurs sur son site, les chercheurs en sécurité avec qui la question a été discutée donnent plutôt raison à Apple. Pour la firme, le résultat n'est qu'un plantage, un gel ou une perte de données récupérable, et ça ne constitue pas un réel problème de sécurité. Et sur le principe, ça se défend. Sauf que dans la vraie vie, si vous avez oublié de sauvegarder vos fichiers et que vous cliquez sur ce lien, vous l'avez dans l'os (et pas dans le "MacOS"... roh roh roh).

Donc non, il n'y a rien à installer pour empêcher ça et rien à attendre de Cupertino pour le moment. Voilà, sachez juste que n'importe quel couillon qui aura lu cet article pourra vous envoyer un petit lien par mail, façon rickroll des enfers, ce qui aura pour effet de freezer et faire redémarrer votre Mac.

Désolé !! 🤷‍♂️

Source : le billet d'Auberon López .

  •  

ReProgman - L'interface de Windows 3.1 sur PC et Mac

Le développeur Mayuki Sawatari vient de publier ReProgman , un clone du Program Manager de Windows 3.1.

Ça ne vous dit rien ? C'est parce que vous êtes des bébés !

En fait, progman.exe, c'est ce truc qui servait d'interface principale à Windows avant que le menu Démarrer ne débarque avec Windows 95. Et aujourd'hui, grâce au taf de Sawatari, ça tourne aussi bien sur Windows 11 que sur macOS.

Pour ceux qui ont commencé l'informatique après 1995, faut savoir qu'avant ça, on n'avait pas de bureau, pas de barre des tâches, mais juste une grande fenêtre grise remplie de sous-fenêtres, et dans chaque sous-fenêtre y'avait des icônes de programmes alignées sur une grille. Vous double-cliquiez sur l'une d'elles, le programme se lançait, et voilà, vous aviez fait le tour de Windows !

Le groupe Main ouvert sur Windows 11, et la rangée de groupes réduits en bas de la fenêtre

Regardez bien les icônes sur cette capture : Docker, Edge et Claude rangés dans une ambiance de 1992...

Car ReProgman ne se contente pas de reproduire la déco. Au premier lancement, il scanne votre menu Démarrer (ou vos dossiers Applications si vous êtes sur Mac), transforme chaque dossier en groupe et range le tout dans son propre fichier Groups.ini. Après ça, il n'y retourne plus tout seul, et ce que vous déplacez, renommez ou supprimez dedans ne redescend jamais vers vos vrais raccourcis. Un menu permet quand même de relancer l'import à la main, et il n'ajoute alors que ce qui manque.

Du coup, vous récupérez les gestes de l'époque pour de vrai. Vous attrapez une icône, vous la lâchez dans une autre fenêtre et elle déménage, avec Ctrl enfoncé elle se copie, le menu Window vous range tout ça en cascade ou en mosaïque, et les fenêtres réduites redeviennent des icônes alignées en bas de la fenêtre principale. Même la boîte de dialogue de sortie a été refaite, à ceci près qu'elle annonce la fin de votre session ReProgman et non celle de Windows.

Maintenant, d'où ça sort comme délire ?

Hé bien, l'auteur raconte, dans un message relayé par Tom's Hardware, qu'il a simplement demandé à Claude de lui fabriquer ce clone, et que la première version obtenue en une heure était déjà plutôt correcte, même s'il a ensuite fallu rattraper les imperfections.

Ce qui est intéressant, c'est que dans son dépôt git, on trouve un document de spécification de plusieurs centaines de lignes qui décrit l'interface au pixel près, relevée sur des captures 640x480 du Windows original. Le cadre d'une fenêtre y fait 1 pixel noir, 2 pixels gris et encore 1 pixel noir, et la petite barre du menu système mesure 13 pixels sur la fenêtre principale contre 7 sur une fenêtre enfant. C'est d'ailleurs comme ça qu'on les distinguait à l'époque.... Fallait avoir l'oeil !

Si vous voulez l'essayer, ça se présente sous la forme d'un binaire autonome. Par contre sur Mac, la version distribuée n'est pas notarisée, il faudra donc lui passer un xattr -cr ReProgman.app ou utiliser Sentinel avant qu'elle accepte de démarrer. Ah et le code est sous licence MIT.

Le périmètre annoncé par le projet est d'ailleurs plus étroit qu'il en a l'air, puisque c'est Windows 11 en x64 et en Arm, et macOS uniquement sur Apple Silicon. Donc si vous êtes resté sur Windows 10 parce que vous aimez le risque ou sur un Mac Intel parce que vous aimez prendre votre temps, il n'y a rien pour vous amuser... Il faudra alors retourner du côté de ce musée de vieux systèmes d'exploitation que je vous avais montré, qui lui passe par l'émulation.

Après, je pense pas que vous y ferez votre vie mais ça vous donnera environ 30 secondes de nostalgie avant de refermer la fenêtre. C'est déjà ça de pris...

Source : Tom's Hardware

  •  
❌