Aller au contenu

CVE-2009-0238 : Exécution de Code à Distance dans Microsoft Excel

La vulnérabilité réside dans la manière dont Microsoft Excel traite les références d’objets internes. Lors de l’analyse (parsing) d’un fichier de feuille de calcul, l’application ne parvient pas à valider correctement l’état d’un objet avant d’y accéder. Cela conduit à une condition de corruption mémoire, très probablement un Use-After-Free (UAF) ou un Null Pointer Dereference (déréférencement de pointeur nul), où l’application tente d’exécuter une logique basée sur un pointeur ne pointant plus vers un objet valide.

Lorsqu’un fichier .xls ou .xlsx malveillant est ouvert, les données contrôlées par l’attaquant peuvent rediriger le flux d’exécution vers un shellcode intégré au document. Comme l’exécution du code se produit dans le contexte du processus excel.exe, l’attaquant hérite des permissions de l’utilisateur connecté.

  1. Livraison : L’attaquant livre un document Excel malveillant via des emails de phishing (approche classique de Trojan.Mdropper.AC).
  2. Déclencheur : La victime ouvre le fichier. Excel commence à analyser la structure du classeur.
  3. Corruption : La référence d’objet malformée déclenche une violation d’accès sur une adresse mémoire invalide.
  4. Détournement : Via du heap spraying ou une manipulation précise de la disposition de la mémoire, l’exécution est redirigée vers le shellcode de l’attaquant.
  5. Payload : Le shellcode lance généralement un reverse shell ou télécharge un dropper de second stade.

D’un point de vue forensique, l’exploitation de la CVE-2009-0238 laisse plusieurs marqueurs distincts.

L’indicateur le plus immédiat est l’apparition de processus enfants anormaux issus du processus Excel. Dans un environnement d’entreprise standard, excel.exe ne devrait pas initier de commandes shell.

  • Indicateur Critique : excel.exe $\rightarrow$ cmd.exe
  • Indicateur Critique : excel.exe $\rightarrow$ powershell.exe
  • Analyse Mémoire : Recherche de patterns de shellcode (ex: NOP sleds) dans l’espace mémoire de excel.exe.
  • Analyse de Logs : Examen de l’Observateur d’événements Windows pour les plantages d’applications. Rechercher l’ID d’événement 1000 (Application Error) où le module fautif est excel.exe et le code d’exception est 0xc0000005 (Access Violation).
  • Système de Fichiers : Identifier l’origine du fichier malveillant. Vérifier les clés de registre Recent Items et Office Recent Files pour confirmer le chemin du classeur.

La règle suivante détecte l’exécution de shells par Excel, un indicateur de haute fidélité pour une RCE.

title: Microsoft Excel Remote Code Execution (CVE-2009-0238)
id: 12345678-1234-1234-1234-1234567890ab
description: Detects suspicious child processes spawned by excel.exe
logsource:
category: process_creation
product: windows
detection:
selection:
ParentImage|contains: 'excel.exe'
Image|contains: 'cmd.exe'
selection_ps:
ParentImage|contains: 'excel.exe'
Image|contains: 'powershell.exe'
condition: selection or selection_ps
falsepositives:
- Legitimate Excel macros triggering shell commands (rare in secured environments)
level: critical
index=logs sourcetype=WinEventLog:Security EventCode=4688 ParentProcessName="*excel.exe" (NewProcessName="*cmd.exe" OR NewProcessName="*powershell.exe")

Patching

Installer le bulletin de sécurité Microsoft MS09-009. C’est la seule correction définitive.

Réduction de la Surface d'Attaque

Désactiver le DDE (Dynamic Data Exchange) et restreindre l’exécution des macros via les stratégies de groupe (GPO).

Filtrage Emails

Bloquer ou sandboxer les pièces jointes suspectes avec extensions .xls ou .xlsx provenant d’expéditeurs non approuvés.