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

securitybeztabu.pl 8 godzin temu

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, choćby 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” — o ile 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 manualnie 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ź, iż reguła „Block Office creating child processes” blokuje podobny łańcuch.

Lab‑3: Telemetria mscomctl.ocx (obserwacja)

  • Monitoruj DeviceImageLoadEvents dla WINWORD.EXE → mscomctl.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łączniki host 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.
Idź do oryginalnego materiału