← back
CVE-2009-3129highunder attackCWE-787

CVE-2009-3129

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA, has a working public exploit and 1 threat group(s) use it.

ssvc Actcvss 7.8epss 86%
from disclosure to weapon283 days
Published on NVDNov 11
1st PoC+283d
metasploitNov 10
CISA KEV+4495d
exploitation probability
86%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
1 group(s)3 public exploit(s)
Who exploits it1

Groups known to exploit this vulnerability (MITRE ATT&CK attribution).

Action required by CISAfederal deadline: 2022-03-24

Apply updates per vendor instructions.

Summary

Falha de corrupção de memória no parser de arquivos binários (BIFF) do Microsoft Excel, disparada por um registro FEATHEADER (tag 0x867) com o campo cbHdrData manipulado para um valor inválido, que é usado no cálculo de um deslocamento de ponteiro. Abrir uma planilha .xls maliciosa é suficiente para execução de código arbitrário no contexto do usuário logado. É item do catálogo KEV da CISA e tem exploit público e módulo Metasploit, mas a superfície real hoje é pequena: afeta apenas versões de Office já fora de suporte há mais de uma década.

Technical detail

A vulnerabilidade está no parser do formato binário legado do Excel (BIFF8), especificamente no tratamento do registro 'Shared Feature Header' (FEATHEADER, tag 0x867). Esse registro tem um campo de tamanho, cbHdrData, que descreve quantos bytes de dados adicionais seguem. O código de leitura usa esse valor para calcular o deslocamento (offset) de um ponteiro dentro do buffer que representa o registro.

Quando o cbHdrData é definido com um valor inconsistente com o tamanho real dos dados no arquivo, o cálculo do offset produz um ponteiro fora dos limites esperados. O atacante controla diretamente esse valor porque ele é lido do próprio arquivo, sem validação de faixa contra o tamanho real do buffer. O resultado é uma escrita ou leitura de memória fora dos limites (memória corrompida), que pode ser transformada em execução de código controlado pelo atacante através de um payload cuidadosamente construído no restante do arquivo.

A CISA classifica a entrada no KEV sob CWE-94 (Code Injection), mas a mecânica descrita pelo próprio fornecedor e pela ZDI (que reportou a falha sob ZDI-CAN-587) é de corrupção de memória por deslocamento de ponteiro inválido — mais alinhada a um problema clássico de leitura/escrita fora dos limites do que a injeção de código em sentido estrito.

A vulnerabilidade foi originalmente descoberta por Sean Larsson e reportada ao fornecedor via Zero Day Initiative (ZDI-09-083) em 20/10/2009, com divulgação coordenada em 10/11/2009, coincidindo com o lançamento do boletim MS09-067.

How it’s exploited

O vetor é client-side: o atacante entrega um arquivo .xls malformado (tipicamente por e-mail ou download) e depende de interação do usuário para abri-lo no Excel vulnerável. Não há componente de rede a explorar remotamente sem essa abertura manual — por isso o vetor CVSS é AV:L (local), apesar de a entrega ser 'remota' no sentido de vir de um atacante externo. Não é necessária autenticação nem configuração fora do padrão; qualquer instalação afetada que abra o arquivo está exposta.

Existe exploit público (exploit-db 14706) que gera um arquivo .xls com o registro FEATHEADER malformado, embutindo shellcode para abrir cmd.exe via WinExec — prova de conceito funcional testada contra Excel 2003/2007 em Windows XP SP2. Há também módulo Metasploit disponível, o que reduz a complexidade de reprodução para quem já tem o arquivo malicioso e precisa apenas adaptar o payload.

A presença no catálogo KEV da CISA confirma exploração ativa histórica, mas a data de inclusão (2022-03-03) é muito posterior à divulgação original (2009), refletindo o padrão da CISA de catalogar vulnerabilidades antigas ainda usadas em campanhas oportunistas contra sistemas não corrigidos, não necessariamente exploração ativa contínua e generalizada hoje.

Versions

Affected
Microsoft Office Excel 2002 SP3; Office Excel 2003 SP3; Office Excel 2007 SP1 e SP2; Microsoft Office 2004 for Mac; Microsoft Office 2008 for Mac; Open XML File Format Converter for Mac; Microsoft Office Excel Viewer 2003 SP3; Microsoft Office Excel Viewer SP1 e SP2; Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats SP1 e SP2.
Fixed in
Corrigido pelo boletim MS09-067 (KB972652), via os pacotes específicos por produto: KB973471 (Excel 2002 SP3), KB973475 (Excel 2003 SP3), KB973593 (Excel 2007 SP1/SP2 — requer também KB973704), KB976830 (Office 2004 for Mac), KB976828 (Office 2008 for Mac), KB976831 (Open XML File Format Converter for Mac), KB973484 (Excel Viewer 2003 SP3), KB973707 (Excel Viewer SP1/SP2) e KB973704 (Office Compatibility Pack SP1/SP2). Este boletim substitui o MS09-021 anterior.

How to protect

A correção oficial é o boletim MS09-067 (10/11/2009), que altera a forma como o Excel analisa registros malformados no formato binário. Os pacotes por produto: KB973471 (Excel 2002 SP3), KB973475 (Excel 2003 SP3), KB973593 (Excel 2007 SP1/SP2), KB976830 (Office 2004 for Mac), KB976828 (Office 2008 for Mac), KB976831 (Open XML File Format Converter for Mac), KB973484 (Excel Viewer 2003 SP3), KB973707 (Excel Viewer SP1/SP2) e KB973704 (Office Compatibility Pack para Word/Excel/PowerPoint 2007 SP1/SP2). Importante: para Excel 2007 SP1/SP2, o KB973593 por si só não protege completamente — o boletim exige também a instalação do KB973704 (atualização do Compatibility Pack) para cobrir os mesmos formatos de arquivo.

Como paliativo real na ausência de patch, o próprio boletim aponta que, após corrigido, o Excel passa a rejeitar/travar ao encontrar o registro malformado em vez de executar código — ou seja, não há flag de configuração que desative o parser vulnerável sem quebrar a leitura de arquivos .xls legítimos. Bloqueio de anexos .xls de origem não confiável em gateways de e-mail, ou forçar abertura em modo de visualização protegida (Protected View, disponível em versões mais recentes do Office) reduz a superfície, mas não elimina a falha em versões desatualizadas.

O que não funciona: como o vetor exige apenas abrir o arquivo localmente, controles de rede (firewall, segmentação) não mitigam o risco — a única defesa efetiva é a atualização do software ou a remoção/isolamento do componente vulnerável (versões de Office 2002/2003/2007 e Mac 2004/2008, hoje todas fora do ciclo de suporte, deveriam ser substituídas por versões atuais, não apenas patcheadas).

How to detect

O indicador mais concreto é a presença, em um arquivo .xls (formato BIFF), de um registro FEATHEADER (tag 0x867) cujo campo cbHdrData não corresponde ao tamanho real dos dados que seguem no registro — isso pode ser verificado por ferramentas de parsing/análise estática de OLE/BIFF ou por regras de assinatura em antivírus/EDR que já reconhecem o padrão do exploit público (exploit-db 14706) e do módulo Metasploit correspondente.

Como o vetor é local (abertura de arquivo, sem tráfego de rede associado à exploração em si), não há sinal confiável de rede a monitorar; a detecção depende de inspeção de anexos/downloads em gateways de e-mail ou de telemetria de endpoint mostrando o Excel travando ou executando processos filhos inesperados (ex.: cmd.exe) imediatamente após abrir um documento .xls externo.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
Microsoft Office Excel 2002 SP3, 2003 SP3, and 2007 SP1 and SP2; Office 2004 and 2008 for Mac; Open XML File Format Converter for Mac; Office Excel Viewer 2003 SP3; Office Excel Viewer SP1 and SP2; and Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats SP1 and SP2 allows remote attackers to execute arbitrary code via a spreadsheet with a FEATHEADER record containing an invalid cbHdrData size element that affects a pointer offset, aka "Excel Featheader Record Memory Corruption Vulnerability."
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Affected products
n/a · n/a
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.