Voltar para todas as publicações
Publicado em · por Renaud Deraison

macOS 26.5 corrige dez falhas no WebKit — o que cada uma teria feito a um utilizador do Bromure

A 11 de maio de 2026, a Apple lançou o macOS Tahoe 26.5, com cerca de setenta correções de segurança, das quais dez no WebKit. Percorremos a lista do WebKit, uma classe de CVE de cada vez, e fazemos a única pergunta que interessa em 2026 — até onde chega de facto esta falha, numa máquina com o Bromure?

Uma nota de atualização não é um modelo de ameaça. «Processing maliciously crafted web content may lead to an unexpected Safari crash» é a forma educada que o fornecedor usa para dizer que, para alguns utilizadores, esta falha foi a última coisa que o navegador fez antes de outra coisa ter passado a correr. A pergunta útil é saber o que essa outra coisa consegue tocar.

A 11 de maio de 2026, a Apple publicou About the security content of macOS Tahoe 26.5. A versão fecha cerca de setenta CVE em todo o sistema operativo, das quais dez ficam no WebKit — o motor de renderização do Safari, e também o motor por trás de todas as outras «vistas web» no macOS, desde o renderizador HTML do Mail até ao navegador embutido na App Store. Nenhuma das dez é assinalada pela Apple como explorada em ataques reais. Isso não é o mesmo que dizer que não foram exploradas, apenas que a Apple não tem hoje provas que apontem nessa direção. O resto deste artigo aceita o aviso pelo seu valor facial e faz uma pergunta mais estreita e mais útil: para cada uma destas falhas, o que teria ela feito a um utilizador do Bromure?

A resposta curta está no título. A resposta longa é o que torna a arquitetura digna de ser escrita.

O aviso, por palavras simples

Ler uma nota de segurança da Apple é, em parte, um exercício de vocabulário. A formulação canónica — «processing maliciously crafted web content may lead to» — cobre um espetro que vai desde «um separador vai fechar-se» até «a máquina foi-se». O que os separa é a classe da falha, e o aviso também diz essa parte, só que em voz baixa.

macOS Tahoe 26.5 — CVE do WebKit por classesource: support.apple.com/en-us/127115, 2026-05-11USE-AFTER-FREE5 CVECVE-2026-28883CVE-2026-28942CVE-2026-28946CVE-2026-28947CVE-2026-28953*Impacto declarado pela Applefalha inesperada no Safariou falha de processoTeto realistaexecução arbitrária de códigodentro do renderer,com uma primitiva funcionalOUTRAS DE MEMÓRIA3 CVE (cluster UAF + 2)CVE-2026-28901CVE-2026-28902CVE-2026-28903CVE-2026-28904CVE-2026-28905CVE-2026-28913CVE-2026-28955CVE-2026-43658CVE-2026-28917Impacto declarado pela Applefalha de processo porcorrupção de memóriaou entrada inválidaLÓGICA / POLÍTICA5 CVECVE-2026-43660 — bypass de CSPCVE-2026-28907 — bypass de CSPCVE-2026-28962 — fuga de informaçãoCVE-2026-28958 — dados sensíveisCVE-2026-28971 — UI de transferência em iframeImpacto declarado pela Applepolítica não aplicada,dados sensíveis expostos,confusão entre origensPorque é que importamsão os degraus por ondeuma falha de memória sobe*CVE-2026-28953 faz parte de um cluster UAF que a Apple agrupa; o subtipo exato não é enumerado em separado.
Os dez CVE do WebKit no macOS Tahoe 26.5, agrupados por classe de falha. Cada classe tem um teto diferente para o que uma cadeia de exploração construída sobre ela consegue alcançar. As duas classes de baixo — corrupção de memória com potencial de execução arbitrária de código e use-after-free — são as que, no registo histórico, mais vezes foram encadeadas em compromissos do renderer e a partir daí no anfitrião.

A Apple não publica, por política, análises de explorabilidade. A formulação é deliberada: uma «falha de processo» pode significar que o renderer atinge uma asserção e morre inofensivamente, ou pode significar que o renderer entra num estado em que, com algumas semanas de trabalho e um heap groom, um atacante transforma a falha numa primitiva de escrita e depois em execução de código. Investigadores da área demonstraram repetidamente que o segundo resultado é alcançável para uma grande parte dos use-after-free do WebKit divulgados exatamente com este fraseado — CVE-2025-43529, corrigido em dezembro passado no macOS 26.2, foi descrito em linguagem idêntica e estava a ser explorado em ataques direcionados à data da divulgação. Portanto, a forma correta de ler este aviso é como uma lista de candidatos à próxima ronda de exploração real, e não como uma lista de falhas que sabemos serem inofensivas.

Classe um — os cinco use-after-free

Um use-after-free, numa frase, é uma falha em que o navegador liberta um bloco de memória que continha um objeto — um nó DOM, um event listener, um wrapper de JavaScript — e depois continua a usar a referência antiga como se o objeto ainda estivesse vivo. Quando a referência antiga é finalmente desreferenciada, o espaço já foi reocupado por outra coisa: outro objeto que a página acabou de criar, ou um buffer que a página acabou de preencher com bytes que se parecem com um ponteiro de função. A página passa a controlar um ponteiro que o navegador trata como fidedigno.

CVE-2026-28883, CVE-2026-28942, CVE-2026-28946, CVE-2026-28947 e o subconjunto UAF do cluster CVE-2026-28901 — CVE-2026-28913 são os cinco use-after-free do WebKit nesta versão. A Apple atribui-os a uma mistura de investigadores independentes e, num caso (CVE-2026-28942), a Milad Nasr e Nicholas Carlini em colaboração com o Claude — a mesma categoria mais ampla de investigação de vulnerabilidades assistida por IA que a Mozilla descreveu em abril quando creditou uma execução inicial do Mythos com 271 correções numa única versão do Firefox.

Num Mac com macOS 26.5 sem alterações, antes de aplicar esta atualização, a versão pior-caso de uma destas falhas tem o seguinte aspeto:

  1. Visita-se uma página. A página executa JavaScript que exercita alguma operação DOM de uma forma que desencadeia o use-after-free.
  2. A memória do renderer é manipulada para que o espaço libertado seja reocupado por algo que o atacante controla.
  3. A execução de código aterra dentro do processo de conteúdo do Safari — o mesmo espaço de endereçamento que a sessão de navegação, os cookies e os separadores onde se está autenticado.
  4. Um exploit de segunda fase, encadeado ao primeiro, escapa da sandbox de conteúdo para o processo Safari mais amplo. A sandbox do WebKit é sólida, mas não é inquebrável; os últimos anos incluem várias evasões documentadas.
  5. Já fora da sandbox, o atacante passa a correr com a conta de utilizador, na máquina. Tem acesso de leitura a ~/Documents, ~/Library/Keychains, ~/.ssh, aos cookies no perfil guardado do Safari, ao conteúdo da iCloud Drive transferido para uso offline e a tudo o mais que viva debaixo da pasta pessoal.

É a cadeia tradicional completa de um navegador. Nenhum dos passos é hipotético; todos foram observados numa cadeia real do WebKit explorada no terreno nos últimos três anos.

Mesma falha no Safari padrãoO SEU MAC · A SUA CONTA DE UTILIZADORProcesso de conteúdo do Safariuse-after-free disparaExecução de código no renderercookies, perfil e separadores acessíveisEscape da sandbox (segunda fase)a correr com a sua conta de utilizadorFicheiros~/DocumentsKeychain~/LibraryChaves SSH~/.sshiCloud Driveficheiros em cacheA persistência instala-se em LaunchAgents.O Mac está comprometido.Mesma falha no BromureO SEU MAC · A SUA CONTA DE UTILIZADORVM DESCARTÁVEL POR SEPARADORProcesso de conteúdo do Chromium(mas isto é uma falha do WebKit — ver abaixo)Execução de código no rendererapenas dentro do convidado efémeroCONTIDO — SEPARADOR FECHA, VM MORREFicheirosintactosKeychainintactoChaves SSHintactasiCloud DriveintactoA persistência não tem onde pousar.O Mac anfitrião fica inalterado.
Um use-after-free do WebKit num Safari padrão versus a mesma falha a detonar dentro de um separador do Bromure. A falha dispara em qualquer dos casos. A diferença é o que está do outro lado do renderer quando ela dispara.

Há um detalhe no diagrama da direita que vale a pena dizer com clareza: o Bromure não usa o WebKit. Cada separador corre Chromium dentro do seu convidado Linux descartável. Por isso, o texto literal destes CVE — cinco use-after-free do WebKit — não se aplica ao motor de renderização que o Bromure traz. Um utilizador do Bromure que nunca tenha aplicado o macOS 26.5 não está exposto a estas falhas específicas do WebKit através do separador que tem aberto no Bromure.

Isto, por si só, não é uma afirmação interessante. O Chrome tem o seu próprio catálogo de falhas de memória. O Firefox tem o seu. O ponto é o de segunda ordem: mesmo que se substituam mentalmente estes CVE pela classe equivalente de use-after-free do V8 ou do Blink no Chromium — CVE-2024-7971, a confusão de tipos do V8 que atores alinhados com a Coreia do Norte usaram em 2024, é o paralelo óbvio —, o cenário da direita não muda. A exploração dispara dentro do renderer. O renderer está dentro da VM convidada. A execução de código aterra numa máquina Linux que não contém a sua keychain, a sua pasta Documents nem as suas chaves SSH. Quando o separador se fecha, a VM é destruída.

Classe dois — mais três falhas de memória e uma de validação de entrada

A CVE-2026-43658 é a única falha do WebKit neste aviso que a Apple classifica explicitamente como «memory handling» e não como use-after-free; o impacto declarado é uma falha inesperada do Safari. A CVE-2026-28917 é classificada como validação de entrada, produzindo igualmente uma falha de processo. Ambas se encaixam no mesmo balde geral dos use-after-free — são falhas no espaço de endereçamento do WebKit causadas por uma página hostil — e têm o mesmo teto realista: com trabalho suficiente, uma «falha» pode, em alguns casos, ser promovida a uma primitiva de execução de código, enquanto noutros continua a ser genuinamente apenas uma falha. A Apple não nos diz qual é qual, e uma leitura rápida das correções também não resolve a questão.

O ponto digno de ênfase é que, para o utilizador, a distinção não muda a resposta arquitetural. No Safari padrão, mesmo uma falha de WebKit de aparência benigna é, no pior dos casos, uma cabeça de ponte. No Bromure, mesmo a versão de pior caso de uma destas falhas — execução total de código dentro do renderer — é um evento de execução de código dentro de um convidado que vai ser deitado fora.

Classe três — as cinco falhas de lógica e política

Cinco das dez falhas do WebKit neste aviso não são, de todo, falhas de memória. São falhas de lógica — pequenas inconsistências entre o que a política de segurança do Safari diz ser permitido e o que o seu código de facto aplica.

CVE-2026-43660 e CVE-2026-28907 — bypass de CSP

A Content Security Policy é o mecanismo que um site usa para dizer ao navegador «só corre JavaScript destas origens, só carrega imagens daquelas». Ambas estas falhas permitem que uma página maliciosamente preparada faça o Safari saltar a aplicação dessa política em algum caminho dentro do parser. Consequência real: um XSS armazenado num site que pensava estar protegido pela CSP passa a executar.

CVE-2026-28962 e CVE-2026-28958 — fuga de informação

Ambas permitem que uma página hostil leia dados a que não deveria ter acesso. A primeira está na lógica de controlo de acesso do WebKit; a segunda nos seus caminhos de proteção de dados. Usadas em cadeia, são as falhas que transformam «tenho execução de código no seu renderer» em «tenho o cookie de sessão de outro site onde estava autenticado».

CVE-2026-28971 — falsificação de transferência em iframe

Um iframe malicioso consegue usar as configurações de transferência da página pai. À primeira vista é uma falha de UI; na prática é a forma como uma transferência «drive-by» apanha boleia em cima de um site em que o utilizador confiou explicitamente para guardar ficheiros. Uma primitiva de acesso inicial de manual para malware.

Para que servem as falhas de lógica

Sozinhas, nenhuma destas concede execução de código. O seu valor é estrutural: cada uma é um degrau que as falhas de memória acima usam para subir. Um use-after-free isolado é difícil de armar sem uma forma de fugir um ponteiro, uma forma de contornar a CSP, uma forma de ler estado entre origens. As falhas de lógica na mesma versão são a metade silenciosa de todas as cadeias de exploração públicas.

O mesmo argumento aplica-se do lado do Bromure, com um esclarecimento que vale a pena fazer. A falha de falsificação de transferência (CVE-2026-28971) é interessante porque é a única falha desta lista que, no Safari padrão, consegue produzir um ficheiro em disco que o utilizador talvez venha a abrir mais tarde. As transferências do Bromure feitas a partir de um separador aterram, por defeito, dentro da VM convidada desse separador; promovê-las para fora do convidado é uma ação explícita do utilizador. Um ficheiro «drive-by» que a página consiga «descarregar» é, no Bromure, um ficheiro num convidado Linux que está prestes a deixar de existir. As fugas de informação entre origens (CVE-2026-28962, CVE-2026-28958) leem dados que o renderer consegue ver, que no Bromure são os dados que vivem dentro da VM desse separador.

O que continua na sala: o que a VM isola e o que não isola

Seria fácil sair do que ficou acima com a leitura errada. A arquitetura do Bromure é boa a estreitar o raio de impacto de um comprometimento do renderer. Não é magia. Há várias coisas que continuam dentro da sala e que vale a pena dizer abertamente.

A sessão em si está comprometida

Uma exploração funcional de uma destas falhas continua a ser dona do separador em que dispara. As palavras-passe escritas nesse separador durante a janela do ataque estão no perímetro. Os cookies guardados no perfil que esse separador está a usar estão no perímetro. Os dados de formulário estão no perímetro. A separação por perfil no Bromure garante que o estrago fica limitado a esse perfil, e não a toda a vida digital do utilizador, mas não é zero.

A área de transferência é a ponte óbvia

A postura por defeito do Bromure deixa a área de transferência disponível ao convidado, porque para a maioria dos utilizadores o custo de partir o copiar e colar todos os dias supera o cenário raro de exploração. Essa postura é uma escolha deliberada e que podemos cortar a pedido para sessões que se queiram herméticas. Vale a pena saber que a ponte existe.

Um escape do hipervisor continua em jogo

Uma cadeia suficientemente determinada podia, em princípio, escapar do próprio hipervisor do Apple Silicon. A superfície de ataque aí é várias ordens de grandeza mais pequena do que a de um navegador, e o registo público dessas falhas é curto, mas não é zero. Não reclamamos imunidade; reclamamos ter mudado a classe de falha de que a sua segurança depende.

Sem extensões, sem camada de assistentes do navegador

O Bromure não permite, de todo, instalar extensões do Chrome. Isto é uma postura, não uma definição. Remove uma segunda superfície de ataque inteira — cada extensão é o seu próprio caminho de código quase fidedigno, com permissões que andam lado a lado com o renderer — que tem sido, historicamente, a forma como muitos compromissos reais de navegador conseguem de facto persistência.

Porque é que o Mac e o navegador querem ser máquinas separadas

Há uma forma mais geral de dizer tudo o que está acima. Um Mac moderno contém, lado a lado, no mesmo domínio de confiança:

  • O sistema operativo, com os seus ficheiros e a sua keychain.
  • Aplicações nativas instaladas, com os direitos que tenham pedido.
  • O navegador, que é, de longe, a maior peça de maquinaria de parsing controlável pelo atacante em todo o sistema.

Quando uma falha do WebKit dispara num macOS padrão, a parte do sistema que acabou de ser comprometida é a parte do sistema que tem acesso de leitura às outras duas. Isto não é um erro do Safari; é a consequência direta de correr um navegador como uma aplicação em espaço de utilizador a par de tudo o resto que o utilizador faz.

O desenho do Bromure trata o navegador e o resto do Mac como máquinas diferentes. O navegador corre de facto numa máquina diferente — um convidado Linux, num CPU virtual, com disco virtual que é reposto a cada sessão. O Mac anfitrião vê o convidado apenas através de um conjunto estreito de chamadas ao hipervisor: framebuffer, entrada, rede, área de transferência quando autorizada. Uma falha de classe WebKit — ou o seu equivalente em Chromium — que aterre dentro do convidado é, do ponto de vista do anfitrião, código a correr num computador diferente, num sistema operativo diferente, sem caminho para os ficheiros do utilizador. O facto de os dois «computadores» partilharem o mesmo chassis é um detalhe de implementação.

O que fazer hoje

Se está a ler isto no Mac que usa para tudo o resto, a coisa mais importante é a coisa aborrecida: aplique a atualização para o macOS 26.5. A janela entre a Apple lançar uma correção e alguém transformar essa correção numa exploração funcional é hoje, pelas medições da própria indústria, medida em horas, e não em semanas. Os utilizadores de Safari padrão com esta atualização aplicada estão protegidos contra as dez falhas do WebKit acima. Os utilizadores de Safari padrão sem ela, não estão.

Se está a ler isto no Bromure, está protegido contra falhas do renderer da classe WebKit por arquitetura e não por adoção de correções, porque o renderer não é o WebKit, não corre no anfitrião, e está num convidado que é destruído ao fechar o separador. Ainda assim, deve aplicar a atualização para o macOS 26.5, porque as outras sessenta e tal CVE dessa versão corrigem partes do macOS que o Bromure não isola — componentes do kernel, serviços do sistema, frameworks nativas — e essas continuam a importar.

O enquadramento que gostaríamos que mais gente usasse é este. Os zero days do WebKit não vão parar. Os zero days do Chromium não vão parar. O que pode parar, para um dado utilizador, é a ligação entre «uma página estava errada» e «o seu computador estava errado». Essa ligação é a que o Bromure foi construído para cortar, um aviso de dez CVE de cada vez.

Instale o Bromure. Continue a aplicar as atualizações do macOS. E, da próxima vez que a Apple lançar uma atualização do Safari que diga «processing maliciously crafted web content may lead to» — e isso vai ser em breve, porque a cadência é agora mensal —, leia a frase, arquive-a, e repare que, para a parte do dia que passa dentro do Bromure, a frase não termina.