CVE-2020-9715
Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.
Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
Resumo
Use-after-free no módulo EScript.api do Adobe Acrobat e Reader, no cache de objetos ESObject usados para representar arquivos embutidos (data objects) em PDFs com JavaScript. A exploração exige que a vítima abra um PDF malicioso, mas quando isso ocorre o atacante ganha execução de código arbitrário no contexto do processo do Acrobat/Reader — daí estar no catálogo KEV da CISA com exploração confirmada.
Detalhamento técnico
A falha (CWE-416) está no mecanismo de cache do EScript.api, o módulo que embute um interpretador JavaScript baseado no SpiderMonkey da Mozilla dentro do Acrobat/Reader para processar JavaScript incorporado em PDFs. Objetos internos chamados data ESObject representam arquivos embutidos e streams de dados, e são indexados num cache (implementado como uma árvore binária de busca) por uma cache_key composta por um ponteiro para o PDDoc e o nome do arquivo embutido, armazenado como string ANSI ou Unicode conforme o PDF original.
O bug está na inconsistência de codificação entre inserção e remoção: quando um data ESObject é criado, a cache_key mantém a codificação original do nome (ANSI ou Unicode). Quando um data ESObject é removido/liberado, a cache_key usada na remoção é sempre gerada com o nome em Unicode. Resultado: entradas de cache cujo nome era ANSI nunca são efetivamente purgadas — o ponteiro para o objeto liberado permanece na árvore indefinidamente.
Se o atacante controla o JavaScript embutido no PDF e faz algo equivalente a apagar e reacessar um objeto (por exemplo `this.dataObjects[0]` deletado e depois acessado), uma busca subsequente por um nome ANSI produz um cache hit contra a entrada obsoleta, retornando um ponteiro para um data ESObject já liberado. O código então opera sobre esse objeto, gerando um use-after-free clássico. O atacante controla o nome do objeto embutido, a sequência de criação/exclusão via JavaScript do PDF, e — em cenários de exploração mais avançados — pode manipular o heap para realocar dados controlados no espaço de memória liberado, viabilizando execução de código.
Como é explorada
O vetor é um arquivo PDF malicioso contendo JavaScript incorporado que manipula o ciclo de vida de data ESObjects (via API `dataObjects` do Acrobat JavaScript) para forçar a condição de use-after-free. A CVSS marca AV:L porque a exploração se dá localmente no processo que abre o arquivo — não há exploração remota direta via rede, mas o arquivo pode chegar por e-mail, download ou visualização em navegador via plugin do Acrobat. UI:R é obrigatório: a vítima precisa abrir o documento (ou visitar a página que o carrega).
Não há necessidade de autenticação nem de configuração não padrão no Acrobat/Reader — o JavaScript embutido em PDF é processado por padrão nas versões afetadas. A complexidade de exploração vai além de simplesmente disparar o UAF: para chegar a execução de código confiável é necessário controlar o heap para colocar dados atacante-controlados no lugar do objeto liberado, o que pesquisadores (Exodus Intelligence, reproduzindo a cadeia documentada pela ZDI) descreveram em detalhe técnico, sem publicar exploit funcional completo.
O CVE está no catálogo KEV da CISA, confirmando exploração ativa observada, e existe PoC pública. O resultado final documentado é execução de código arbitrário no contexto do processo do Acrobat/Reader — não escalonamento de privilégio de sistema por si só, mas suficiente como estágio inicial de comprometimento de endpoint.
Versões
Como se proteger
A Adobe corrigiu a falha através do boletim APSB20-48 (agosto de 2020), cobrindo as linhas Continuous (2020.x), Classic 2017 e Classic 2015. Atualizar para a versão corrigida correspondente à sua linha de suporte é a mitigação real; não temos, nas fontes consultadas, os números de build exatos citados no boletim, então a recomendação é verificar diretamente o APSB20-48 e aplicar a versão mínima indicada para sua linha antes de considerar o ambiente corrigido.
Se a atualização imediata não for viável, o paliativo prático é desabilitar a execução de JavaScript no Acrobat/Reader (em Editar > Preferências > JavaScript, desmarcando 'Enable Acrobat JavaScript'), já que o vetor depende inteiramente de JavaScript embutido em PDF. Isso reduz funcionalidade de formulários e PDFs interativos que dependem de scripts, então tem custo funcional real em ambientes que usam esses recursos.
Abrir PDFs apenas em visualizadores sem motor JavaScript embutido, ou em sandbox/isolamento, reduz a superfície, mas não é substituto para o patch. Filtro de e-mail/gateway que bloqueia anexos PDF de remetentes não confiáveis ajuda a reduzir a entrega do vetor, mas não elimina o risco se o usuário obtiver o arquivo por outro canal.
Como detectar
Não há assinatura de rede confiável, já que a exploração ocorre localmente dentro do processo do Acrobat/Reader ao processar um PDF. Sinais indiretos incluem: PDFs recebidos por e-mail ou download contendo JavaScript que manipula o array `this.dataObjects` (criação seguida de exclusão e novo acesso ao mesmo índice/nome), crashes do processo Acrobat.exe/AcroRd32.exe com falha atribuída ao módulo EScript.api, e alertas de EDR para corrupção de heap ou exceções de acesso inválido nesse mesmo módulo. Sandboxes de análise de PDF que registram chamadas à API JavaScript do Acrobat podem capturar o padrão de criação/exclusão anômala de data objects como indicador.