← back
CVE-2016-9079highunder attackCWE-416

CVE-2016-9079

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 7.5epss 88%
from disclosure to weapon0 days
Published on NVDJun 11
1st PoCJan 24
metasploitNov 30
CISA KEV+1837d
exploitation probability
88%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
12 public exploit(s)
Action required by CISAfederal deadline: 2023-07-13

Apply updates per vendor instructions.

Summary

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.

Technical detail

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.

How it’s exploited

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.

Versions

Affected
Firefox anterior a 50.0.2; Firefox ESR anterior a 45.5.1; Thunderbird anterior a 45.5.1.
Fixed in
Firefox 50.0.2; Firefox ESR 45.5.1; Thunderbird 45.5.1. Backports: Red Hat Enterprise Linux (firefox-45.5.1, thunderbird-45.5.1, via RHSA-2016:2843 e RHSA-2016:2850); Debian (DSA-3730); Gentoo (>= 45.6.0 para firefox/firefox-bin/thunderbird/thunderbird-bin, pacote que já inclui a correção desta CVE junto com outras).

How to protect

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.

How to detect

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.

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.
A use-after-free vulnerability in SVG Animation has been discovered. An exploit built on this vulnerability has been discovered in the wild targeting Firefox and Tor Browser users on Windows. This vulnerability affects Firefox < 50.0.2, Firefox ESR < 45.5.1, and Thunderbird < 45.5.1.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.