CVE‑2015‑1641 (Microsoft Office Memory Corruption w RTF) — zdalne wykonanie kodu po otwarciu spreparowanego dokumentu - Security Bez Tabu

CVE‑2015‑1641 (Microsoft Office Memory Corruption w RTF) — zdalne wykonanie kodu po otwarciu spreparowanego dokumentu

TL;DR

CVE‑2015‑1641 to błąd obsługi RTF w Microsoft Office (Word/Word Viewer/Word Automation Services), który umożliwia RCE w kontekście użytkownika po otwarciu złośliwego pliku. W ATT&CK mapuje się to przede wszystkim na T1203 (Exploitation for Client Execution), zwykle dostarczane przez T1566.001 (Spearphishing Attachment) i/lub uruchamiane przez T1204.002 (User Execution: Malicious File). Skuteczna obrona opiera się na aktualizacjach, regułach ASR blokujących potomne procesy Office, kontroli aplikacji (WDAC/AppLocker) i analityce parent→child (Office → LOLBin).


Krótka definicja techniczna

CVE‑2015‑1641 to podatność w sposobie, w jaki Microsoft Office przetwarza RTF w pamięci; umożliwia zdalne wykonanie kodu po otwarciu specjalnie przygotowanego dokumentu (np. .rtf). Atak skutkuje uruchomieniem procesu/łańcucha procesów potomnych z rodzicem WINWORD.EXE (lub inną aplikacją Office) i typowo prowadzi do pobrania/uruchomienia ładunku (np. przez cmd.exe, powershell.exe, mshta.exe, rundll32.exe).


Gdzie występuje / przykłady platform

  • Windows / macOS (Word dla Mac 2011) — otwarcie/obsługa RTF przez aplikacje Office.
  • SharePoint (Word Automation Services), Office Web Apps — przetwarzanie dokumentów po stronie serwerowej.
  • M365/Exchange Online — wektor dostarczenia (e‑mail z załącznikiem RTF), detekcja/remediacja po stronie Defender for Office 365 (ZAP, akcje purge).
  • Środowiska hybrydowe (AD + M365) — najczęstszy scenariusz spearphishing + endpoint Windows.

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

Atakujący dostarcza spreparowany dokument RTF. Gdy aplikacja Office przetwarza plik, błąd w obsłudze RTF prowadzi do korupcji pamięci i wykonania arbitralnego kodu w kontekście bieżącego użytkownika. To umożliwia wykonanie stagera i ruch dalszy (np. dowolny LOLBin). Technika jest skuteczna, bo:

  • Wymaga jedynie interakcji użytkownika (otwarcie dokumentu) i często wygląda jak zwykła korespondencja służbowa (T1566.001 + T1204.002).
  • Office jest powszechny, a łańcuch Office → interpretery/LOLBin jest typową ścieżką living‑off‑the‑land.
  • Historycznie podatność była obserwowana “in the wild” w kampaniach APT (np. Sednit/Sofacy) oraz figuruje w KEV, co potwierdza realne wykorzystanie.

6) Artefakty i logi (tabela)

WarstwaŹródło/typID / PoleCo szukać
WindowsSecurity4688 (Process Creation)ParentImage = \WINWORD.EXE/EXCEL.EXE/POWERPNT.EXE + NewProcessName = cmd.exe, powershell.exe, mshta.exe, wscript.exe, rundll32.exe, regsvr32.exe
WindowsSysmon1 (ProcessCreate), 3 (NetworkConnect), 11 (FileCreate), 7 (ImageLoad), 13 (Registry)Łańcuch Office → LOLBin, nietypowe połączenia wychodzące tuż po uruchomieniu potomka, zapisy do %TEMP%/%APPDATA%
MDEAdvanced HuntingDeviceProcessEvents, DeviceNetworkEventsInitiatingProcessFileName w {WINWORD/EXCEL/POWERPNT}, FileName w {cmd/powershell/…}, nietypowe domeny C2
M365Defender for Office 365 / PurviewZAP, New-ComplianceSearchAction -PurgeAlerty o złośliwych załącznikach, raporty EOP, akcje SoftDelete/HardDelete przy remediacji maili.
AWSCloudTrail Lake (opcjonalnie, jeśli SES/WorkMail → S3)PutObject/GetObject (S3 data events)Masowe wrzuty .rtf do skrzynek/bucketów przychodzących; korelować ze wzrostem alertów EOP (jeśli integracja).
K8s audit[nie dotyczy] – podatność dotyczy klienta Office
GCP/Azure[nie dotyczy] – j.w.

Detekcja (praktyczne reguły)

Sigma

title: Office Spawns Suspicious Child Process (CVE-2015-1641 tradecraft)
id: 4c8c6a7b-9d0e-46d0-9a9e-1641office-child-proc
status: experimental
description: Wykrywa uruchamianie podejrzanych procesów potomnych przez aplikacje Office (WINWORD/EXCEL/POWERPNT).
references:
  - https://attack.mitre.org/techniques/T1203/
  - https://learn.microsoft.com/en-us/defender-endpoint/attack-surface-reduction-rules-reference
logsource:
  category: process_creation
  product: windows
detection:
  parent_office:
    ParentImage|endswith:
      - '\WINWORD.EXE'
      - '\EXCEL.EXE'
      - '\POWERPNT.EXE'
      - '\WORDVIEW.EXE'
  child_suspicious:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
      - '\hh.exe'
      - '\msbuild.exe'
      - '\installutil.exe'
      - '\certutil.exe'
      - '\bitsadmin.exe'
  condition: parent_office and child_suspicious
falsepositives:
  - Legalne dodatki Office/automatyzacje (DLP, AV, integracje korporacyjne)
level: high
tags:
  - attack.t1203
  - attack.execution

(Technika T1203, ASR „Block Office apps from creating child processes”).

Splunk (SPL)

(index=win* (sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1)
 OR (sourcetype="WinEventLog:Security" EventCode=4688))
| eval parent=coalesce(ParentImage, ParentProcessName), child=coalesce(Image, NewProcessName)
| where like(lower(parent), "%\\winword.exe")
   OR like(lower(parent), "%\\excel.exe")
   OR like(lower(parent), "%\\powerpnt.exe")
   OR like(lower(parent), "%\\wordview.exe")
| where match(lower(child), "\\\\(cmd|powershell|wscript|cscript|mshta|rundll32|regsvr32|hh|msbuild|installutil|certutil|bitsadmin)\\.exe$")
| stats earliest(_time) as first_seen, values(CommandLine) as cmd, values(ParentCommandLine) as p_cmd by host, user, parent, child
| convert ctime(first_seen)

KQL (Microsoft 365 Defender – Advanced Hunting)

DeviceProcessEvents
| where InitiatingProcessFileName in~ ("WINWORD.EXE","EXCEL.EXE","POWERPNT.EXE","WORDVIEW.EXE")
| where FileName in~ ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","mshta.exe",
                      "rundll32.exe","regsvr32.exe","hh.exe","msbuild.exe","installutil.exe",
                      "certutil.exe","bitsadmin.exe")
| project Timestamp, DeviceName, AccountName,
          InitiatingProcessFileName, InitiatingProcessCommandLine,
          FileName, ProcessCommandLine
| order by Timestamp desc

CloudTrail Lake (SQL) — opcjonalnie (SES/WorkMail→S3)

-- Wymaga włączonych data events dla S3
SELECT eventTime, eventSource, eventName, sourceIPAddress,
       requestParameters.bucketName AS bucket, requestParameters.key AS object
FROM $EDS_EVENT
WHERE eventName IN ('PutObject','GetObject')
  AND requestParameters.key LIKE '%.rtf'
  AND eventTime > TIMESTAMP '2025-11-01 00:00:00';

(Użyte do korelacji fali załączników .rtf z incydentami e‑mail.)

Elastic / EQL

process where
  process.parent.name in ("WINWORD.EXE","EXCEL.EXE","POWERPNT.EXE","WORDVIEW.EXE") and
  process.name in ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","mshta.exe",
                   "rundll32.exe","regsvr32.exe","hh.exe","msbuild.exe","installutil.exe",
                   "certutil.exe","bitsadmin.exe")

Heurystyki / korelacje

  • Parent→Child: Office → (cmd/powershell/wscript/mshta/rundll32/regsvr32) + sieć w ≤2 min od uruchomienia.
  • Ścieżki plików: tworzenie DLL/EXE/skrótów w %TEMP%, %APPDATA%, Startup, Office\Recent (Sysmon 11 + 1).
  • DNS/HTTP(S): nowe domeny bez reputacji tuż po otwarciu dokumentu.
  • ASR: zdarzenia AsrOfficeChildProcessAudited/Blocked (jeśli reguła włączona).
  • E‑mail → endpoint: korelacja EmailEvents (złośliwy załącznik RTF) z telemetrią procesu na hoście.

False positives / tuning

  • Legalne dodatki Office, wtyczki DLP/AV, integracje (np. eksport do PDF z użyciem procesów systemowych).
  • Narzędzia administracyjne i automatyzacje (np. pakiety do raportowania) — whitelist wg hasha, ścieżki i podpisu.
  • Tuning: wyklucz znane, podpisane ścieżki biznesowe; zostaw reguły ogólne dla cmd/powershell/mshta/... wywoływanych przez Office. Regułę Sigma/kwarantannę zaostrzaj dopiero po tygodniu audytu.

Playbook reagowania (kroki + komendy)

  1. Triag i zawężenie
  • Uruchom zapytania (SPL/KQL powyżej).
  • Piwotuj po ParentImage=WINWORD.EXE i user session.
  • Sprawdź alerty MDO (Defender for Office 365) i retencję ZAP.
  1. Izolacja i skan
  • Izoluj host w EDR/MDE (izolacja sieci).
  • Na hoście: szybki skan AV:
"%ProgramFiles%\Windows Defender\MpCmdRun.exe" -Scan -ScanType 2
  1. Higiena skrzynek (Purview/PowerShell) — usuń złośliwe maile:
New-ComplianceSearch -Name "CVE-2015-1641-purge" -ExchangeLocation All \
  -ContentMatchQuery '(attachments:".rtf") AND (Subject:"<ciąg kampanii>" OR From:"<nadawca>")'
Start-ComplianceSearch -Identity "CVE-2015-1641-purge"
New-ComplianceSearchAction -SearchName "CVE-2015-1641-purge" -Purge -PurgeType SoftDelete

(Potwierdzone procedury Purview).

  1. Artefakty
  • Zbierz pliki z %TEMP%/%APPDATA%, Prefetch, $MFT, Sysmon log.
  • Sprawdź autostarty (Run, Startup, zadania).
  1. Remediacja i twardnienie
  • Patch Office/SharePoint/Web Apps (MS15‑033 i nowsze).
  • Włącz/egzekwuj ASR: Block Office apps from creating child processes (d4f940ab-401b-4efc-aadc-ad5f3c50688a).
    Przykład (testowo – AuditMode):
Add-MpPreference -AttackSurfaceReductionRules_Ids d4f940ab-401b-4efc-aadc-ad5f3c50688a `
                 -AttackSurfaceReductionRules_Actions AuditMode

Dokumentacja ASR: referencja/enable.


Przykłady z kampanii / case studies

  • Sednit / Sofacy (APT28) – kampanie z załącznikami RTF wykorzystującymi CVE‑2015‑1641; po otwarciu zrzucały dwa DLL (np. btecache.dll, svchost.dll) i ładowały ładunek Seduploader.
  • Confucius – wykorzystywał podatności Office, w tym CVE‑2015‑1641, do uzyskania wykonania na stacjach ofiar.
  • Microsoft i media branżowe wskazywały na wykorzystanie in‑the‑wild przy wydaniu MS15‑033.

Lab (bezpieczne testy)

Wyłącznie w izolowanym, nieprodukcyjnym środowisku! Celem jest test detekcji, nie eksploatacja.

A. Dymny test ASR (AuditMode)

  1. Ustaw ASR „Block Office apps from creating child processes” w AuditMode (komenda powyżej).
  2. Utwórz w Wordzie prosty makrotest, który uruchamia Notepad (bezpieczny program): Sub TestChild() CreateObject("WScript.Shell").Run "notepad.exe" End Sub
  3. Uruchom makro → sprawdź, czy pojawiły się zdarzenia audytowe ASR/EDR i alert Sigma/SIEM. (Przykładowe demo ASR: Microsoft docs).

B. Heurystyka parent→child (bez makr)
Uruchom winword.exe, a następnie ręcznie zainicjuj proces potomny z linii poleceń (symulacja anomalii):

Start-Process "$env:ProgramFiles\Microsoft Office\root\Office16\WINWORD.EXE"
Start-Sleep -s 5
Start-Process cmd.exe -ArgumentList "/c echo benign" -WindowStyle Hidden

Sprawdź, czy reguły (Sigma/SPL/KQL) flagują zdarzenie.

C. E‑mail flow (MDO)
Wyślij do skrzynki labowej .rtf z nieszkodliwą zawartością i sprawdź ścieżkę skanowania/raporty MDO/ZAP oraz logi Purview (bez złośliwego payloadu).


Mapowania (Mitigations, Powiązane techniki)

Mitigations (ATT&CK):

  • M1051 – Update Software (regularne łatki Office/SharePoint/Web Apps).
  • M1038 – Execution Prevention (WDAC/AppLocker; ASR blokujący potomne procesy Office).
  • M1042 – Disable or Remove Feature or Program (wyłącz nieużywane komponenty, ogranicz makra).
  • M1017 – User Training (świadomość spearphishingu).

Powiązane techniki (często współwystępują):

  • T1566.001 – Phishing: Spearphishing Attachment (wektor dostarczenia).
  • T1204.002 – User Execution: Malicious File (użytkownik otwiera plik).
  • T1218 – Signed Binary Proxy Execution (np. rundll32.exe, regsvr32.exe).
  • T1059 – Command and Scripting Interpreter (PowerShell/WSH).
  • T1105 – Ingress Tool Transfer (pobranie kolejnych ładunków).
  • T1547 – Boot or Logon Autostart Execution (utrwalenie po eksploatacji).

Źródła / dalsza literatura

  • NVD – CVE‑2015‑1641 (opis, CVSS, wpis KEV w CISA). (NVD)
  • Microsoft MS15‑033 – biuletyn, lista produktów i opis RTF memory corruption. (Microsoft Learn)
  • ATT&CK T1203 – technika, wersja, modyfikacja 24.10.2025. (MITRE ATT&CK)
  • ATT&CK – wersje/aktualności – v18 (10.2025). (MITRE ATT&CK)
  • SecurityWeek – patch Tuesday z adnotacją „exploited in the wild” (CVE‑2015‑1641). (SecurityWeek)
  • ESET “En Route with Sednit” – przykład kampanii (Seduploader via CVE‑2015‑1641). (web-assets.esetstatic.com)
  • Defender for Office 365 – remediacja maili (ZAP/Purge). (Microsoft Learn)
  • ASR – referencja i włączanie – blokada potomnych procesów Office. (Microsoft Learn)

Checklisty dla SOC / CISO

SOC – operacyjna

  • Monitoring parent→child: Office → (cmd/powershell/mshta/wscript/…) w SIEM.
  • Włącz ASR Block Office apps from creating child processes (najpierw AuditMode, potem Block).
  • Korelacja e‑mail (EOP/MDO) ↔ endpoint (EDR).
  • Hunts: świeże .rtf + nietypowe połączenia po otwarciu dokumentu.
  • Procedura Purview Search+Purge gotowa do masowej remediacji.

CISO – strategiczna

  • Polityka patchowania Office/SharePoint/Web Apps (SLA).
  • Polityka makr, kontrola aplikacji (WDAC/AppLocker).
  • Szkolenia spearphishing/zasady otwierania załączników.
  • Testy okresowe (lab) pod T1203/T1566.001 z metrykami skuteczności.