CVE-2012-0158 — MSCOMCTL.OCX RCE w dokumentach Office - Security Bez Tabu

CVE-2012-0158 — MSCOMCTL.OCX RCE w dokumentach Office

TL;DR

CVE‑2012‑0158 to klasyczna luka RCE w bibliotekach Windows Common Controls (ActiveX MSCOMCTL.OCX — m.in. kontrolki ListView/TreeView). Była masowo wykorzystywana poprzez złośliwe pliki RTF/DOC dostarczane e‑mailem; po otwarciu dokumentu dochodziło do wykonania kodu z uprawnieniami użytkownika. Microsoft załatał błąd w biuletynie MS12‑027 (2012‑04‑10), ale podatność pozostawała długo popularna w kampaniach APT i trafiła do katalogu CISA KEV. Dla SOC: monitoruj dzieci procesów Office (Word/Excel → cmd.exe/powershell.exe/wscript.exe), wymuś ASR „Block Office creating child processes”, blokuj/otwieraj w Protected View pliki RTF i egzekwuj aktualizacje.


Krótka definicja techniczna

Błąd stanowi przepełnienie bufora/pamięci w kontrolkach ActiveX (ListView, ListView2, TreeView, TreeView2) biblioteki MSCOMCTL.OCX. Specjalnie przygotowany dokument Office/RTF lub strona WWW może doprowadzić do zdalnego wykonania kodu (RCE) w kontekście ofiary (typowo przez osadzenie obiektu OLE/objocx w RTF).


Gdzie występuje / przykłady platform

  • Windows (stacje robocze z MS Office 2003/2007/2010) — główna powierzchnia ataku; komponent jest współdzielony z innymi produktami (np. SQL Server, BizTalk, Commerce Server).
  • M365/Exchange Online — wektor dostarczenia (załączniki); detekcja przez Defender for Office 365 (tabele EmailEvents, EmailAttachmentInfo w Advanced Hunting).
  • AD/Entra ID — kontekst tożsamości ofiary (późniejsze działania po przejęciu).
  • AWS/Azure/GCP — często hosting plików przynęt (S3/Blob/HTTP); przydatna telemetria z CloudTrail dla GetObject z nieznanych źródeł. [praktyka SOC]
  • Kubernetes/ESXi — nie dotyczy samej luki; możliwe tylko jako dalsze cele po kompromitacji użytkownika.

Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)

  • Mechanizm: złośliwy plik (najczęściej RTF) zawiera osadzony obiekt OLE z deklaracją kontrolki ActiveX (\object/\objocx). Renderowanie przez Worda wywołuje kod z biblioteki MSCOMCTL.OCX, co powoduje naruszenie pamięci i przekazanie sterowania attackerowi.
  • Skuteczność: wektor „zero‑click poza otwarciem” dla użytkownika (wystarczy otworzyć dokument), szeroko stosowany 2012‑2017; widoczny w wielu kampaniach, nawet po opublikowaniu łatki MS12‑027.
  • Łatki: MS12‑027 (10.04.2012) adresuje CVE‑2012‑0158 w Windows Common Controls; późniejszy MS12‑060 (08.2012) łata inną podatność w tej samej bibliotece (TabStrip, CVE‑2012‑1856), co podkreśliło potrzebę stałych aktualizacji.
  • Zagrożone produkty: Office 2003/2007/2010 oraz inne oprogramowanie korzystające z MSCOMCTL.OCX (m.in. SQL Server, Commerce Server, BizTalk, Visual Basic 6 runtime).

Artefakty i logi (co zbierać)

PlatformaŹródło danychZdarzenie/IDKluczowe pola / wzorceWskazówki analityczne
WindowsSysmonEID 1 (Process Create)ParentImage=WINWORD.EXE/EXCEL.EXE/POWERPNT.EXE + Image in (cmd.exe,powershell.exe,wscript.exe,mshta.exe,regsvr32.exe,rundll32.exe)Typowy łańcuch po eksploitacji dokumentu. Koreluj z CommandLine (URL, -enc, FromBase64String).
WindowsSysmonEID 7 (Image Loaded)ImageLoaded kończy się na \mscomctl.ocx przez WINWORD.EXERzadkie w zdrowych dokumentach; wzmacnia pewność analityki procesów.
WindowsSysmonEID 3 (Network Connect)Image=WINWORD.EXE lub dziecko → połączenia HTTP/HTTPSDokumenty przynęt często dociągały payloady; patrz hosty niesankcjonowane.
WindowsSecurityEvent ID 4688Procesy jak wyżej; NewProcessName, CreatorProcessNameAlternatywa dla środowisk bez Sysmon.
M365Defender for Office 365 (AH)tabele EmailEvents, EmailAttachmentInfoAttachmentFileType in (rtf, doc, docx); DetectionTechnology/ActionTypeTelemetria o załącznikach i kampaniach e‑mail; koreluj z host telemetry.
M365Unified Audit / MailItemsAccessedZdarzenia dostępu do wiadomościIP, klient, operacjaPomaga ocenić skalę kompromitacji skrzynek.
AWSCloudTrail (data events S3)GetObject, HeadObjectrequestParameters.key ~ `.(rtfdocx?)$, userAgent, sourceIPAddress`
Azure/GCP/K8s/ESXiNie dotyczy bezpośrednio luki; tylko kontekstowe telemetry (np. proxy, CASB).

Detekcja (praktyczne reguły)

Sigma (gotowa reguła)

title: Office Spawns Suspicious Child Process (CVE-2012-0158 Post-Ex)
id: 0b2c9c9a-5b6a-4a9b-b2d9-cc15e2150158
status: experimental
description: >
  Wykrywa aplikacje Office tworzące podejrzane procesy potomne
  (typowe po wykorzystaniu dokumentów, w tym CVE-2012-0158).
author: Badacz CVE
date: 2025/11/05
tags:
  - attack.t1203
  - attack.t1566.001
  - attack.t1204.002
  - cve.2012-0158
logsource:
  category: process_creation
  product: windows
detection:
  parent_office:
    ParentImage|endswith:
      - '\WINWORD.EXE'
      - '\EXCEL.EXE'
      - '\POWERPNT.EXE'
  suspicious_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
  condition: parent_office and suspicious_child
falsepositives:
  - legalne dodatki/deployment (udokumentowane wyjątki)
level: high

Splunk (SPL)

(index=endpoint OR index=sysmon)
(
  (sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational EventCode=1)
  OR (sourcetype=WinEventLog:Security EventCode=4688)
)
| eval ParentImage=coalesce(ParentImage, CreatorProcessName)
| eval Image=coalesce(Image, NewProcessName)
| search ParentImage IN ("*\\WINWORD.EXE","*\\EXCEL.EXE","*\\POWERPNT.EXE")
| search Image IN ("*\\cmd.exe","*\\powershell.exe","*\\wscript.exe","*\\cscript.exe","*\\mshta.exe","*\\rundll32.exe","*\\regsvr32.exe")
| stats count min(_time) as firstTime max(_time) as lastTime by host user ParentImage Image CommandLine ParentCommandLine
| where count>=1

KQL (Microsoft 365 Defender AH)

// Office -> suspicious child
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("WINWORD.EXE","EXCEL.EXE","POWERPNT.EXE")
| where FileName in~ ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","regsvr32.exe")
| project Timestamp, DeviceName, AccountName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessCommandLine
| order by Timestamp desc
// Word/Excel ładuje mscomctl.ocx (wzmacniacz hipotezy)
DeviceImageLoadEvents
| where InitiatingProcessFileName in~ ("WINWORD.EXE","EXCEL.EXE")
| where FolderPath endswith @"\mscomctl.ocx"

AWS CloudTrail — CloudWatch Logs Insights (S3 data events)

fields @timestamp, eventSource, eventName, requestParameters.bucketName as bucket, requestParameters.key as key, sourceIPAddress, userAgent
| filter eventSource = "s3.amazonaws.com" and eventName in ["GetObject","HeadObject"]
| filter key like /.*\.(rtf|doc|docx)$/i
| sort @timestamp desc
| limit 100

Elastic / EQL

process
where
  process.parent.name in ("WINWORD.EXE","EXCEL.EXE","POWERPNT.EXE") and
  process.name in ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","regsvr32.exe")

Heurystyki / korelacje (co łączyć)

  • Office → interpreter skryptów w krótkim interwale czasu + sieć (pobrania) = mocny sygnał post‑eksploatacyjny. (T1059 po T1203/T1204).
  • Skanowanie treści RTF pod kątem tokenów \object, \objocx, MSComctlLib.ListViewCtrl.2 (wskaźnik heurystyczny; niejednoznaczny).
  • Załączniki RTF/DOC w M365 (EmailAttachmentInfo) + DeviceProcessEvents (dzieci WINWORD.EXE).
  • Image load mscomctl.ocx przez Word + brak wcześniejszych makr/OLE w dokumencie → dodatkowy kontekst.
  • ASR: „Block all Office applications from creating child processes” — jeżeli trigger → wysoka wiarygodność.

False positives / tuning

  • Legalne wtyczki Office/rozwiązania DLP/drukarki wirtualne potrafią tworzyć procesy potomne; wprowadź allow‑listy podpisanych binariów i znanych ścieżek.
  • Środowiska developerskie (VBA, add‑ins) — filtruj zaufanych wydawców certyfikatów.
  • mscomctl.ocx może być ładowany także przez aplikacje legacy (VB6) — użyj dodatkowych warunków: parent=WINWORD/EXCEL, CommandLine z nietypowymi przełącznikami.
  • Na bramce pocztowej: samo wystąpienie \objocx w RTF to sygnał podejrzany, nie rozstrzygający (stosuj sandbox/MDO).

Playbook reagowania (IR)

  1. Izoluj hosta z alertu (EDR).
  2. Zabezpiecz artefakty: próbka pliku, prefetch, memoria, Process Tree, DeviceProcessEvents/DeviceImageLoadEvents.
  3. Weryfikacja aktualizacji (PowerShell; różne KB wg produktu z MS12‑027): Get-HotFix -Id KB2664258,KB2598039,KB2598041,KB2597112 -ErrorAction SilentlyContinue Get-ChildItem "C:\Windows\System32\MSCOMCTL.OCX","C:\Windows\SysWOW64\MSCOMCTL.OCX" -ErrorAction SilentlyContinue | Select FullName,@{n='FileVersion';e={$_.VersionInfo.FileVersion}} (Lista KB wg biuletynu MS12‑027 i wariantów produktowych).
  4. Łańcuch zdarzeń: wyszukaj inne hosty z tym samym załącznikiem (EmailEvents + SHA256 z EmailAttachmentInfo), a następnie koreluj z host telemetry.
  5. Blokady: dodaj hash/URL do blokady w MDO/EOP/Proxy; włącz/utwardź ASR „Block Office creating child processes”.
  6. Naprawa: wymuś instalację MS12‑027, a także późniejszych zbiorczych aktualizacji Office/Windows; wdroż Exploit Protection/DEP/ASLR.
  7. Komunikacja i hardening: włącz Protected View i File Block dla RTF w organizacji, zwłaszcza dla skrzynek o podwyższonym ryzyku.

Przykłady z kampanii / case studies

  • 2012 — pierwsza fala szerokich ataków z RTF/DOC; w RTF widoczne \objocx.
  • 2013 — analiza Kaspersky: RTF/DOC dla Office 2003/2007/2010; mimo łatki wciąż obserwowane infekcje.
  • 2016 — „Word bug that won’t die”: luki wciąż używane w realnych kampaniach phishingowych.
  • 2017 — kampanie przeciw organizacjom w Wietnamie, dokumenty polityczne, przypisywane m.in. 1937CN.
  • APT (MITRE) — np. Aoqin Dragon wykorzystywała CVE‑2012‑0158 do uzyskania wykonania.
  • CISA — CVE‑2012‑0158 w zestawieniach „Top Routinely Exploited” i w katalogu KEV.

Lab (bezpieczne testy) — przykładowe zadania

Uwaga: poniższe kroki nie zawierają exploitów ani makr ofensywnych; służą wyłącznie do weryfikacji detekcji.

Lab‑1: Heurystyka RTF w bramce/MDO

  1. Utwórz harmless.rtf zawierający nieszkodliwy tekst oraz nagłówek z ciągiem \object/\objocx (bez osadzania binariów OLE).
  2. Wyślij na skrzynkę testową M365 i sprawdź, czy polityki (MDO Safe Attachments/Sandbox) oraz reguły treści podnoszą alert/znacznik podejrzany.
  3. Koreluj EmailAttachmentInfo ↔ host telemetry (brak uruchomionych procesów wtórnych powinien dać „clean”).

Lab‑2: Analityka „Office → child process” (symulacja zachowania, bez dokumentu)

  1. Uruchom ręcznie Word, a następnie w tym samym czasie uruchom testowo powershell.exe -nop -c "Write-Host Test" (symulacja artefaktów procesowych bez łańcucha infekcji).
  2. Sprawdź, czy reguły Sigma/Splunk/KQL wyłapują przypadki dziecko procesu Office (w środowisku produkcyjnym zadziała to na realnych incydentach).
  3. W środowiskach z ASR, potwierdź, że reguła „Block Office creating child processes” blokuje podobny łańcuch.

Lab‑3: Telemetria mscomctl.ocx (obserwacja)

  • Monitoruj DeviceImageLoadEvents dla WINWORD.EXEmscomctl.ocx (zwykle pusto). To testuje pipeline logów i zapytania KQL, bez ryzyka.

Mapowania (Mitigations, powiązane techniki)

Mitigations (ATT&CK):

  • M1051 — Update Software: egzekwuj aktualizacje (MS12‑027 i późniejsze biuletyny Office/Windows).
  • M1042 — Disable or Remove Feature or Program: usuń starsze komponenty/formaty; blokuj RTF w File Block.
  • M1050 — Exploit Protection: włącz DEP/ASLR/Exploit Protection politykami.
  • M1017 — User Training: szkolenia anty‑phishing, higiena otwierania załączników.

Techniki pokrewne:

  • T1566.001 (Spearphishing Attachment) — nośnik.
  • T1204.002 (User Execution: Malicious File) — warunek powodzenia.
  • T1059 (Command and Scripting Interpreter) — post‑eksploatacja.

Źródła / dalsza literatura

  • Microsoft Security Bulletin MS12‑027 (MSCOMCTL.OCX RCE). (Microsoft Learn)
  • NVD/CVE wpisy szczegółowe. (NVD)
  • Blog Microsoft SRD o MS12‑027. (Microsoft)
  • McAfee: „CVE‑2012‑0158 exploit in the wild”. (McAfee)
  • Kaspersky: „The curious case of a CVE‑2012‑0158 exploit”. (Securelist)
  • Sophos: „The Word bug that just won’t die”. (Sophos News)
  • Fortinet: kampanie w Wietnamie (1937CN). (Fortinet)
  • CISA: KEV i „Top Routinely Exploited”. (CISA)
  • MITRE ATT&CK: T1203, T1566.001, T1204.002. (MITRE ATT&CK)
  • Attack Surface Reduction — „Block Office creating child processes”. (Microsoft Learn)
  • Exploit Protection (Windows). (Microsoft Learn)
  • MDO Advanced Hunting: EmailEvents, EmailAttachmentInfo. (Microsoft Learn)

Checklisty dla SOC / CISO (krótko)

SOC (operacyjnie):

  • Alerty na Office → interpreter (reguły z sekcji 7).
  • Korelacja MDO załącznikihost telemetry (hash, nadawca, kampania).
  • Watchlist domen/URL z kampanii; blokady w bramkach.
  • Raportowanie i „mass search” po mscomctl.ocx load (wzmocnienie hipotezy).
  • Retencja logów: min. 90 dni dla e‑mail + endpoint.

CISO (strategicznie):

  • Egzekwuj aktualizacje (M1051) i compliance na stacjach z Office.
  • ASR: włącz „Block Office creating child processes” dla ogółu, wyjątki per‑grupa.
  • Protected View / File Block dla RTF w całej organizacji.
  • Awareness (M1017): szkolenia, symulacje phishingu.
  • Testy kontrolne (purple team) — weryfikacja detekcji bez exploitów.

Jeden komentarz do “CVE-2012-0158 — MSCOMCTL.OCX RCE w dokumentach Office”

Możliwość komentowania została wyłączona.