La Deathray: cómo un simple link congela un Mac completo y Apple lo ignora

La Deathray: cómo un simple link congela un Mac completo y Apple lo ignora

La Deathray: cómo un simple link congela un Mac completo y Apple lo ignora

Un link y tu Mac queda congelada: el bug de WebGPU que Apple no quiere arreglar

Esta semana me topé con una investigación que me dejó pensando: un investigador descubrió que una página web cualquiera puede congelar por completo un Mac con chip M, y todo lo que necesita es que hagas un clic en un link. Sin exploit, sin descarga, sin permisos raros. Un shader de WebGPU malicioso y listo: la interfaz gráfica entera queda pegada hasta que el sistema se reinicia solo.

¿Cómo funciona la wea?

La técnica, bautizada Deathray, es casi embarzosamente simple. WebGPU es la API moderna que reemplazó a WebGL y permite que un sitio web envíe shaders para correr directo en tu GPU. El investigador escribió un compute shader con un bucle infinito que copia el mismo vector una y otra vez en un buffer. Después agrega un vertex shader que necesita leer de ese mismo buffer. Resultado: el compute shader nunca termina, el vertex shader nunca avanza, y la GPU se llena de trabajo basura.

El problema es que esa congestión se contagia. El WindowServer, el proceso que dibuja todo lo que ves en macOS, necesita la GPU para funcionar. Cuando queda sin respuesta, un watchdog del kernel detecta el silencio y lanza un kernel panic: el equipo se reinicia solo. Curiosamente, mientras tanto puedes entrar por SSH sin problema — la máquina está viva, pero la pantalla es un beachball eterno. A veces aparecen incluso basura magenta en partes del monitor.

Lo replicó en Chrome, Firefox y Safari, todos en macOS con chips M. En Windows y Linux el mismo código solo congela la pestaña; cierras el tab y quedas como nuevo. El tema es exclusivamente de Apple.

Apple ya había visto esto en 2023

Acá viene lo que a mí me parece lo más molesto de la historia. En 2023 un investigador de Imperva hizo exactamente lo mismo con WebGL (el famoso ShadyShader) y Apple lo trató como lo que es: publicó el CVE-2023-40441 con un CVSS de 6.5 y agregó validación para detectar bucles desbocados. Esa validación, al parecer, quedó más débil en WebGPU — el bucle infinito del Deathray es trivial de identificar.

El investigador reportó el bug a Apple el 27 de julio de 2026. Al principio Apple lo reprodujo y dijo que lo iba a arreglar. Pero el 26 de agosto cambió el discurso: aseguraron que no ven implicancias de seguridad porque el resultado es «un crash, un cuelgue o pérdida de datos recuperable». Traducción: quedó en la cola de prioridad más baja, si es que alguna vez se arregla.

Mi opinión: es un problema de definición, no de técnica

Técnicamente, Apple no está loca. Los investigadores de seguridad con los que conversó el autor coinciden: un hang no es un RCE ni una fuga de datos. Pero yo llevo años administrando servidores y equipos de escritorio, y te digo algo: para el usuario común, que una página web aleatoria pueda tumbar su computador con un clic es un problema de seguridad de facto. Perdiste lo que no alcanzaste a guardar. Si estabas en una videollamada o una demo, quedaste pegado. La gente confía ciegamente en que el navegador es una sandbox inofensiva, y esto rompe esa confianza.

Hay un detalle técnico interesante detrás: en los chips M-series el kernel no puede hacer preempt de la GPU directamente. Esa lógica vive en el firmware de un coprocesador (el ASC). Ojo que los otros sistemas operativos lo resuelven bien — pre-emption de shaders es un problema resuelto, no magia. Sospecho que la arquitectura de Apple complica las cosas, pero «complica» no es «imposible».

Además, el autor tiene razón en lo profundo: querer detectar bucles infinitos es pelear contra el halting problem, algo matemáticamente perdido. La solución correcta nunca fue analizar el shader; es pre-emptar el shader travieso como hace cualquier otro OS. Apple debería retomar el reporte y dejar la discusión semántica de lado.

Por ahora, si usas un Mac, el consejo práctico es el de siempre: no hagas clic en links que prometen «probar» cosas raras, y ten el autoguardado activo. Y si te llega a pasar, mantén presionado el botón de poder — solo reza para que el navegador no reabra la misma pestaña al arrancar.

Fuente de inspiración: An untrusted site can freeze a Mac using WebGPU

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *