← voltar
CVE-2016-4657highsob ataqueCWE-787

CVE-2016-4657

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 8.8epss 64%
da publicação à arma199 dias
Publicada no NVD25 de ago.
1ª PoC+199d
metasploit25 de ago.
CISA KEV+2098d
probabilidade de exploração
64%top 1% das CVEs
exploração observada
simCISA + VulnCheck
10 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-06-14

Apply updates per vendor instructions.

Resumo

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.

Detalhamento 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.

Como é explorada

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).

Versões

Afetadas
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).
Corrigidas em
iOS 9.3.5, lançado em 25 de agosto de 2016.

Como se proteger

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.

Como 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.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
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
Produtos afetados
n/a · n/a
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.