CVE-2009-3129
Patch now. It under exploitation confirmed by CISA, has a working public exploit and 1 threat group(s) use it.
Groups known to exploit this vulnerability (MITRE ATT&CK attribution).
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
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.