The Deathray: Uma maneira simples para um site não confiável congelar um Mac
Um exploit de WebGPU recentemente destacado pode congelar de forma confiável máquinas macOS — e alguns dispositivos Android — simplesmente ao visitar uma página especialmente criada, em alguns casos forçando reinicializações bruscas e travamentos repetidos quando os navegadores restauram abas automaticamente. Comentadores debatem se esse tipo de negação de serviço deve ser tratado como uma vulnerabilidade de segurança séria, apontando o potencial para golpes no estilo ransomware, perda de dados e danos a usuários não técnicos que não conseguem identificar facilmente a causa. O incidente também alimenta críticas mais amplas à exposição de cada vez mais recursos de GPU e hardware à web, contrapondo desempenho e apps web ricos a uma superfície de ataque maior e à instabilidade do sistema.
Comportamento observado e gravidade
- Muitos usuários do macOS relatam travamentos completos do sistema: o cursor pode se mover, mas a interface, o Force Quit e a entrada de dados ficam sem პასუხa; muitas vezes é necessário desligar forçadamente.
- Em alguns Macs, isso só derruba o Safari ou a aba; fechar o navegador imediatamente restaura a operação normal.
- Alguns relatos extremos: falhas repetidas no login devido a abas restauradas automaticamente; um usuário inicialmente não conseguiu nem inicializar em modo de segurança e precisou de uma atualização/reinstalação antes da recuperação.
- O comportamento fora do macOS é misto:
- Alguns navegadores no Windows apenas congelam a aba ou todas as abas por um instante e então encerram a página ofensiva.
- Alguns dispositivos Android (por exemplo, Pixel, Samsung) supostamente congelam totalmente; outros, com navegadores diferentes ou versões endurecidas do sistema, veem apenas pequenas travadas ou nada.
- Casos no Linux/Firefox variam de um navegador que caiu a nenhum impacto visível.
- Relata-se que o iOS não é afetado; o macOS 27 RC ainda está impactado.
Debate sobre segurança e modelo de ameaça (DoS)
- Há forte preocupação de que um congelamento confiável disparado pelo navegador seja uma negação de serviço significativa e, portanto, um problema de segurança.
- Casos de abuso sugeridos: scareware (“seu computador travou por causa de um vírus”), extorsão no estilo “vamos continuar travando você, a menos que…”, coerção por ad-tech (“desative o adblock ou vamos derrubar sua máquina”), golpes de falso antivírus mais convincentes porque a máquina realmente travou.
- Outros argumentam que isso é “só disponibilidade”, sem roubo de dados nem escalonamento de privilégios, então teria prioridade menor.
- Há discordância sobre o comportamento do usuário:
- Um lado afirma que isso é “autocorrigível” porque os usuários evitariam sites que travam seus computadores.
- Outros contra-argumentam que usuários comuns não ligarão travamento ↔ site, ficarão presos em loops de restauração automática ou acabarão ligando para golpistas de “suporte técnico”.
Responsabilidade: sistema operacional vs navegador vs WebGPU
- Alguns enquadram isso principalmente como um bug do macOS: outros sistemas operacionais têm watchdogs de GPU que reiniciam cargas de trabalho problemáticas; o macOS ainda permite que travamentos da GPU derrubem todo o sistema/WindowServer.
- Outros veem isso como algo inerente ao WebGPU/WebGL: a web nunca deveria poder travar uma máquina, independentemente do comportamento do sistema operacional.
- O fio observa que a Apple encerrou problemas semelhantes de WebGPU como “não relevantes para segurança”.
Visões mais amplas sobre WebGPU e a web como plataforma de aplicativos
- Corrente cética:
- Preocupação com uma superfície de ataque de hardware em constante expansão nos navegadores (WebGPU, WebUSB, etc.).
- Argumento de que navegadores foram feitos para documentos, não como uma camada completa de aplicativo/runtime, e que estamos repetindo os erros dos applets Java / Flash / ActiveX.
- Alguns usuários desativam completamente WebGPU/WebGL por segurança/privacidade, aceitando a perda de apps ricos.
- Corrente favorável/aceitante:
- Observa que a distribuição de apps nativos em desktops é insegura e fragmentada; navegadores fornecem um sandbox multiplataforma de fato com um modelo de permissões.
- Aponta que muitos apps modernos (Figma, Canva, ferramentas tipo Maps) dependem de WebGL/WebGPU; desligá-los é uma regressão importante.
- Alguns argumentam que o WebGPU não expõe uma superfície de fingerprinting significativamente maior do que o WebGL já expunha.
Arquitetura de GPU e notas técnicas
- Explicação de que GPUs frequentemente não têm preempção fina, no nível do sistema operacional:
- Estado grande e caro; registradores e memória compartilhados tornam difícil interromper shaders de longa execução.
- Muitos projetos dependem de yielding cooperativo ou fronteiras de granulação grossa, então um loop apertado pode monopolizar o dispositivo.
- Discussão sobre limites de loop em shaders: historicamente, loops finitos eram impostos/desenrolados; com fluxo de controle geral, usa-se proteção baseada em timeout.
- Implementações do WebGPU às vezes injetam grandes contadores regressivos para “garantir” a terminação do loop, mas o contador é tão grande que o sistema ainda pode travar muito antes de o loop terminar.
- Observações de que um simples loop de compute shader pode derrubar apenas a aba, enquanto combiná-lo com passes de renderização em espera é o que empurra o WindowServer para além do limite; mover o canvas para fora da tela muda o comportamento, sugerindo interações complexas no caminho de composição.
Mitigações e contornos discutidos
- Desativar WebGPU (e opcionalmente WebGL) globalmente ou por navegador; vários usuários do Firefox mencionam já fazer isso.
- Usar navegadores que:
- Perguntem antes de restaurar sessões que travaram, ou
- Permitam iniciar sem carregar automaticamente todas as abas restauradas.
- Se preso em um loop de restauração automática: fechar o navegador rapidamente assim que o ícone aparecer, ou desconectar temporariamente da rede; a eficácia da desconexão de rede é debatida, especialmente com service workers.
- Sugestão de que extensões poderiam substituir as APIs do WebGPU por no-ops em sites não confiáveis.
- Alguns contam com navegadores/sistemas endurecidos (por exemplo, GrapheneOS Vanadium), que parecem se recuperar de forma mais graciosa.
Paralelos históricos e relatos
- Numerosas referências a truques web antigos “divertidos” ou maliciosos:
- Loops infinitos de
alert(), tempestades de pop-ups e sites de choque que tocavam áudio em alto volume e spamavam janelas. - Bugs antigos de Unicode ou SSID de Wi‑Fi que podiam derrubar dispositivos iOS.
- Páginas de navegador que forçavam memória/DevTools via logging infinito ou cenas 3D pesadas.
- Loops infinitos de
- Alguns veem o bug atual como parte dessa longa classe de negação de serviço acionada pelo navegador, observando que travamentos de GPU semelhantes já existiam com WebGL e OpenCL anos atrás.