Volver a todas las publicaciones
Publicado el · por Renaud Deraison

macOS 26.5 parchea diez fallos de WebKit — esto es lo que cada uno le habría hecho a un usuario de Bromure

Apple lanzó macOS Tahoe 26.5 el 11 de mayo de 2026, con unos setenta parches de seguridad, entre ellos diez vulnerabilidades de WebKit. Repasamos la lista de WebKit una clase de CVE a la vez y nos hacemos la única pregunta que importa en 2026 — ¿qué alcanza realmente este fallo, en una máquina que ejecuta Bromure?

Una nota de parche no es un modelo de amenazas. «Processing maliciously crafted web content may lead to an unexpected Safari crash» es la forma educada en la que el fabricante dice que, para algunos usuarios, este fallo fue lo último que hizo el navegador antes de que algo más se ejecutara. La pregunta útil es qué puede tocar ese «algo más».

El 11 de mayo de 2026, Apple publicó About the security content of macOS Tahoe 26.5. La actualización cierra unos setenta CVE en todo el sistema operativo, de los cuales diez residen dentro de WebKit —el motor de renderizado de Safari, también el motor que hay detrás de cualquier otra «vista web» en macOS, desde el renderizador HTML de Mail hasta el navegador embebido dentro del App Store—. Apple no marca ninguno de los diez como explotado en activo. Eso no es lo mismo que decir que no se hayan explotado, sólo que hoy Apple no tiene indicios que apunten en esa dirección. El resto de este artículo toma el aviso al pie de la letra y se hace una pregunta más estrecha y más útil: para cada uno de estos fallos, ¿qué le habría hecho a un usuario de Bromure?

La respuesta corta está en el título. La respuesta larga es lo que hace que la arquitectura merezca un artículo.

El aviso, en palabras llanas

Leer una nota de seguridad de Apple es, en parte, un ejercicio de vocabulario. La fórmula canónica —«processing maliciously crafted web content may lead to»— cubre un espectro que va desde «se cerrará una pestaña» hasta «la máquina ya no es tuya». Lo que las separa es la clase de fallo, y el aviso también lo dice, sólo que en voz baja.

macOS Tahoe 26.5 — CVE de WebKit por clasesource: support.apple.com/en-us/127115, 2026-05-11USE-AFTER-FREE5 CVECVE-2026-28883CVE-2026-28942CVE-2026-28946CVE-2026-28947CVE-2026-28953*Impacto declarado por Applecaída inesperada de Safario caída de procesoTecho realistaejecución arbitraria de códigodentro del renderizador,con una primitiva funcionalOTROS DE MEMORIA3 CVE (grupo UAF + 2)CVE-2026-28901CVE-2026-28902CVE-2026-28903CVE-2026-28904CVE-2026-28905CVE-2026-28913CVE-2026-28955CVE-2026-43658CVE-2026-28917Impacto declarado por Applecaída de proceso porcorrupción de memoriao entrada inválidaLOGICA / POLITICA5 CVECVE-2026-43660 — bypass de CSPCVE-2026-28907 — bypass de CSPCVE-2026-28962 — fuga de infoCVE-2026-28958 — datos sensiblesCVE-2026-28971 — UI de descarga en iframeImpacto declarado por Applepolítica no aplicada,datos sensibles expuestos,confusión entre orígenesPor qué importanson los peldañospor los que sube un fallo de memoria*CVE-2026-28953 pertenece a un grupo de UAF que Apple agrupa; el subtipo exacto no se enumera por separado.
Los diez CVE de WebKit en macOS Tahoe 26.5, agrupados por clase de fallo. Cada clase tiene un techo distinto sobre lo que puede alcanzar una cadena de exploit construida encima. Las dos clases inferiores —corrupción de memoria con potencial ejecución arbitraria de código y use-after-free— son las que, en el historial documentado, se han encadenado con más frecuencia en compromisos del renderizador y, desde ahí, del anfitrión.

Apple no publica, por política, análisis de explotabilidad. La redacción es deliberada: una «caída de proceso» puede significar que el renderizador golpea una aserción y muere sin más, o puede significar que el renderizador entra en un estado en el que, con unas semanas de trabajo y un heap groom, un atacante convierte la caída en una primitiva de escritura y, desde ahí, en ejecución de código. Los investigadores del sector han demostrado repetidamente que el segundo desenlace es alcanzable en una parte sustancial de los use-after-free de WebKit divulgados con esa misma fórmula —CVE-2025-43529, parcheado en macOS 26.2 el pasado diciembre, se describió con el mismo lenguaje y estaba siendo explotado en ataques dirigidos en el momento de su divulgación—. Así que la manera correcta de leer este aviso es como una lista de candidatos para la siguiente ronda de explotación en activo, no como una lista de fallos que sabemos inofensivos.

Clase uno — los cinco use-after-free

Un use-after-free, en una frase, es un fallo en el que el navegador libera un trozo de memoria que contenía algún objeto —un nodo del DOM, un event listener, un wrapper de JavaScript— y después sigue usando la referencia antigua como si el objeto siguiera vivo. Cuando la referencia antigua se desreferencia, la ranura ya ha sido rellenada con otra cosa: otro objeto que la página acaba de crear, o un búfer que la página acaba de llenar con bytes que parecen un puntero a función. La página controla ahora un puntero que el navegador trata como de confianza.

CVE-2026-28883, CVE-2026-28942, CVE-2026-28946, CVE-2026-28947 y el subconjunto UAF del grupo CVE-2026-28901 — CVE-2026-28913 son los cinco use-after-free de WebKit en esta actualización. Apple los acredita a una mezcla de investigadores independientes y, en un caso (CVE-2026-28942), a Milad Nasr y Nicholas Carlini trabajando con Claude —la misma categoría general de investigación de vulnerabilidades asistida por IA que Mozilla describió en abril cuando atribuyó a una ejecución temprana de Mythos 271 correcciones en una sola versión de Firefox.

En un Mac con macOS 26.5 de serie antes de aplicar esta actualización, la versión peor de uno de estos fallos se parece a esto:

  1. Visitas una página. La página ejecuta JavaScript que estresa alguna operación del DOM de forma que dispara el use-after-free.
  2. La memoria del renderizador se prepara para que la ranura liberada se rellene con algo que el atacante controla.
  3. La ejecución de código aterriza dentro del proceso de contenido de Safari —el mismo espacio de direcciones que tu sesión de navegación, tus cookies, tus pestañas con sesión iniciada—.
  4. Un exploit de segunda fase, encadenado al primero, escapa del sandbox de contenido hacia el proceso más amplio de Safari. El sandbox de WebKit es sólido pero no infranqueable; los últimos años incluyen varios escapes documentados.
  5. Una vez fuera del sandbox, el atacante se ejecuta como tu cuenta de usuario, en tu máquina. Tiene acceso de lectura a ~/Documents, ~/Library/Keychains, ~/.ssh, las cookies del perfil almacenado de Safari, los contenidos de iCloud Drive descargados para uso sin conexión y cualquier otra cosa que viva bajo tu directorio personal.

Esa es la cadena completa del navegador tradicional. Ninguno de los pasos es hipotético; cada uno se ha observado en una cadena real de WebKit en activo en los últimos tres años.

El mismo fallo en Safari de serieTU MAC · TU CUENTA DE USUARIOProceso de contenido de Safarise dispara el use-after-freeEjecución de código en el renderizadorcookies, perfil y pestañas abiertas alcanzablesEscape de sandbox (segunda fase)ejecutándose como tu cuenta de usuarioArchivos~/DocumentsLlavero~/LibraryClaves SSH~/.sshiCloud Drivearchivos cacheadosLa persistencia se instala en LaunchAgents.El Mac está comprometido.El mismo fallo en BromureTU MAC · TU CUENTA DE USUARIOVM DESECHABLE POR PESTAÑAProceso de contenido de Chromium(pero esto es un fallo de WebKit — ver más abajo)Ejecución de código en el renderizadorsolo dentro del invitado efímeroCONTENIDO — LA PESTAÑA SE CIERRA, LA VM MUEREArchivosintactosLlaverointactoClaves SSHintactasiCloud DriveintactoLa persistencia no tiene dónde aterrizar.El Mac anfitrión no cambia.
Un use-after-free de WebKit en Safari de serie frente al mismo fallo detonando dentro de una pestaña de Bromure. El fallo se dispara igual. Lo que cambia es qué hay al otro lado del renderizador cuando lo hace.

Hay un detalle del diagrama de la derecha sobre el que conviene ser claro: Bromure no usa WebKit. Cada pestaña ejecuta Chromium dentro de su VM Linux invitada y desechable. Así que el texto literal de estos CVE —cinco use-after-free de WebKit— no aplica al motor de renderizado que Bromure distribuye. Un usuario de Bromure que nunca haya aplicado macOS 26.5 no está expuesto a estos fallos concretos de WebKit a través de la pestaña de Bromure que tiene abierta.

Eso, por sí solo, no es una afirmación interesante. Chrome tiene su propio catálogo de fallos de memoria. Firefox tiene el suyo. El punto es el de segundo orden: incluso si sustituyes mentalmente estos CVE por la clase equivalente de use-after-free en V8 o Blink de Chromium —CVE-2024-7971, la confusión de tipos en V8 que usaron actores alineados con Corea del Norte en 2024, es el análogo obvio—, el cuadro de la derecha no cambia. El exploit se dispara dentro del renderizador. El renderizador está dentro de la VM invitada. La ejecución de código aterriza en una caja Linux que no contiene tu llavero, ni tu carpeta de Documentos, ni tus claves SSH. Cuando la pestaña se cierra, la VM se destruye.

Clase dos — tres fallos más de memoria y uno de validación de entrada

CVE-2026-43658 es el único fallo de WebKit en este aviso que Apple etiqueta explícitamente como «manejo de memoria» en lugar de use-after-free; el impacto declarado es una caída inesperada de Safari. CVE-2026-28917 está etiquetado como validación de entrada y también produce una caída de proceso. Ambos caen en el mismo cubo general que los use-after-free —son caídas en el espacio de direcciones de WebKit causadas por una página hostil— y ambos tienen el mismo techo realista: con suficiente trabajo, una «caída» puede en algunos casos ascenderse a una primitiva de ejecución de código y en otros sigue siendo, genuinamente, sólo una caída. Apple no nos dice cuál es cuál, y los parches, en una lectura rápida, tampoco lo zanjan.

El punto que conviene subrayar es que para el usuario, la distinción no cambia la respuesta arquitectónica. En Safari de serie, incluso un fallo de WebKit que parece benigno y solo provoca una caída es, en el peor de los casos, un punto de apoyo. En Bromure, incluso la versión peor de uno de estos fallos —ejecución total de código dentro del renderizador— es un evento de ejecución de código dentro de un invitado que va a ser descartado.

Clase tres — los cinco fallos de lógica y de política

Cinco de los diez fallos de WebKit en este aviso no son fallos de memoria en absoluto. Son fallos de lógica —pequeñas incoherencias entre lo que la política de seguridad de Safari dice que está permitido y lo que su código en realidad aplica—.

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

Content Security Policy es el mecanismo que un sitio web usa para decirle al navegador «solo ejecuta JavaScript de estos orígenes, solo carga imágenes desde estos otros». Ambos fallos permiten que una página maliciosamente diseñada haga que Safari se salte la aplicación de esa política en alguna ruta del parser. Consecuencia real: un XSS almacenado en un sitio que creía que CSP lo protegía ahora se ejecuta.

CVE-2026-28962 y CVE-2026-28958 — fuga de información

Ambos dejan que una página hostil lea datos a los que no debería tener acceso. El primero está en la lógica de control de acceso de WebKit; el segundo, en sus rutas de protección de datos. Encadenados, son los fallos que convierten «tengo ejecución de código en tu renderizador» en «tengo tu cookie de sesión de otro sitio en el que estabas autenticado».

CVE-2026-28971 — suplantación de descargas en iframe

Un iframe malicioso puede usar la configuración de descargas de la página contenedora. En la superficie es un fallo de UI; en la práctica, es la vía por la que una descarga drive-by consigue subirse a lomos de un sitio en el que el usuario confía explícitamente para guardar archivos. Una primitiva de libro de texto para el acceso inicial de malware.

Para qué sirven los fallos de lógica

Por sí solos, ninguno de estos concede ejecución de código. Su valor es estructural: cada uno es un peldaño que usan los fallos de memoria de arriba para subir. Un use-after-free a pelo es difícil de armar sin una forma de filtrar un puntero, una forma de saltar CSP, una forma de leer estado entre orígenes. Los fallos de lógica de la misma actualización son la mitad silenciosa de toda cadena pública de exploits.

El mismo argumento aplica del lado de Bromure, con una aclaración que conviene hacer. El fallo de suplantación de descargas (CVE-2026-28971) es interesante porque es el único de la lista que, en Safari de serie, puede producir un archivo en disco que el usuario podría abrir más tarde. Por defecto, las descargas de Bromure desde dentro de una pestaña aterrizan dentro de la VM invitada de esa pestaña; sacarlas del invitado es una acción explícita del usuario. Un archivo drive-by que la página consiga «descargar» es, en Bromure, un archivo en un invitado Linux a punto de dejar de existir. Las fugas de información entre orígenes (CVE-2026-28962, CVE-2026-28958) leen datos que el renderizador puede ver, que en Bromure son los datos que viven dentro de la VM de esa única pestaña.

Lo que se queda en la habitación: lo que la VM aísla y lo que no

Sería demasiado fácil salir de lo anterior con la conclusión equivocada. La arquitectura de Bromure es buena reduciendo el radio de impacto de un compromiso del renderizador. No es magia. Hay varias cosas que siguen en la habitación y conviene decirlas con claridad.

La sesión misma queda comprometida

Un exploit que funcione sobre uno de estos fallos sigue siendo dueño de la pestaña en la que se dispara. Las contraseñas que se tecleen en esa pestaña durante la ventana del exploit están en juego. Las cookies del perfil que esa pestaña esté usando están en juego. Los datos de formulario están en juego. La separación por perfil en Bromure garantiza que el daño está acotado por ese perfil, no por toda la vida digital del usuario, pero no es cero.

El portapapeles es el puente más evidente

La postura por defecto de Bromure deja el portapapeles disponible para el invitado, porque para la mayoría de los usuarios el coste diario de romper copiar y pegar pesa más que el escenario raro de un exploit. Esa postura es una elección deliberada, que podemos cortar bajo demanda en sesiones que quieras herméticas. Conviene saber que el puente existe.

Un escape del hipervisor sigue siendo posible

Una cadena lo bastante decidida podría, en principio, escapar del propio hipervisor de Apple Silicon. La superficie de ataque ahí es varios órdenes de magnitud más pequeña que la de un navegador, y el historial público de tales fallos es corto, pero no es cero. No pretendemos inmunidad; pretendemos haber movido la clase de fallo de la que depende tu seguridad.

Sin extensiones, sin capa de helpers del navegador

Bromure no permite instalar extensiones de Chrome en absoluto. Eso es una postura, no un ajuste. Elimina toda una segunda superficie de ataque —cada extensión es su propia ruta de código semiconfiada con permisos que viajan junto al renderizador— que históricamente ha sido la vía por la que muchos compromisos reales del navegador acaban logrando persistencia.

Por qué el Mac y el navegador quieren ser máquinas distintas

Hay una forma más general de decir todo lo anterior. Un Mac moderno contiene, uno al lado del otro en el mismo dominio de confianza:

  • El sistema operativo, con tus archivos y tu llavero.
  • Las aplicaciones nativas que has instalado, con los entitlements que hayan pedido.
  • El navegador, que es con diferencia la mayor pieza de maquinaria de parseo controlable por el atacante que hay en el sistema.

Cuando se dispara un fallo de WebKit en un macOS de serie, la parte del sistema que acaba de quedar comprometida es la parte del sistema que tiene acceso de lectura a las otras dos. Eso no es un error de Safari; es la consecuencia directa de ejecutar un navegador como aplicación de espacio de usuario junto a todo lo demás que el usuario hace.

El diseño de Bromure trata al navegador y al resto del Mac como máquinas distintas. El navegador, de hecho, se ejecuta en una máquina distinta —un invitado Linux, sobre una CPU virtual, con disco virtual que se restablece en cada sesión—. El Mac anfitrión ve al invitado solo a través de un conjunto estrecho de llamadas al hipervisor: framebuffer, entrada, red, portapapeles cuando se permite. Un fallo de la clase de WebKit —o su equivalente en Chromium— que aterriza dentro del invitado es, desde el punto de vista del anfitrión, código ejecutándose en una computadora distinta, en un sistema operativo distinto, sin ruta hacia los archivos del usuario. Que las dos «computadoras» compartan chasis es un detalle de implementación.

Qué hacer hoy

Si estás leyendo esto en el Mac que usas para todo lo demás, lo más importante es lo aburrido: aplica la actualización de macOS 26.5. La ventana entre que Apple lanza un parche y alguien convierte ese parche en un exploit funcional se mide ya, según las propias mediciones del sector, en horas y no en semanas. Los usuarios de Safari de serie con esta actualización aplicada están protegidos frente a los diez fallos de WebKit anteriores. Los usuarios de Safari de serie sin aplicarla, no.

Si estás leyendo esto en Bromure, estás protegido frente a los fallos del renderizador de la clase WebKit por arquitectura y no por adopción de parches, porque el renderizador no es WebKit, no se ejecuta en el anfitrión y vive en un invitado que se destruye al cerrar la pestaña. Aun así, deberías aplicar la actualización de macOS 26.5, porque los otros sesenta y pico CVE de esa entrega parchean partes de macOS que Bromure no aísla —componentes del kernel, servicios del sistema, frameworks nativos— y esos siguen importando.

El marco que nos gustaría que más gente usara es este. Los zero days de WebKit no van a parar. Los zero days de Chromium no van a parar. Lo que sí puede parar, para cualquier usuario concreto, es el enlace entre «una página se equivocó» y «tu ordenador se equivocó». Ese enlace es el que Bromure se construyó para romper, un aviso de diez CVE cada vez.

Instala Bromure. Sigue aplicando las actualizaciones de macOS. Y la próxima vez que Apple publique una actualización de Safari que diga «processing maliciously crafted web content may lead to» —y será pronto, porque la cadencia ya es mensual—, lee la frase, archívala y fíjate en que para la parte del día que pasas dentro de Bromure, la oración no termina.