CVE-2013-1675
Prioriza la corrección. Ella está bajo explotación confirmada por CISA.
Apply updates per vendor instructions.
Resumen
Falha de divulgação de informação no Firefox, Firefox ESR 17.x e Thunderbird: os campos mPreviousScale e mNewScale do objeto nsDOMSVGZoomEvent não são inicializados antes de serem expostos ao JavaScript da página, permitindo que um site malicioso leia lixo de memória do processo através das propriedades do evento SVGZoomEvents. Não há execução de código nem corrupção de memória — o impacto é estritamente leitura de memória não inicializada, útil sobretudo como primitiva de reconhecimento (leak de ponteiros, bypass de ASLR) para encadear com outra falha de corrupção. Está no catálogo KEV da CISA, mas isso reflete evidência de exploração histórica, não uma campanha ativa documentada nas fontes disponíveis.
Detalle técnico
O bug (Mozilla Bugzilla #866825) está no componente DOM: Events do Gecko. A classe nsDOMSVGZoomEvent representa o evento SVGZoomEvents, disparado (ou instanciável via document.createEvent) em documentos SVG com zoom/pan. Os membros mPreviousScale e mNewScale, que armazenam os fatores de escala anterior e novo expostos via os atributos previousScale/newScale, nunca recebiam um valor default no construtor do objeto. Quando o script da página lia essas propriedades, o motor retornava o conteúdo bruto da posição de memória alocada para o objeto, sem qualquer inicialização — um caso clássico de uso de memória não inicializada (a Mozilla marcou o bug com a tag csectype-uninitialized; a CISA classifica como CWE-119, overread de buffer).
A regressão foi rastreada até o bug 302103, que introduziu essas variáveis em 2005-08-25 — ou seja, o código vulnerável existia há anos antes de ser identificado; só foi corrigido quando revisado em conjunto com outro bug relacionado (bug 866679). O atacante não precisa controlar nenhum valor de entrada específico: o simples ato de instanciar o evento e ler os atributos já expõe o conteúdo de memória, cujo valor varia a cada execução dependendo do estado do heap.
O reporter do bug (Ms2ger) anexou um teste que demonstra diretamente que o JavaScript recebe 'garbage' (lixo) ao ler esses campos, sem necessidade de disparar um zoom real na página — a criação programática do evento via API DOM já é suficiente para acionar a leitura da estrutura não inicializada.
Cómo se explota
O vetor é 100% client-side, via página web maliciosa carregada no navegador (ou renderizada pelo Thunderbird) — não exige autenticação nem configuração não padrão. O atacante hospeda uma página que cria um objeto SVGZoomEvents via script e lê as propriedades previousScale/newScale; o retorno é interpretado como número de ponto flutuante, mas na prática carrega bytes crus de memória do processo. Isso não gera crash nem controle de fluxo por si só; o valor obtido serve como leak de informação — endereços de ponteiros, offsets de heap, dados residuais de outras estruturas — que um atacante mais sofisticado usa para calibrar outro exploit (ex.: contornar ASLR antes de disparar uma vulnerabilidade de corrupção de memória separada).
A complexidade prática é baixa: qualquer JavaScript capaz de manipular o DOM SVG consegue acionar a leitura repetidamente e coletar amostras de memória. O vetor de ataque via e-mail no Thunderbird é limitado pelo fato de que, por padrão, JavaScript é desabilitado na renderização de mensagens HTML — o Red Hat aponta explicitamente que a falha só é explorável em Thunderbird por caminhos alternativos, como conteúdo remoto completo de feeds RSS renderizado com JS habilitado, cenário pouco comum.
A presença no catálogo KEV da CISA (adicionado em 2022-03-03, com prazo de correção fixado em 2022-03-24) indica evidência de exploração no mundo real, mas nenhuma das fontes consultadas detalha campanha, ator ou contexto específico dessa exploração — a inclusão tardia (quase 9 anos após a publicação da CVE) sugere reavaliação retrospectiva de evidências, não um incidente recente.
Versiones
Cómo protegerse
A correção definitiva é atualizar para Firefox 21.0 ou posterior, Firefox ESR 17.0.6 ou posterior, Thunderbird 17.0.6 ou posterior, ou Thunderbird ESR 17.0.6 ou posterior — o patch simplesmente inicializa os campos mPreviousScale/mNewScale no construtor do evento. Distribuições Linux que ainda mantêm builds antigas (RHEL 5/6 com firefox/xulrunner/thunderbird, openSUSE) receberam backports equivalentes contendo essa correção junto com outras falhas do mesmo ciclo (MFSA 2013-41 a 2013-48).
Como esses produtos estão fora de suporte há mais de uma década, a mitigação real hoje é não usar builds dessas versões — não existe flag ou pref documentada nas fontes para desabilitar seletivamente o SVGZoomEvent. O único paliativo genérico é desabilitar JavaScript inteiramente no navegador, o que quebra a usabilidade da maioria dos sites e não é uma mitigação seletiva para esta falha específica; não deve ser tratado como solução, apenas como redução de superfície em ambiente isolado/legado que não pode ser atualizado.
Para Thunderbird, o risco é naturalmente reduzido porque JavaScript vem desabilitado por padrão na renderização de e-mails HTML — isso não é uma mitigação aplicada pelo administrador, é o comportamento padrão do produto, e não cobre cenários como visualização de conteúdo remoto de feeds com JS habilitado.
Cómo detectar
Não há assinatura de rede ou indicador de comprometimento confiável publicado nas fontes consultadas — o ataque ocorre inteiramente no lado do cliente, dentro do motor de renderização, sem tráfego anômalo identificável a nível de rede. Em nível de código-fonte de página, um sinal a procurar é JavaScript que instancia eventos via document.createEvent('SVGZoomEvents') e em seguida lê programaticamente os atributos previousScale/newScale, especialmente combinado com lógica de coleta/serialização desses valores — mas esse padrão também pode aparecer em código legítimo de manipulação de zoom SVG, gerando falsos positivos; nenhuma fonte apresenta uma assinatura validada para diferenciar uso benigno de exploração.