
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ć)
| Windows | Sysmon | EID 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). |
| Windows | Sysmon | EID 7 (Image Loaded) | ImageLoaded kończy się na \mscomctl.ocx przez WINWORD.EXE | Rzadkie w zdrowych dokumentach; wzmacnia pewność analityki procesów. |
| Windows | Sysmon | EID 3 (Network Connect) | Image=WINWORD.EXE lub dziecko → połączenia HTTP/HTTPS | Dokumenty przynęt często dociągały payloady; patrz hosty niesankcjonowane. |
| Windows | Security | Event ID 4688 | Procesy jak wyżej; NewProcessName, CreatorProcessName | Alternatywa dla środowisk bez Sysmon. |
| M365 | Defender for Office 365 (AH) | tabele EmailEvents, EmailAttachmentInfo | AttachmentFileType in (rtf, doc, docx); DetectionTechnology/ActionType | Telemetria o załącznikach i kampaniach e‑mail; koreluj z host telemetry. |
| M365 | Unified Audit / MailItemsAccessed | Zdarzenia dostępu do wiadomości | IP, klient, operacja | Pomaga ocenić skalę kompromitacji skrzynek. |
| AWS | CloudTrail (data events S3) | GetObject, HeadObject | requestParameters.key ~ `.(rtf | docx?)$, userAgent, sourceIPAddress` |
| Azure/GCP/K8s/ESXi | — | — | — | Nie 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: highSplunk (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>=1KQL (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 100Elastic / 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)
- Izoluj hosta z alertu (EDR).
- Zabezpiecz artefakty: próbka pliku, prefetch, memoria, Process Tree, DeviceProcessEvents/DeviceImageLoadEvents.
- 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).
- Łańcuch zdarzeń: wyszukaj inne hosty z tym samym załącznikiem (EmailEvents + SHA256 z EmailAttachmentInfo), a następnie koreluj z host telemetry.
- Blokady: dodaj hash/URL do blokady w MDO/EOP/Proxy; włącz/utwardź ASR „Block Office creating child processes”.
- Naprawa: wymuś instalację MS12‑027, a także późniejszych zbiorczych aktualizacji Office/Windows; wdroż Exploit Protection/DEP/ASLR.
- 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
- Utwórz harmless.rtf zawierający nieszkodliwy tekst oraz nagłówek z ciągiem \object/\objocx (bez osadzania binariów OLE).
- Wyślij na skrzynkę testową M365 i sprawdź, czy polityki (MDO Safe Attachments/Sandbox) oraz reguły treści podnoszą alert/znacznik podejrzany.
- Koreluj EmailAttachmentInfo host telemetry (brak uruchomionych procesów wtórnych powinien dać „clean”).
Lab‑2: Analityka „Office → child process” (symulacja zachowania, bez dokumentu)
- 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).
- Sprawdź, czy reguły Sigma/Splunk/KQL wyłapują przypadki dziecko procesu Office (w środowisku produkcyjnym zadziała to na realnych incydentach).
- 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.














