CVE-2020-6819
Prioriza la corrección. Ella está bajo explotación confirmada por CISA.
Declaraciones oficiales de los fabricantes en formato CSAF/VEX: si su producto está afectado, ya corregido o descartado — y por qué. Es afirmación del fabricante, no juicio de Vexday.
Apply updates per vendor instructions.
Resumen
Use-after-free na destruição do objeto nsDocShell do motor Gecko, explorável por uma página web maliciosa sem qualquer interação adicional da vítima além de visitá-la. A Mozilla confirmou exploração em ataques direcionados já no momento da divulgação (abril/2020), o que levou a CISA a incluir a falha no catálogo KEV. A alta complexidade de ataque (condição de corrida) explica por que, apesar do CVSS 8.1 e da exploração confirmada, ela não gerou uma onda massiva de exploração em campanhas genéricas — foi usada de forma cirúrgica.
Detalle técnico
A falha está em docshell/base/nsDocShell.cpp, no método SynchronizeLayoutHistoryState, chamado a partir de nsDocumentViewer::Close durante a destruição de nsDocumentViewer, que por sua vez é liberado no destructor de nsDocShell (~nsDocShell). O problema é classificado como CWE-362 (condição de corrida) que degenera em CWE-416 (use-after-free): sob certas sequências de eventos, o destructor de nsDocShell é executado enquanto outro fluxo do código ainda mantém uma referência a estruturas internas do docshell (como o histórico de layout), causando leitura de memória já liberada.
O relatório original (Bugzilla 1620818) veio de um crash detectado por AddressSanitizer/fuzzing, sem reprodutor determinístico à época — sinal de que o gatilho depende de timing específico do coletor de ciclos do Firefox (cycle collector / SnowWhiteKiller), que finaliza objetos nsDocShell de forma assíncrona. O atacante não controla diretamente ponteiros ou payloads; ele controla o conteúdo e comportamento da página (navegação, criação/destruição de contextos de documento) para tentar forçar a janela de corrida entre a liberação do content viewer e o acesso subsequente ao estado de histórico de layout.
A correção da Mozilla envolveu dois patches: um ajustando o tratamento correto do destructor para as variáveis-membro de nsDocShell, e outro corrigindo a liberação apropriada de nsDocShell::mContentViewer — ou seja, o fix foi estrutural na gestão de ciclo de vida desses objetos, não um simples null-check pontual.
Cómo se explota
Vetor: página web (ou e-mail HTML processado pelo motor Gecko, no caso do Thunderbird) que a vítima abre em um contexto de navegação. Não exige autenticação, privilégio elevado nem configuração não padrão — daí AV:N e UI:N no vetor CVSS. A complexidade de ataque é alta (AC:H) porque o atacante precisa induzir uma sequência de eventos de navegação/destruição de docshell que vença a corrida entre threads do processo de conteúdo; isso normalmente demanda um exploit de UAF construído com técnicas de heap grooming para tornar a corrida confiável, e adaptação por versão/build do Firefox.
A Mozilla declarou estar "ciente de ataques direcionados in the wild abusando desta falha", junto com a CVE-2020-6820 (UAF em ReadableStream), corrigida no mesmo advisory — ambas reportadas pelos mesmos pesquisadores (Francisco Alonso e Javier Marcos/JMPSec). O padrão — duas UAFs críticas corrigidas simultaneamente, exploração confirmada, patch fora do ciclo normal de release (74.0.1, ESR 68.6.1) — é característico de correção de emergência após detecção de uma campanha ativa, não de achado por bug bounty comum.
A CISA adicionou a CVE ao KEV apenas em 2021-11-03 (bem depois da divulgação original), com prazo de correção 2022-05-03, o que reflete o processo de catalogação retroativa da agência e não uma nova onda de exploração. Não há indicação pública de que o exploit tenha sido reaproveitado em campanhas amplas após a correção — o padrão descrito é de uso direcionado antes do patch.
Versiones
Cómo protegerse
A mitigação real é atualizar: Firefox para 74.0.1 ou superior, Firefox ESR para a linha 68.6.1 ou superior, e Thunderbird para 68.7.0 ou superior. Como o bug está no gerenciamento de memória interno do motor de navegação (docshell), não existe flag, preferência (about:config) ou configuração de rede que neutralize a condição de corrida — é falha de implementação em C++, não de política de segurança configurável.
Se a atualização imediata não for viável (parque grande, builds ESR corporativos em homologação), o único controle compensatório com efeito real é reduzir a exposição a conteúdo não confiável no motor vulnerável: isolar navegação a sites não confiáveis em outro navegador/processo já corrigido, ou restringir o uso do cliente vulnerável a ambientes sem acesso à web aberta. Isso não é uma mitigação documentada pelo fornecedor, é redução de superfície de ataque — trate como paliativo temporário, não como correção.
Não há mito relevante de "desabilitar JavaScript resolve" documentado pela Mozilla para esta CVE especificamente; a cadeia de destruição do docshell pode ser acionada por navegação comum entre documentos, não exclusivamente por script, então essa mitigação não tem confirmação de eficácia e não deve ser assumida como suficiente.
Cómo detectar
Não há assinatura de rede ou payload característico a procurar — a exploração ocorre inteiramente client-side, dentro do processo de conteúdo do navegador/cliente de e-mail, sem tráfego distintivo além do acesso à página maliciosa em si (que pode ser indistinguível de navegação legítima). O sinal mais próximo disponível é comportamento anômalo do processo de conteúdo: crashes repetidos ou fechamento abrupto de abas/processos do Firefox/Thunderbird associados a sites ou mensagens específicas, especialmente em relatórios de crash (about:crashes) mencionando nsDocShell, SynchronizeLayoutHistoryState ou nsDocumentViewer::Close. Nenhuma fonte consultada disponibiliza IOCs, hashes ou domínios associados à campanha original de exploração direcionada.