← back
CVE-2016-7200highunder attackCWE-787

CVE-2016-7200

98Vexday Risk Score

Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.

ssvc Actcvss 8.8epss 82%
from disclosure to weapon8 days
Published on NVDNov 10
1st PoC+8d
CISA KEV+1964d
exploitation probability
82%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
7 public exploit(s)
Action required by CISAfederal deadline: 2022-04-18

Apply updates per vendor instructions.

Summary

Falha de type confusion no motor JavaScript Chakra do Microsoft Edge, explorável via Array.filter para causar corrupção de memória e, em cadeia com outra falha, execução remota de código. Importa porque está no catálogo KEV da CISA com exploração confirmada e existe PoC pública funcional, mas o vetor exige que a vítima visite um site controlado pelo atacante — não há exploração passiva ou sem interação.

Technical detail

O bug está no tratamento de Array.filter pelo Chakra. Ao criar o array de destino, o motor usa ArraySpeciesCreate, que pode retornar tanto um array 'nativo' (armazenamento compacto de inteiros) quanto um array 'var' (armazenamento de ponteiros, mais largo). O laço interno que popula esse array de destino, porém, assume incondicionalmente que ele é do tipo var e grava valores usando DirectSetItemAt sem revalidar o tipo real do objeto — uma confusão de tipos (type confusion, próxima de CWE-843; a CISA classifica como CWE-119, restrição inadequada de operações em buffer de memória).

How it’s exploited

Pesquisadores do Google Project Zero (Natalie Silvanovich, issue 922) demonstraram que é possível forçar o destino do filter a ser um array nativo definindo Symbol.species numa subclasse de Array e devolvendo, no getter, um construtor que retorna um array já existente com tipo diferente do esperado. Isso permite primeiro um information leak (ler ponteiros/valores fora dos limites como se fossem números) e, num segundo estágio, corromper heap escrevendo além do array alocado, já que elementos var ocupam o dobro do espaço de elementos int.

Versions

Affected
Microsoft Edge no Windows 10 (RTM/32-bit e x64), Windows 10 Version 1511 (32-bit e x64), Windows 10 Version 1607 (32-bit e x64) e Windows Server 2016 x64 — conforme listado no boletim MS16-129.
Fixed in
Corrigida pelas atualizações cumulativas listadas no MS16-129: KB3198585 (Windows 10 RTM), KB3198586 (Windows 10 1511), KB3200970 (Windows 10 1607 e Windows Server 2016), substituindo atualizações anteriores (3192440, 3192441, 3194798).

How to protect

A correção oficial veio no boletim MS16-129 (8 de novembro de 2016), via atualização cumulativa KB3199057 para Microsoft Edge no Windows 10 (RTM, 1511, 1607) e Windows Server 2016. Aplicar essa atualização cumulativa do Windows resolve a falha; não existe flag de configuração ou mitigação parcial documentada pelo fornecedor — o Chakra é parte integrante do Edge, então a única mitigação real sem atualizar é não usar o Edge para navegação não confiável ou desativar JavaScript (inviável na prática). Como o suporte ao Edge legado (EdgeHTML/Chakra) terminou, sistemas ainda expostos a essa versão do navegador devem ser considerados sem caminho de correção disponível e precisam migrar para um navegador com suporte ativo.

How to detect

Não há assinatura de rede confiável documentada pelo fornecedor para esse CVE específico — a exploração ocorre inteiramente client-side, dentro do motor JS, via JavaScript ofuscado que manipula Array.filter, Symbol.species e subclasses de Array. Em ambiente de SOC, o sinal mais útil é indireto: telemetria de endpoint mostrando o processo do Edge (ou MicrosoftEdgeCP.exe/EdgeContentProcess) travando com falhas de acesso a memória após visitar um site específico, seguido de execução de processo filho inesperado (ex.: cmd.exe, powershell.exe, ou WinExec de outro binário) a partir do Edge — padrão consistente com os PoCs públicos que encadeiam CVE-2016-7200 com CVE-2016-7201 para RCE.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
The Chakra JavaScript scripting engine in Microsoft Edge allows remote attackers to execute arbitrary code or cause a denial of service (memory corruption) via a crafted web site, aka "Scripting Engine Memory Corruption Vulnerability," a different vulnerability than CVE-2016-7201, CVE-2016-7202, CVE-2016-7203, CVE-2016-7208, CVE-2016-7240, CVE-2016-7242, and CVE-2016-7243.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Affected products
n/a · n/a
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.