CVE-2015-4495
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Declarações oficiais dos fabricantes em formato CSAF/VEX: se o produto deles está afetado, já corrigido ou descartado — e por quê. É afirmação do fabricante, não juízo do Vexday.
Apply updates per vendor instructions.
Resumo
Falha na engine XPConnect do Firefox permite que JavaScript malicioso, executado no contexto de uma página web, obtenha acesso a um 'setter' nativo (o setter de location de uma janela privilegiada) através do visualizador de PDF embutido (PDF.js). Isso quebra a Same Origin Policy e permite ler arquivos locais arbitrários — sem execução de código, mas com exfiltração de segredos como chaves SSH, histórico de shell e credenciais de clientes FTP. Importa porque foi explorada in-the-wild antes da correção, via anúncio malicioso veiculado em site de notícias russo, com upload dos arquivos roubados para um servidor na Ucrânia.
Detalhamento técnico
A causa raiz (CWE-346, violação de origem confiável / bypass de mesma origem; também relacionado a CWE-668, exposição de recurso a esfera de controle incorreta) está na interação entre o mecanismo de isolamento de contexto JavaScript do Firefox e o PDF Viewer (PDF.js), que roda como código privilegiado dentro do navegador. O pesquisador Cody Crews (Bugzilla 1178058) documentou a cadeia: folhas de estilo carregadas via C++ para o pretty-print de XML ficam acessíveis por document.styleSheets, mesmo sem aparecer em document.childNodes. A partir dessas referências, um atacante alcança o contexto de execução XBL e, subindo a cadeia de protótipos até Object, usa o método nativo __lookupSetter__ (equivalente a Object.getOwnPropertyDescriptor(win, 'location').set) para obter o setter nativo de 'location' de uma janela à qual não deveria ter acesso.
Como é explorada
Com o setter de location em mãos, o atacante o aplica sobre a janela do PDF Viewer e injeta uma URI javascript: nesse contexto — que herda privilégios elevados por fazer parte do PDF.js embutido. A partir daí, o código injetado carrega um recurso local via esquema resource://, contexto que tem permissão de leitura de arquivo, e o conteúdo carregado fica acessível ao script do atacante. Não há execução arbitrária de código nativo: o ganho é leitura de arquivo e potencial escalonamento de privilégio dentro do próprio browser (acesso a janelas como about:home).
Versões
Como se proteger
Atualizar para Firefox 39.0.3, Firefox ESR 38.1.1 ou Firefox OS 2.2 corrige a falha — a correção removeu o registro do PlayPreview do PDF Viewer e ajustou XPConnect para não converter um 'expanded principal' herdando o principal do carregamento atual, entre outros patches (bugs 1178058 e 1179262). Distribuições Linux empacotaram o mesmo fix: RHEL via RHSA-2015:1581 (pacotes Firefox baseados em 38.1.1 ESR) e openSUSE via os avisos listados.
Como detectar
Segundo o próprio blog de segurança da Mozilla, o exploit observado 'não deixa rastro de que foi executado na máquina local' — não há artefato confiável de disco ou log local para confirmar exploração pós-fato. O único sinal prático é de rede/publicidade: consumo de anúncio malicioso servido por rede de ads em site legítimo, seguido de conexão de upload de arquivos para um servidor então identificado como hospedado na Ucrânia; não há IOC (domínio/IP) publicado de forma persistente para caça retroativa. Bloqueadores de anúncio podem ter impedido a entrega do payload em alguns casos, mas isso é incidental, não uma defesa garantida.