← volver
CVE-2018-8298highbajo ataqueCWE-843

CVE-2018-8298

93Vexday Risk Score

Prioriza la corrección. Ella está bajo explotación confirmada por CISA y tiene prueba de concepto pública.

ssvc Actcvss 7.5epss 75%
de la publicación al arma37 días
Publicada en NVD11 jul
1ª PoC+37d
CISA KEV+1331d
probabilidad de explotación
75%top 1% de las CVE
explotación observada
CISA + VulnCheck
2 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2022-03-17

Apply updates per vendor instructions.

Resumen

Falha de type confusion (CWE-843) no motor de script ChakraCore, usado pelo Microsoft Edge legado (EdgeHTML) e por outros produtos que embarcam o engine. A implementação baseada em ICU dos objetos Intl.NumberFormat/Intl.DateTimeFormat não verifica se o objeto já foi inicializado, permitindo reinicializá-lo com um tipo interno diferente do esperado — o que pode ser escalado para corrupção de memória e execução remota de código. Está no catálogo KEV da CISA com exploração confirmada, mas a exigência de interação do usuário e a alta complexidade de ataque (AC:H) limitam o alcance prático fora de um cenário de navegação web direcionada.

Detalle técnico

O ChakraCore mantém duas implementações paralelas dos inicializadores de Intl.NumberFormat e Intl.DateTimeFormat em Intl.js: uma para a API de globalização legada do Windows (WinGlob) e outra baseada em ICU, adotada em builds mais recentes do Edge (o pesquisador testou em Windows Insider Preview, Edge 42.17672.1000.0 / EdgeHTML 17.17672). A versão WinGlob verifica se o objeto alvo já foi inicializado antes de prosseguir; a versão ICU não faz essa checagem.

Isso permite que um script chame Intl.NumberFormat.apply(objeto) e, em seguida, Intl.DateTimeFormat.apply(objeto) sobre o mesmo objeto JavaScript. O engine trata internamente esse objeto como tendo um layout/tipo diferente do que ele realmente tem — a essência de um type confusion. Quando um método subsequente (como formatToParts) opera sobre esse objeto assumindo o tipo incorreto, o engine acessa campos internos fora do que foi alocado, abrindo caminho para corrupção de memória controlável pelo atacante.

O atacante controla o conteúdo do objeto JavaScript e a sequência de chamadas Intl aplicadas a ele, mas não tem controle direto sobre endereços de memória — a exploração para RCE completo exige heap grooming adicional e, tipicamente, encadeamento com falhas de leitura/escrita para construir controle de fluxo, algo que o PoC público não demonstra.

Cómo se explota

O vetor é conteúdo web ou documento malicioso processado por um motor baseado em ChakraCore — na prática, o usuário precisa abrir uma página ou arquivo malicioso no Microsoft Edge legado (EdgeHTML) ou em outra aplicação que embarque o ChakraCore. O vetor CVSS confirma isso: UI:R (interação do usuário obrigatória) e AC:H (complexidade de ataque alta), ou seja, não é uma falha explorável remotamente sem que a vítima clique em algo ou carregue uma página.

A prova de conceito publicada (Google Security Research, EDB-ID 45217) é mínima: três linhas de JavaScript que aplicam Intl.NumberFormat e depois Intl.DateTimeFormat sobre o mesmo objeto e chamam formatToParts. Esse PoC demonstra o crash/type confusion, classificado como 'dos' no Exploit-DB — não é um exploit de RCE completo e funcional publicamente disponível.

A CISA lista a CVE no catálogo KEV com evidência de exploração ativa, adicionada em março de 2022 (quase quatro anos após a publicação original), sem associação confirmada a campanhas de ransomware. Isso sugere que a arma de RCE completa circulou de forma mais restrita do que o PoC de crash, provavelmente como parte de cadeias de exploração de navegador mais elaboradas.

Versiones

Afectadas
Microsoft ChakraCore / motor de script usado no Microsoft Edge legado (EdgeHTML) que utiliza a implementação baseada em ICU dos objetos Intl. O pesquisador confirmou o problema em build de Windows Insider Preview, Microsoft Edge 42.17672.1000.0 / EdgeHTML 17.17672. As fontes disponíveis não detalham a faixa completa de versões/builds afetadas fora desse teste.
Corregidas en
Corrigido pela atualização de segurança da Microsoft de julho de 2018 (mesmo lote de CVE-2018-8242, 8283, 8287, 8288, 8291, 8296). Número de build/versão exato de correção do ChakraCore ou do EdgeHTML não está detalhado nas fontes disponíveis; verifique o boletim MSRC oficial para o identificador de atualização aplicável ao seu Windows/Edge.

Cómo protegerse

A correção oficial veio via boletim de segurança da Microsoft (MSRC) publicado em julho de 2018, junto com outras CVEs do ChakraCore do mesmo ciclo (CVE-2018-8242, 8283, 8287, 8288, 8291, 8296). As fontes disponíveis não especificam o número de build ou versão exata de correção do ChakraCore/EdgeHTML — aplique as atualizações do Windows/Edge do Patch Tuesday de julho de 2018 e posteriores, conforme indicado pelo MSRC.

Se você mantém uma instância standalone do ChakraCore (por exemplo, via Node-ChakraCore ou outro embedding), atualize para um commit/release posterior à correção do arquivo lib/Runtime/Library/InJavascript/Intl.js, que adicionou ao inicializador ICU a mesma verificação de estado já presente no inicializador WinGlob. O commit vulnerável identificado no PoC é bc2e55a7d80338ee4c9c63b76893f6d816dfe70b; verifique se seu branch está acima da correção subsequente a essa revisão.

O Microsoft Edge atual, baseado em Chromium, não usa ChakraCore — a exposição é essencially histórica, restrita ao EdgeHTML legado (removido do Windows 10/11 modernos) e a aplicações de terceiros que ainda embarcam ChakraCore diretamente. Desabilitar JavaScript não é uma mitigação realista para navegação normal; a única mitigação eficaz é atualizar o engine ou remover/substituir o componente ChakraCore de aplicações embarcadas.

Cómo detectar

Não há assinatura de rede confiável para essa falha — a exploração ocorre inteiramente no processamento local de JavaScript pelo engine, sem tráfego de rede distintivo. O sinal mais concreto é no nível de script: presença de código que aplica Intl.NumberFormat.apply(obj) seguido por Intl.DateTimeFormat.apply(obj) sobre o mesmo objeto, e em seguida chama métodos como formatToParts sobre ele — esse padrão específico (reuso do mesmo objeto entre os dois construtores Intl) é atípico em código legítimo e pode ser usado como heurística em logging de script (AMSI, script block logging, ferramentas de análise de conteúdo web) ou em análise estática de amostras JavaScript suspeitas.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
A remote code execution vulnerability exists in the way that the ChakraCore scripting engine handles objects in memory, aka "Scripting Engine Memory Corruption Vulnerability." This affects ChakraCore. This CVE ID is unique from CVE-2018-8242, CVE-2018-8283, CVE-2018-8287, CVE-2018-8288, CVE-2018-8291, CVE-2018-8296.
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
Productos afectados
Microsoft · ChakraCore
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.