CVE-2016-9079
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
Use-after-free na engine de animação SVG (SMIL) do Firefox/Thunderbird, explorado como 0-day em ataques direcionados contra usuários do Tor Browser e Firefox no Windows em novembro de 2016. O CVSS de 7.5 reflete só o vetor de rede sem interação — mas a exploração real observada por pesquisadores da Mozilla já vinha com um exploit completo de RCE, incluindo ROP para burlar ASLR, entregue via anexo de e-mail, não como ataque de massa via web.
Detalhamento técnico
A falha está em nsSMILTimeContainer::NotifyTimeChange(), no subsistema SMIL (Synchronized Multimedia Integration Language) que implementa animação declarativa de SVG (, etc.). O código itera sobre um array de elementos animados usando um ponteiro bruto para os elementos do array. Em certas condições, o método chamado durante a iteração provoca reentrância: ele dispara efeitos colaterais que fazem o array ser realocado, invalidando o ponteiro que a iteração ainda mantém. O resultado é um use-after-free (CWE-416) — o código continua acessando memória já liberada/realocada como se fosse o elemento original.
O tipo estrutural usado para o array, nsTObserverArray, foi desenhado justamente para tolerar esse tipo de reentrância, mas o trecho específico de NotifyTimeChange() não usava essa proteção corretamente, permitindo que a reentrância corrompesse o estado da iteração. Os próprios desenvolvedores da Mozilla, ao investigar o crash relatado, inicialmente hesitaram se era um bounds failure ou um UAF propriamente dito — a classificação final foi UAF com correção por meio de guarda explícita contra reentrância no nsSMILTimeContainer.
O atacante controla o conteúdo SVG/animação embutido na página (ou anexo HTML) renderizado pelo motor de layout do Firefox, incluindo o timing e a estrutura dos elementos animados que disparam a reentrância. Combinado com Web Workers — usados no exploit observado para pulverização de heap e sincronização — isso dá controle suficiente sobre o layout de memória para transformar o UAF em execução de código, incluindo uma cadeia ROP voltada a burlar ASLR no Windows.
Como é explorada
O exploit encontrado in the wild chegou como anexo de e-mail (arquivo HTML/SVG com JavaScript minificado, identificado internamente como cssbanner.js) enviado a um administrador de sistema, direcionado a usuários que a Mozilla e o remetente original suspeitavam usar o Tor Browser — coerente com um ataque de desanonimização ou vigilância direcionada, não com campanha ampla. Basta a vítima abrir o conteúdo malicioso no Firefox (ou Firefox ESR/Thunderbird renderizando HTML) para acionar a animação SVG maliciosa; não há necessidade de autenticação, privilégio elevado ou configuração não padrão — o vetor é qualquer conteúdo web/HTML processado pelo motor de renderização.
A cadeia observada usa Web Workers para manipular a alocação de heap em paralelo com o disparo da condição de reentrância no timing SMIL, e inclui shellcode/ROP voltado especificamente para Windows, visando contornar ASLR e obter execução de código arbitrário com os privilégios do processo do navegador (ou do Thunderbird, ao renderizar e-mail HTML). A complexidade de engenharia é alta — construir a corrida de reentrância de forma confiável e encadear com heap grooming via Workers não é trivial — mas o exploit já existia pronto e funcional quando foi capturado, o que motivou a inclusão no catálogo KEV da CISA e a publicação de módulo Metasploit e PoC no Exploit-DB posteriormente, ampliando o público capaz de reproduzir o ataque depois da divulgação.
Não há relato de exploração massiva via campanhas de malvertising ou kits de exploração amplamente distribuídos; o padrão documentado é de ataque direcionado. Após a correção e a publicação de PoC/Metasploit, o risco relevante passa a ser qualquer instalação desatualizada exposta a conteúdo web ou e-mail HTML não confiável.
Versões
Como se proteger
Atualizar é a única mitigação real: Firefox para 50.0.2 ou posterior, Firefox ESR e Thunderbird para 45.5.1 ou posterior (a Mozilla corrigiu via MFSA 2016-92, com aprovações de backport para aurora, beta, release e ESR45). Distribuições Linux publicaram os mesmos pacotes corrigidos: Red Hat via RHSA-2016:2843 (firefox 45.5.1) e RHSA-2016:2850 (thunderbird 45.5.1), Debian via DSA-3730, e Gentoo via GLSA 201701-15 (que empacota esta e outras dezenas de CVEs, recomendando >= 45.6.0/45.6.0, ambas já acima do ponto de correção desta falha).
Não existe workaround de configuração documentado pelo fornecedor — a Gentoo GLSA explicita 'there is no known workaround at this time'. Desabilitar SVG inteiramente ou bloquear renderização de animação SMIL não é uma flag suportada nativamente nas versões afetadas; a mitigação prática para quem não pode atualizar imediatamente é tratar qualquer HTML/SVG de origem não confiável como hostil (bloqueio de anexos HTML em clientes de e-mail, isolamento de navegação, ou uso de leitor de e-mail em modo texto) — mas isso é controle compensatório de superfície, não correção da vulnerabilidade.
Como o exploit era de dia zero direcionado, monitorar por 'sinais de campanha' não é confiável como controle isolado — a defesa efetiva é a atualização, já disponível desde dezembro de 2016.
Como detectar
O artefato original identificado pela Mozilla era um arquivo HTML contendo SVG com animação e uso de Web Workers, entregue como anexo de e-mail, com JavaScript minificado (renomeado internamente cssbanner.js) e payload ofuscado contendo uma cadeia ROP voltada a Windows — sinal de que a origem foi engenharia social direcionada por e-mail, não um kit de exploração web genérico. Em nível de processo, o crash característico da falha (antes da correção) aparece em builds instrumentados com ASAN nas pilhas de nsSMILTimeContainer, nsSMILTimedElement e MilestoneEntry.
Não há assinatura de rede ou de log confiável e publicamente documentada para detectar tentativas de exploração em produção — o caso original só foi descoberto porque a vítima/administrador reportou o anexo suspeito à Mozilla. Para ambientes corrigidos, a exposição residual está limitada a instalações desatualizadas de Firefox/Firefox ESR/Thunderbird anteriores às versões de correção; a verificação prática é de inventário de versão, não de detecção de tráfego.