← volver
CVE-2016-4657highbajo ataqueCWE-787

CVE-2016-4657

100Vexday Risk Score

Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.

ssvc Actcvss 8.8epss 64%
de la publicación al arma199 días
Publicada en NVD25 ago
1ª PoC+199d
metasploit25 ago
CISA KEV+2098d
probabilidad de explotación
64%top 1% de las CVE
explotación observada
CISA + VulnCheck
10 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2022-06-14

Apply updates per vendor instructions.

Resumen

Falha de corrupção de memória (use-after-free) no motor JavaScriptCore do WebKit usado pelo Safari e por qualquer app que renderize HTML via WebKit no iOS. É a terceira peça da cadeia "Trident", usada pelo grupo NSO no spyware Pegasus para comprometer o iPhone de um ativista em 2016 a partir de um único clique em link malicioso — por isso está no catálogo KEV da CISA com exploração confirmada, apesar de a CVE isolada não dar root: ela só entrega execução de código dentro do sandbox do navegador.

Detalle técnico

A vulnerabilidade está no JavaScriptCore, o interpretador JS do WebKit. O módulo Metasploit público a identifica como um use-after-free relacionado a "not_number defineProperties" — a manipulação de propriedades de objetos JS por Object.defineProperties permite que uma referência a um objeto seja liberada enquanto o engine ainda mantém um ponteiro válido para ela, típico CWE-416 (a CISA classifica a entrada genericamente como CWE-119, corrupção de memória por acesso fora dos limites/uso indevido de buffer). O atacante controla o conteúdo de uma página web (JavaScript arbitrário) e usa isso para forçar o padrão de alocação/liberação que dispara a condição de corrida entre a liberação do objeto e seu reuso.

A Apple descreve a causa raiz apenas como "a memory corruption issue was addressed through improved memory handling", sem detalhar a rotina exata — não há CWE oficial do fornecedor, só o inferido pela CISA e pelo código do exploit. Não há acesso ao código-fonte fechado do WebKit da Apple na época que permita confirmar a linha exata; a análise pública mais próxima vem do próprio módulo Metasploit e de writeups da cadeia Pegasus (Lookout/Citizen Lab), que tratam essa CVE como o estágio de execução de código no contexto do Safari/WebKit, anterior à escalada de privilégios feita pelas outras duas CVEs da cadeia (4655 e 4656) no kernel.

O exploit encontrado publicamente usa técnicas clássicas de exploração de UAF em JS engines: cria pressão de heap com arrays tipados (Uint32Array) para controlar layout de memória, obtém um objeto corrompido para read/write arbitrário de 4 bytes (funções read4/write4 no PoC), localiza o dyld shared cache para achar código nativo executável e desvia a execução para shellcode que sobrescreve uma função JIT com instruções ARM64 cruas. Isso demonstra escrita e leitura arbitrária de memória de processo — o impacto real de "execução de código" da CVE.

Cómo se explota

O vetor é 100% remoto e de zero-clique de configuração: basta a vítima visitar (ou ser redirecionada para) uma página web maliciosa no Safari ou em qualquer app que use WebKit para renderizar conteúdo — não exige autenticação nem configuração não padrão, só que o usuário abra o link (por isso UI:R no vetor CVSS). Na campanha real que motivou a descoberta (Pegasus/NSO, agosto de 2016), a exploração começou com um SMS contendo link, clicado pela vítima; a partir daí a cadeia era automática e silenciosa.

Isoladamente, esta CVE só dá execução de código dentro do processo/sandbox do WebKit — para o comprometimento completo do dispositivo (que foi o caso documentado pela Lookout/Citizen Lab) ela foi encadeada com CVE-2016-4655 (leak de memória de kernel) e CVE-2016-4656 (corrupção de memória de kernel) para escapar do sandbox e obter jailbreak silencioso com persistência. Existe módulo Metasploit público (rank "manual", não automático) e PoC no Exploit-DB que reproduzem o UAF e a técnica de read/write arbitrário, tornando a reprodução técnica acessível para quem tem o código, embora monte a exploração completa exija montar a cadeia de três CVEs para efeito prático em iOS moderno da época.

A presença no catálogo KEV confirma exploração ativa in-the-wild antes da divulgação pública (zero-day usado ofensivamente por um cliente de spyware comercial), não uma exploração massiva e oportunista — o alvo original foi um indivíduo específico (ativista de direitos humanos nos Emirados Árabes).

Versiones

Afectadas
iOS anterior à versão 9.3.5 (dispositivos iPhone 4s e posteriores, iPad 2 e posteriores, iPod touch 5ª geração e posteriores, conforme lista de hardware suportado pela Apple no advisory).
Corregidas en
iOS 9.3.5, lançado em 25 de agosto de 2016.

Cómo protegerse

A correção definitiva é atualizar para iOS 9.3.5 ou qualquer versão posterior — a Apple corrigiu as três vulnerabilidades da cadeia Trident (CVE-2016-4655, 4656 e 4657) nesse release, lançado em 25 de agosto de 2016. Dado o tempo passado, qualquer dispositivo hoje em produção deveria estar em versões muito mais recentes; a mitigação prática em 2024+ é garantir que nenhum equipamento institucional rode iOS anterior a 9.3.5 — o que geralmente indica hardware obsoleto (iPhone 4s ou modelos incompatíveis com atualizações posteriores) que deveria ser descontinuado, não mantido com controles compensatórios.

Não existe paliativo de configuração que neutralize a falha em versões vulneráveis — é corrupção de memória no motor de renderização, não há flag para desabilitar seletivamente o componente afetado sem desabilitar o WebKit por completo (o que inviabiliza o Safari e qualquer app que dependa de WebView). Bloquear JavaScript reduz a superfície mas não é mitigação garantida, pois a vulnerabilidade está no próprio motor JS. MDM que force atualização automática de iOS é o controle organizacional mais realista para parques de dispositivos móveis.

Não adianta trocar de navegador dentro do iOS: até versões relativamente recentes do sistema, toda WebView no iOS (Chrome, Firefox, etc.) usa o WebKit do sistema por exigência da Apple, então o problema não é contornável na camada de aplicativo — só na camada de sistema operacional.

Cómo detectar

Não há assinatura de rede confiável e específica: o vetor é uma página web com JavaScript ofuscado explorando um UAF, e o tráfego HTTP/HTTPS não difere estruturalmente de navegação legítima até a entrega do payload nativo. Em nível de host, os indicadores documentados pela Lookout/Citizen Lab na campanha Pegasus foram artefatos pós-exploração (processos, arquivos e configurações de persistência do spyware), não da exploração do WebKit em si — a ausência de qualquer log do lado do WebKit sobrevivendo ao processo do navegador dificulta forense retroativa. Em produtos que ainda operam com iOS antigo, o sinal mais direto é a versão do sistema abaixo de 9.3.5, tratado como indicador de exposição, não de exploração ativa.

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.
WebKit in Apple iOS before 9.3.5 allows remote attackers to execute arbitrary code or cause a denial of service (memory corruption) via a crafted web site.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Productos afectados
n/a · n/a
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.