CVE-2009-0927
Corrija agora. Ela está sob exploração confirmada pelo CISA, tem exploit funcional público e 1 grupo(s) de ameaça a utilizam.
Grupos conhecidos por explorar esta vulnerabilidade (atribuição MITRE ATT&CK).
Apply updates per vendor instructions.
Resumo
Buffer overflow baseado em pilha no Adobe Reader e Acrobat 9, causado pelo método getIcon() de um objeto Collab acessível via JavaScript embutido em PDF. A falha permite execução de código arbitrário com os privilégios do usuário que abre o arquivo, e foi explorada ativamente como 0-day antes da correção — está no catálogo KEV da CISA e tem módulo Metasploit e PoC pública, o que a torna crítica mesmo mais de uma década depois em qualquer instalação legada ainda em uso.
Detalhamento técnico
A vulnerabilidade (CWE-121, stack-based buffer overflow) está no parser JavaScript embutido no motor de renderização de PDF do Acrobat/Reader. O objeto Collab expõe o método getIcon(), que recebe um argumento controlado pelo script contido no documento. O código não valida corretamente o tamanho/conteúdo desse argumento antes de copiá-lo para um buffer de tamanho fixo na pilha, permitindo que dados excedentes sobrescrevam o frame de retorno.
O atacante controla integralmente o conteúdo do argumento passado a getIcon(), o que dá controle sobre os bytes que sobrescrevem a pilha — condição suficiente para desviar o fluxo de execução para shellcode injetado via heap spray, técnica comum em exploits de PDF dessa era. A ZDI (crédito à Tenable Network Security) reportou a falha ao fornecedor em julho de 2008, quase oito meses antes da divulgação coordenada em março de 2009, o que sugere ciclo de correção incomum longo para o padrão da época.
A CVE é distinta da CVE-2009-0658 (falha em util.printf da mesma família de produtos), reforçando que o Acrobat/Reader daquele período tinha múltiplos pontos de overflow independentes na API JavaScript exposta a conteúdo não confiável embutido no PDF.
Como é explorada
O vetor é um arquivo PDF malicioso contendo JavaScript que instancia um objeto Collab e chama getIcon() com um argumento craftado para provocar o overflow. Não há exigência de autenticação nem de configuração não padrão: basta que o usuário abra o PDF (ou que o navegador o renderize via plugin) com JavaScript habilitado no Acrobat/Reader — condição que era o padrão de fábrica na época. A interação do usuário (abrir o arquivo) é o único pré-requisito de UI, consistente com o vetor AV:N/UI:R do CVSS.
Na prática, campanhas de exploração observadas em 2009 distribuíram PDFs armados por e-mail (spam/phishing) e por download em sites comprometidos, geralmente combinando o overflow com heap spray em JavaScript para pousar o shellcode de forma confiável antes do desvio de fluxo. O resultado bem-sucedido é execução de código arbitrário no contexto do usuário logado — download e execução de payload secundário era o padrão observado nas campanhas da época.
A presença no catálogo KEV da CISA confirma exploração ativa documentada, e a disponibilidade de módulo Metasploit e PoC pública elimina qualquer barreira técnica para reprodução hoje — qualquer sistema que ainda rode uma versão vulnerável do Acrobat/Reader é alvo trivial para quem já tenha o exploit em mãos.
Versões
Como se proteger
A correção definitiva é atualizar para as versões corrigidas pelo boletim Adobe APSB09-04: Acrobat/Reader 9.1, 8.1.3 ou 7.1.1, conforme o ramo em uso. Não há paliativo de configuração que elimine o vetor sem custo funcional: desabilitar a execução de JavaScript no Acrobat/Reader (opção disponível nas preferências do produto) bloqueia a cadeia de exploração, já que o overflow depende de script para instanciar o objeto Collab e chamar getIcon(), mas isso quebra formulários e recursos interativos legítimos que dependem de JS em PDF.
Gateways de e-mail e web que fazem sanitização ou bloqueio de PDFs com JavaScript embutido reduzem a superfície de ataque como controle compensatório em ambientes que não podem atualizar imediatamente, mas não é proteção equivalente ao patch — PDFs sem JS ainda podem carregar outras cadeias de exploração não relacionadas a esta CVE.
Não funciona como mitigação: apenas atualizar o Adobe Reader sem verificar se instalações paralelas de Acrobat (comum em ambientes corporativos com os dois produtos) também foram corrigidas — ambos compartilham o motor vulnerável e precisam de patch independente.
Como detectar
O sinal mais direto é a presença, dentro de um arquivo PDF, de JavaScript que instancia um objeto Collab e invoca getIcon() com um argumento anormalmente longo ou não-string — assinaturas de gateway de e-mail/web e de antivírus da época miravam esse padrão especificamente. Ferramentas de análise estática de PDF que extraem e decodificam streams JavaScript (incluindo os ofuscados/comprimidos via FlateDecode) permitem inspecionar chamadas a getIcon() antes da renderização.
Em nível de host, indícios de exploração incluem o processo do Acrobat/Reader gerando processos filho inesperados ou conexões de rede de saída logo após a abertura de um PDF recebido por e-mail ou download — não há assinatura de rede confiável, já que o exploit atua inteiramente no parsing local do documento, não em tráfego de rede.