CVE-2019-11708
Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.
Apply updates per vendor instructions.
Resumo
Falha de sandbox escape no Firefox e Thunderbird: o processo de conteúdo (sandboxed) pode enviar a mensagem IPC Prompt:Open ao processo pai (não sandboxed) com um parâmetro de URI insuficientemente validado, fazendo o pai abrir conteúdo web arbitrário escolhido pelo processo filho já comprometido. O CVSS 10.0 é enganoso: por si só, essa falha não dá execução remota de código — ela só importa depois que um atacante já obteve execução de código dentro do processo de conteúdo sandboxed via outra vulnerabilidade (ex.: um bug de motor JS). Foi usada em ataques reais, reportada pela Coinbase Security, e está no catálogo KEV da CISA.
Detalhamento técnico
O bug está no mecanismo de prompts do Firefox (Prompter.jsm), que usa a mensagem IPC 'Prompt:Open' para o processo de conteúdo pedir ao processo pai que abra uma janela de diálogo (ex.: caixas de autenticação HTTP ou seletor de arquivo). O parâmetro 'uri' dessa mensagem deveria assumir apenas dois valores fixos hardcoded no código (as strings dos XULs commonDialog/selectDialog), mas o processo pai não validava que o valor recebido do filho era realmente um desses dois. Isso é uma falha de CWE-20 (validação insuficiente de entrada): o processo pai, que roda sem as restrições do sandbox, confiava em um parâmetro totalmente controlável pelo processo filho já comprometido.
Segundo o report na Bugzilla, o código vulnerável foi introduzido em 2014 (bug 899648), junto com a chegada do e10s (multiprocess Firefox) — ou seja, praticamente toda versão com multiprocesso habilitado desde então trazia esse defeito, mesmo que só tenha sido corrigido em 2019. Um pesquisador demonstrou que bastava executar um script no Browser Content Toolbox simulando o processo de conteúdo para abrir documentos arbitrários no processo pai de forma confiável, incluindo via URIs data: ou blob:.
O que o atacante controla, uma vez com código executando no processo de conteúdo, é o valor do parâmetro 'uri' enviado na mensagem IPC — podendo apontar para qualquer conteúdo web, não apenas os dois diálogos internos esperados. Isso permite que o processo pai (fora do sandbox) carregue e processe esse conteúdo, dando ao atacante uma segunda superfície de ataque fora da caixa de restrições, o que é exatamente a definição de sandbox escape.
Como é explorada
A exploração exige, como pré-requisito, que o atacante já tenha conseguido executar código arbitrário dentro do processo de conteúdo sandboxed — normalmente via uma vulnerabilidade de corrupção de memória ou confusão de tipos no motor JavaScript, disparada por uma página web maliciosa. Sozinha, CVE-2019-11708 não é um vetor de comprometimento remoto: é o segundo elo de uma cadeia. Com código no processo filho, o atacante usa a API messageManager para enviar a mensagem Prompt:Open com um parâmetro de URI malicioso, fazendo o processo pai — que roda com privilégios do sistema do usuário e fora do sandbox — abrir esse conteúdo. Repetindo o processo de exploração original agora no contexto não-sandboxed, o atacante obtém execução de código fora das restrições do sandbox.
O caso documentado na Bugzilla e no advisory da Mozilla foi reportado pela equipe de segurança da Coinbase, e o próprio time do Mozilla registra que esse bug foi 'usado como o sandbox escape' em uma release de emergência ('chemspill'), indicando exploração real combinada com outra falha (o padrão histórico dessa dupla é uma vulnerabilidade de execução de código no motor JS do Firefox usada em conjunto com este escape). Existe PoC pública referenciada (Packet Storm, 'Mozilla Firefox Windows 64-Bit Chain Exploit'), reforçando que a exploração prática é uma cadeia de exploits, não um bug isolado explorável remotamente sem outra vulnerabilidade.
O impacto final, quando encadeado com sucesso, é execução arbitrária de código no computador do usuário, com os privilégios do processo do navegador — efetivamente comprometendo a máquina a partir de uma visita a página maliciosa, sem interação além de abrir a página.
Versões
Como se proteger
Atualizar para Firefox 67.0.4 ou superior, Firefox ESR 60.7.2 ou superior, e Thunderbird 60.7.2 ou superior corrige a falha na origem: o parâmetro 'uri' deixou de ser aceito do processo de conteúdo, substituído por um identificador do diálogo (nome, não URI). Distribuições como Gentoo empacotaram a correção em builds posteriores (ex.: firefox 60.8.0), que já incorporam esse e outros CVEs do mesmo lote.
Não há paliativo de configuração real: como o problema está na validação de uma mensagem IPC interna do próprio motor multiprocesso, não existe flag ou política que mitigue sem a correção de código. Desabilitar o e10s (multiprocess) não é mitigação válida — isso elimina a separação entre processo de conteúdo e processo pai, ou seja, remove o sandbox por completo, deixando o usuário mais exposto, não menos.
Como essa falha só tem impacto quando encadeada com uma vulnerabilidade de execução de código no processo de conteúdo (histórico documentado envolve bugs do motor JS do mesmo período, como os corrigidos nos mesmos boletins MFSA2019-19/20), manter o navegador atualizado contra todas as CVEs do lote é o controle mais efetivo — corrigir só o sandbox escape sem corrigir a falha de RCE inicial, ou vice-versa, deixa a cadeia intacta em versões antigas não patcheadas.
Como detectar
Não há assinatura de rede confiável: a mensagem Prompt:Open é uma comunicação IPC interna entre processos locais do navegador, não tráfego de rede observável. Em ambientes com EDR, o sinal indireto seria comportamento anômalo do processo do navegador (ex.: plugin-container/content process do Firefox/Thunderbird abrindo janelas ou spawnando processos filhos fora do padrão após navegação, ou o processo pai carregando conteúdo web inesperado) combinado com evidência de exploração do motor JS que precedeu o escape. Sem logs de aplicação detalhados do processo de conteúdo, detectar tentativas dessa cadeia especificamente é difícil; a defesa prática é patch, não detecção.