CVE-2009-3129: A Vulnerabilidade FEATHEADER do Excel Que Transformou Planilhas em Armas
Para entender essa vulnerabilidade, você precisa saber o que é um registro `FEATHEADER`. O formato de arquivo binário do Excel (`.
CVSS: 7.8/10 (HIGH)
Affected: cpe:2.3:a:microsoft:excel:2002:sp3:*:*:*:*:*:*; cpe:2.3:a:microsoft:excel:2003:sp3:*:*:*:*:*:*; cpe:2.3:a:microsoft:excel:2007:sp1:*:*:*:*:*:*; cpe:2.3:a:microsoft:excel:2007:sp2:*:*:*:*:*:*; cpe:2.3:a:microsoft:excel_viewer:-:sp1:*:*:*:*:*:*; cpe:2.3:a:microsoft:excel_viewer:-:sp2:*:*:*:*:*:*; cpe:2.3:a:microsoft:excel_viewer:2003:sp3:*:*:*:*:*:*; cpe:2.3:a:microsoft:office:2004:*:*:*:*:macos:*:*; cpe:2.3:a:microsoft:office:2008:*:*:*:*:macos:*:*; cpe:2.3:a:microsoft:open_xml_file_format_converter:*:*:*:*:*:macos:*:*
Available in English
CVE-2009-3129: A Vulnerabilidade FEATHEADER do Excel Que Transformou Planilhas em Armas
Abrir uma planilha que seu colega enviou por email deveria ser seguro. Em 2009, em praticamente todas as versões do Microsoft Excel existentes, não era — e tudo o que era necessário era um único registro malformado enterrado profundamente no formato de arquivo binário para dar a um atacante controle completo da sua máquina.
🎯 Impacto: Execução remota de código via arquivo .xls malicioso, sem autenticação necessária
🔓 Vetor de Ataque: Rede (entregue via email, web ou compartilhamento de arquivos)
💥 Exploração: Moderada — requer que o usuário abra o arquivo, nenhuma outra interação necessária
🛡️ Correção Disponível: Sim — MS09-067 (lançado em novembro de 2009)
⏱️ Aplique o Patch Agora: Apenas sistemas legados — aplique imediatamente se ainda estiver executando versões afetadas
O Que Realmente Está Acontecendo
O Registro FEATHEADER: Background Que Você Precisa Saber
Para entender essa vulnerabilidade, você precisa saber o que é um registro FEATHEADER. O formato de arquivo binário do Excel (.xls, o formato BIFF8) é estruturado como uma sequência de registros tipados, cada um com um código de tipo, um comprimento e um payload de dados. O registro FEATHEADER (0x0867) faz parte do mecanismo de "Shared Feature" do Excel — funciona como um cabeçalho para recursos como validação de lista, smart tags e proteção aprimorada. Pense nisso como um manifesto de funcionalidade opcional incorporada à planilha.
Dentro de FEATHEADER, há um campo chamado cbHdrData — um elemento de tamanho que diz ao parser quantos bytes de dados de cabeçalho seguem. É aqui que as coisas dão terrivelmente errado.
A Causa Raiz: Aritmética Que Você Não Pode Confiar
A vulnerabilidade é uma corrupção clássica de aritmética de ponteiros decorrente da validação ausente ou insuficiente do campo cbHdrData. Quando o Excel analisa o registro FEATHEADER, ele usa cbHdrData para calcular um deslocamento de ponteiro em sua própria memória — essencialmente fazendo algo conceitualmente equivalente a:
// Representação conceitual — NÃO é código-fonte real da Microsoft
void parse_featheader(uint8_t *record_data, size_t record_len) {
FEATHEADER *hdr = (FEATHEADER *)record_data;
// cbHdrData é controlado pelo atacante — sem verificação de limites aqui
uint16_t cbHdrData = hdr->cbHdrData;
// Aritmética de ponteiros com valor de tamanho não confiável
// Se cbHdrData for inválido, next_structure aponta para algo perigoso
void *next_structure = (uint8_t *)hdr + sizeof(FEATHEADER) + cbHdrData;
// O Excel então lê/escreve em next_structure — corrupção de memória
process_feature_data(next_structure);
}
O campo cbHdrData não é validado contra o comprimento real do registro restante antes de ser usado para calcular onde a próxima estrutura de dados vive na memória. Forneça um valor de tamanho inadequado ou elaborado e você redirecionou o ponteiro interno do Excel para uma região de memória controlada pelo atacante. As operações de escrita que seguem completam a corrupção.
Isso é um CWE-787 (Out-of-Bounds Write) em sua essência. A falha de design não é exótica — é o erro antigo de confiar em um campo de comprimento de entrada não confiável antes de verificar se faz sentido geométrico dentro do buffer circundante. A mesma classe de bug apareceu em praticamente todos os parsers de formato binário complexo já escritos, de leitores de PDF a mecanismos de fonte. Formatos binários que codificam "offset daqui" ou "tamanho do próximo chunk" sem validação independente são fábricas de vulnerabilidade perenes.
O que torna o formato BIFF particularmente traiçoeiro é sua extrema complexidade. BIFF8 define centenas de tipos de registro acumulados ao longo de décadas de desenvolvimento do Excel. Cada tipo de registro tem seu próprio parser, e a superfície de ataque é enormemente vasta. Um único erro em um desses centenas de parsers é tudo o que é necessário.
Caminho de Exploração
Veja como um atacante real teria weaponizado isso:
Pré-requisitos: Zero autenticação, zero acesso de rede ao alvo. A vítima apenas precisa abrir um arquivo. Em um ambiente corporativo, esse é uma barra trivialmente baixa.
A cadeia de ataque na prática:
- Criar um arquivo
.xlscom aparência válida com um registroFEATHEADERmalformado. O arquivo abre sem falha imediata — a corrupção acontece silenciosamente durante a análise. - Entregar via phishing com spear. "Q3 Budget Review.xls" anexado a um email de um endereço interno falsificado. As taxas de conversão neste método de entrega em 2009 eram alarmantemente altas.
- Disparar análise automaticamente quando o Excel carrega o arquivo. Nenhuma macro necessária, nenhum prompt "Enable Content" — isso dispara apenas da estrutura binária.
- Explorar o ponteiro corrompido para alcançar escritas controladas. Em 2009, sem ASLR obrigatório e DEP em versões mais antigas do Windows, transformar uma primitiva de escrita em execução de código era bem compreendido.
- Executar shellcode arbitrário sob o contexto do usuário conectado. No Windows XP (dominante em 2009), isso costumava ser administrador local.
O cenário de ataque do mundo real escreve a si mesmo: um membro da equipe de finanças recebe um "template de orçamento atualizado" do que parece ser o CFO. Um duplo clique e o atacante está dentro da rede corporativa.
Quem Realmente Está Em Risco
A lista de versões afetadas aqui é impressionante em sua amplitude. Isso não é uma questão de configuração de nicho — abrange:
- Excel 2002, 2003, 2007 (todas as variantes de service pack em uso na época)
- Office para Mac 2004 e 2008 — impacto multiplataforma, o que era mais raro então
- Excel Viewer — até o viewer apenas leitura simplificado era vulnerável
- Office Compatibility Pack — significando que até usuários que não tiveram feito upgrade completo para Office 2007 estavam expostos
Em 2009, isso era essencialmente toda a base de usuários do Excel instalada. Mas quem ainda deveria se preocupar hoje?
| Ambiente | Nível de Risco | Motivo |
|---|---|---|
| Windows XP/Vista fim-de-vida com Office legado | 🔴 Crítico | Sem patch, ASLR/DEP não enforçado |
| Ambientes industrial/OT com stacks de software congelados | 🔴 Crítico | Avesso a mudanças, frequentemente anos atrasados em patches |
| Office legado em Windows moderno (sem patch) | 🟠 Alto | Mitigação do SO, mas ainda vulnerável |
| Office moderno totalmente patchado | 🟢 Nenhum | Não afetado |
| Redes segregadas | 🟡 Médio | Risco de entrega menor, mas ameaça interna permanece |
Essa vulnerabilidade foi confirmada como explorada na natureza. Múltiplos atores de ameaça a incorporaram em kits de exploit e campanhas de phishing com spear através de 2010 e além. Setores industrial e governamental que executam stacks de software legado são a preocupação contínua — se você encontrar Excel 2003 SP3 em qualquer lugar em seu ambiente hoje, trate como uma descoberta crítica.
Detecção e Hunting
Detectar exploração dessa vulnerabilidade requer uma abordagem em camadas, uma vez que o gatilho é uma abertura passiva de arquivo.
O que procurar em seu SIEM/EDR:
excel.exeouexcelcnv.exegerando processos filho inesperados (cmd.exe, powershell.exe, wscript.exe)excel.exefazendo conexões de rede de saída para destinos não-Microsoft- Gravações de arquivo em
%TEMP%ou%APPDATA%por processos Office imediatamente após eventos de abertura de arquivo - Crashes do Excel seguidos de criação de novo processo (indicativo de tentativas de exploit instáveis)
Regra conceitual de detecção Sigma:
title: Suspicious Excel Child Process - Possible CVE-2009-3129 Exploitation
id: a3f9c1e2-XXXX-XXXX-XXXX-excel-featheader
status: experimental
description: >
Detects Excel spawning suspicious child processes, consistent with
exploitation of FEATHEADER memory corruption vulnerabilities.
logsource:
category: process_creation
product: windows
detection:
selection:
ParentImage|endswith:
- '\excel.exe'
- '\excelcnv.exe'
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\rundll32.exe'
- '\mshta.exe'
condition: selection
falsepositives:
- Legitimate macro-enabled workbooks that invoke shell commands
- DDE-based automation workflows
level: high
tags:
- attack.execution
- attack.t1203
- cve.2009-3129
IOCs em nível de arquivo: Arquivos .xls maliciosos explorando isso terão estrutura BIFF8 sintaticamente válida mas com registros FEATHEADER contendo valores cbHdrData que não correspondem ao comprimento real do registro. Assinaturas de antivírus capturando esse padrão específico têm sido confiáveis desde 2009, mas wrappers de entrega novel (ZIPs protegidos por senha, containers criptografados) ainda podem escapar da varredura baseada em assinatura.
Playbook de Mitigação
1. Imediato (faça isso agora se estiver em versões afetadas):
- Aplique MS09-067 — essa é a correção definitiva. Sem desculpas se você estiver em uma plataforma suportada.
- Se o patch estiver bloqueado por gerenciamento de mudanças, desabilite a abertura de arquivos
.xlsde fontes não confiáveis no nível do gateway de email.
2. Curto prazo se o patch estiver atrasado:
- Habilite Microsoft Office File Block via Group Policy para impedir que o Excel abra arquivos de formato BIFF4/BIFF8 de zonas não confiáveis.
- Use Protected View (Excel 2010+) — arquivos abertos de email ou internet são sandboxados e a análise ocorre em um contexto restrito.
- Implante EMET (em sistemas da era Windows 7/8) ou garanta que DEP e ASLR obrigatórios sejam enforçados em todo o sistema — isso não impede o bug mas torna a exploração confiável dramaticamente mais difícil.
3. Endurecimento de longo prazo:
- Elimine instalações legadas de Office do seu ambiente. Completamente.
- Implemente application allowlisting — se o Excel não puder gerar cmd.exe, o impacto pós-exploração é severamente restringido.
- Rotear todos os documentos do Office através de um ambiente de detonação sandboxado (baseado em nuvem ou on-prem) antes da entrega aos usuários finais.
- Desabilite macros e suporte a formato legado no nível de política se seu negócio não os exigir.
4. Verifique se você está protegido:
- Execute
winvere confirme o nível de patch do SO; faça referência cruzada com KB973471 (MS09-067). - Use um scanner de vulnerabilidade para confirmar a versão patchada do Excel está instalada.
- Teste o filtro do seu gateway de email com um arquivo
.xlscom padrão EICAR para confirmar que a varredura de anexo está ativa.
Minha Análise
O score CVSS de 7.8 é honestamente conservador para as condições que existiam em 2009. A classificação "High" é tecnicamente correta pelo rubrica — requer interação do usuário (abrindo um arquivo) o que coloca um teto no score. Mas na prática, conseguir um usuário abrir uma planilha é uma das barras de engenharia social mais baixas existentes. Em impacto do mundo real, isso era um caminho quase trivial para execução de código em praticamente toda a base de instalação do Excel. Se você ajustar pela probabilidade realista de exploração em um cenário de phishing corporativo, o risco efetivo é mais próximo de crítico.
O que essa vulnerabilidade ilustra é um modo de falha que a comunidade de segurança conhece há décadas e continua redescubrindo: parsers de formato binário complexo são pesadelos de confiabilidade e segurança. O formato BIFF foi projetado em uma era quando "confiar no arquivo" era a suposição padrão. Campos de comprimento não eram entradas adversariais — eram apenas dados. Essa suposição se embutiu em milhares de linhas de código do parser em toda a base de código do Office, e bugs como esse foram o resultado previsível. A mudança para OOXML (.xlsx) como formato padrão no Office 2007 foi genuinamente uma melhoria de segurança, mesmo que tenha introduzido sua própria superfície de ataque.
A lição mais ampla para a comunidade de segurança é sobre débito de software legado. Essa vulnerabilidade foi patchada em novembro de 2009. Ainda assim, eu seria genuinamente não surpreso encontrá-la sem patch em sistemas adjacentes a SCADA, workstations incorporadas em ambientes de manufatura, ou no laptop de um diretor de finanças que "nunca precisou fazer upgrade". A vulnerabilidade é antiga. O risco, em certos ambientes, ainda está presente. Quando você está fazendo um inventário de ativos, Excel 2003 em qualquer máquina deveria ser tratado como uma descoberta crítica — não por nostalgia, mas porque atores de ameaça sabem exatamente onde encontrar superfície de ataque desmanutida.
Timeline
| Data | Evento |
|---|---|
| 2009 (estimado) | Vulnerabilidade identificada, provavelmente através de exploração ativa ou pesquisa de segurança |
| 2009-10-13 | Microsoft reconhece a vulnerabilidade antes do lançamento do patch |
| 2009-11-10 | MS09-067 lançado como parte de November Patch Tuesday — corrige Excel 2002 até 2007 e viewers relacionados |
| 2009-11-10 | CVE-2009-3129 publicamente divulgado via Microsoft Security Bulletin |
| 2010 em diante | Exploração observada em ataques direcionados; incorporada em campanhas de phishing com spear |
Referências
- CVE-2009-3129 — NVD Entry — Entrada oficial de banco de dados de vulnerabilidade NIST com pontuação CVSS
- MS09-067 — Microsoft Security Bulletin — Boletim de patch do fornecedor definitivo para essa e vulnerabilidades relacionadas do Excel
- CWE-787: Out-of-Bounds Write — Classificação MITRE da classe de fraqueza subjacente
- BIFF8 File Format Documentation — Especificação da Microsoft para o formato binário afetado (leitura essencial para entender a superfície de ataque)
- MITRE ATT&CK T1203 — Exploitation for Client Execution — Contexto do framework de ameaça para essa classe de ataque