flawopen.com/Incidents/bluemoon-chrome-v8-windows-alpc-september-2026
BlueMoon: tres fallos cruzaron las barreras de Chrome y Windows
Proofpoint informó de campañas dirigidas de BlueMoon que encadenaron CVE-2026-85046 (confusión de tipos en V8), CVE-2026-87491 (escape del sandbox de V8) y CVE-2026-85880 (elevación local de privilegios en el kernel de Windows). Google y Microsoft confirmaron explotación antes de sus correcciones; actualiza Chromium y Windows por separado.[1], [2], [3], [4]
Imagina un clasificador que verifica que todas las cajas contienen libros y deja que alguien cambie el contenido antes de ordenarlas con las etiquetas antiguas. Ese primer error abre una zona cerrada; otro abre su reja y un tercero altera las acreditaciones del edificio. Cada cerradura necesita su propio arreglo.[1]
Conceptos Clave y Términos
V8 / type confusion- V8 ejecuta JavaScript.
CVE-2026-85046afectó a supuestos de optimización de Array.prototype.sort invalidados cuandofill()cambió el tipo de los elementos.[1], [2]
Mapeos de marcos
- Referencia CWE para la debilidad descrita en esta guía: CWE-122 CWE-787 CWE-843
- CISA KEV — añadido el 2026-09-04 — CVE-2026-85046
Etapas de BlueMoon y decisiones de actualización
| Etapa / CVE / límite | Qué establecen las fuentes | Acción defensiva |
|---|---|---|
Confusión de tipos del JIT de V8 — CVE-2026-85046 | Proofpoint describe cómo fill() en el comparador de Array.prototype.sort invalida una suposición sobre el tipo de elementos. Google indicó que existía explotación en circulación. | Instala Chrome/Chromium 152.0.7977.82/.83 (Windows/Mac) o .82 (Linux), o una versión posterior; reinicia el navegador. La versión de Google del 3 de septiembre incluye la corrección. |
Escape del sandbox de V8 — CVE-2026-87491 | Proofpoint informa de corrupción de metadatos WebAssembly que cruza el sandbox de memoria de V8, distinto del sandbox del proceso de renderizado. Google indicó que existía explotación en circulación. | Instala Chrome/Chromium 153.0.8010.36/.37 (Windows/Mac) o .36 (Linux), o una versión posterior; reinicia el navegador. La versión de Google del 8 de septiembre incluye la corrección. |
Elevación local en el kernel de Windows — CVE-2026-85880 | Proofpoint describe una ruta ALPC/WNF hacia SeDebugPrivilege y enumera las versiones antiguas de Windows a las que apuntaba el kit. Microsoft confirma explotación antes de las actualizaciones del 8 de septiembre. La lista del kit no abarca todas las versiones afectadas. | Instala las actualizaciones de seguridad vigentes y compatibles de Windows, incluida la del 8 de septiembre de 2026 o una posterior; consulta MSRC para el paquete de cada sistema y completa el reinicio requerido. Actualiza Windows y Chrome por separado. |
Cronología del Incidente
Proofpoint observó por primera vez actividad BlueMoon.[1]
Chrome Stable corrigió CVE-2026-85046 en 152.0.7977.82/.83 para Windows y Mac, y .82 para Linux.[2]
Flujo de Ataque Paso a Paso
Entrega observada
Proofpoint observó campañas dirigidas de spearphishing que distribuían un enlace al kit de explotación. Las etapas del navegador requerían que la persona abriera el enlace en un navegador Chromium vulnerable.[1]
Confusión de tipos en V8 — CVE-2026-85046
Proofpoint describe una ruta optimizada de Array.prototype.sort cuya suposición de tipo podía invalidarse cuando el comparador modificaba el array con fill(). La confusión de tipos resultante fue la vulnerabilidad inicial en el renderizador; Google indicó que existía un exploit en circulación.[1], [2]
Elevación local en el kernel de Windows — CVE-2026-85880
Proofpoint describe una ruta del kernel mediante ALPC/WNF utilizada para habilitar SeDebugPrivilege en el renderizador en determinadas versiones antiguas de Windows. Microsoft confirmó por separado la explotación antes de sus actualizaciones de seguridad del 8 de septiembre de 2026.[1], [4]
Escape del proceso de renderizado
Con las etapas del navegador y un destino Windows compatible, la cadena descrita podía salir del renderizador mediante la elevación local de Windows y alcanzar el proceso principal del navegador. El ejemplo Python solo ilustra la suposición obsoleta; no es la cadena de explotación.[1], [4]
Código Fuente: Vulnerable vs. Seguro
Ejemplo seguro en Python sobre supuestos invalidados, no es código V8, exploit ni parche del proveedor. Una función de retorno inocua puede sustituir enteros por texto tras la primera comprobación. La mejora valida una copia acotada después de la llamada y la consume sin nuevas llamadas. Python lanza una excepción en el caso vulnerable; no reproduce corrupción de memoria nativa. Solo se admiten llamadas síncronas, fiables y acotadas.
def numeric_total(values, callback):
if type(values) is not list or len(values) > 1024:
raise ValueError("Invalid batch")
if any(type(x) is not int for x in values):
raise ValueError("Expected integers")
callback(values)
# La callback pudo invalidar la suposición sobre el tipo.
return sum(values)
def numeric_total(values, callback):
if type(values) is not list or len(values) > 1024:
raise ValueError("Invalid batch")
callback(values)
if len(values) > 1024:
raise ValueError("Invalid batch")
snapshot = tuple(values)
if any(type(x) is not int or abs(x) > 1_000_000
for x in snapshot):
raise ValueError("Expected bounded integers")
# Consume la instantánea validada sin otra llamada de retorno.
return sum(snapshot)
Lista de Verificación de Seguridad para Ingeniería
- ✓Inventaríe por separado las versiones de navegador y Windows; aplique parches oficiales compatibles y compruebe reinicios del navegador y del sistema.[2], [3], [4], [5]
- ✓Añada pruebas de mutación de la función de retorno: rechace cambios de tipo y lotes excesivos antes del consumo optimizado; confirme que los enteros normales se suman.[1]
- ✓Revise las rutas optimizadas con llamadas a código controlable entre validación y uso. Vuelva a validar o utilice una copia inmutable ya validada.[1]
- ✓Haga seguimiento por CVE. Chrome calificó
CVE-2026-85046como Alto yCVE-2026-87491como Medio; Microsoft calificóCVE-2026-85880como Alto (CVSS 7.8,CWE-122). Las mitigaciones del sistema no reemplazan los parches.[2], [3], [4], [5]