The RTF that opens a door before Word finishes drawing the page
CVE-2017-0199 is a logic flaw in how Microsoft Office and WordPad handle OLE2 linked objects embedded in RTF and Word documents. A crafted document contains an OLE link to a remote HTA (HTML Application) file; when the victim opens the document, Office fetches the URL, the server responds with application/hta content-type, and mshta.exe executes the payload as the current user — no macro warning, no protected view prompt in unpatched configurations. Affected products span Office 2007 SP3, 2010 SP2, 2013 SP1, 2016, and Windows Vista SP2 / Server 2008 SP2 WordPad, plus .NET Framework variants patched in the same MS17-014/MS17-015/KB4014793 wave.
The vendor's original 7.8 HIGH rating dramatically understates operational reality. CVSS scored it AV:L / UI:R — treating email delivery as out of scope — but this bug was actively weaponized in the wild by FinSpy operators before the patch shipped, then immediately adopted by Dridex, Latentbot, Godzilla, Cerber, and virtually every phishing-driven APT (APT34, APT28, Silent Group) for the following three years. Nine years post-disclosure it still ranks in the EPSS 99.93rd percentile because unpatched Office endpoints keep resurfacing on M&A-acquired networks and OT jump hosts.
5 steps from start to impact.
Build the weaponized RTF
\objdata blob references a remote URL. Public builders include the Metasploit module exploit/windows/fileformat/office_word_hta, the bhdresh/CVE-2017-0199 PoC, and countless Cobalt Strike / Empire generators. The document itself carries no macro, so static AV signatures keyed on VBA miss it.- Ability to author documents
- Web server to host the HTA payload
- Modern email gateways (Proofpoint TAP, Mimecast, Defender for Office 365 Safe Attachments) detonate RTFs and flag OLE-link fetches
- Reputable AV vendors have signatures for the OLE structure pattern
objautlink+objupdate+hta are widespread; Sigma rule proc_creation_win_mshta_susp_pattern catches the follow-onDeliver via phishing
- Working email path to target
- Target opens attachment outside Protected View
- Protected View blocks external content on internet-marked files
- MOTW (Mark of the Web) tagging plus SmartScreen
Suspicious Office document behaviorOffice fetches the OLE link
winword.exe (or wordpad.exe) issues an HTTP request for the linked object. The attacker's server responds with Content-Type: application/hta, which causes Office to hand execution to mshta.exe instead of rendering the object.- Outbound HTTP/HTTPS reachable from workstation
- No egress filtering on Office processes
- Egress proxy with domain reputation filtering
- Attack Surface Reduction rule
Block Office from creating child processes(GUID D4F940AB-401B-4EFC-AADC-AD5F3C50688A)
winword.exe → mshta.exe is a very high-confidence signalmshta.exe executes attacker script
mshta.exe runs the returned HTA, which is arbitrary VBScript/JScript executing as the current user with no sandbox. Payloads typically stage a PowerShell downloader, then Cobalt Strike beacon, Dridex loader, or FinSpy implant.- User has execute rights on mshta.exe (default)
- AppLocker / WDAC rule blocking mshta.exe
- PowerShell Constrained Language Mode
Post-exploitation
- Time on target for LOTL persistence
- Reachable C2
- EDR behavioral rules for LSASS access, LOLBin abuse
- Credential Guard mitigates LSASS scrape
The supporting signals.
| In-the-wild status | Actively exploited since before patch release (April 2017). FireEye/Mandiant observed FinSpy and Latentbot use before disclosure. Continuously used through 2026 by Dridex, Emotet successors, Silent Group, APT28, APT34, and commodity phishing kits. |
|---|---|
| KEV status | Listed in CISA KEV since the initial KEV catalog publication (2021-11-03). Federal remediation due date already past. |
| EPSS | 0.99933 — 99.93rd percentile. Among the highest sustained EPSS scores of any Office CVE. |
| PoC availability | Public exploit code in Metasploit (office_word_hta), bhdresh/CVE-2017-0199 GitHub repo, n1shant-sinha/CVE-2017-0199, plus builder scripts in every commodity phishing toolkit including SILENTTRINITY, Empire, and Cobalt Strike community plugins. |
| CVSS vector | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H → 7.8 HIGH. The AV:L rating is misleading — the delivery vector is email/web, so operationally this behaves as AV:N with a user-click requirement. |
| Affected versions | Office 2007 SP3, 2010 SP2, 2013 SP1, 2016 (all pre-April 2017 patch); Windows Vista SP2 and Server 2008 SP2 WordPad; .NET Framework 2.0/3.5/4.5.2/4.6/4.6.1/4.6.2. |
| Fixed by | April 2017 Patch Tuesday: KB4015551 (Office 2007), KB3178703 (Office 2010), KB3178710 (Office 2013), KB3178708 (Office 2016), MS17-014, MS17-015, KB4014793 (.NET). |
| Exposure telemetry | Shodan/Censys N/A (client-side). Microsoft Threat Intelligence still reports non-trivial detections monthly on unmanaged endpoints. Recorded Future TTP tracker shows continued 2025-2026 use in commodity phishing. |
| Disclosure | Publicly disclosed 2017-04-11 by FireEye and Netskope after in-the-wild exploitation. Microsoft advisory MS17-014. |
| Reporter | FireEye (Genwei Jiang), Netskope (Ryan Hanson attribution disputed), Optiv. |
noisgate verdict.
This is upgraded from HIGH 7.8 to CRITICAL 9.3 because the single decisive factor is sustained active exploitation: KEV-listed, EPSS 99.93rd percentile, and still shipping in commodity phishing kits nine years post-disclosure. The CVSS AV:L rating misrepresents the real delivery vector (weaponized email attachment reaching every Office endpoint on the network), and the blast radius on a Tier-0 admin workstation is fleet-scale credential theft.
Why this verdict
- KEV + EPSS 99.93 override friction analysis. When CISA has listed a bug for four years and it still sits in the top 0.07% of exploitation probability, the theoretical friction (UI:R, AV:L) has been empirically defeated at scale.
- Delivery-vector reality. CVSS scored this local because the attacker doesn't reach the network stack directly, but every observed campaign delivers via email or web download — treat it as network-reachable in every risk model.
- Role multiplier: on a standard user workstation the outcome is user-context RCE plus credential access — HIGH. On a Tier-0 admin endpoint, jump host, or RDS server the chain ends in cached-credential theft and domain compromise — floor is CRITICAL because Office is by definition installed on admin workstations at >>10% of the installed base.
- Commodity toolchain integration. Metasploit, Cobalt Strike, and every phishing-as-a-service kit ships a builder. Skill floor is zero.
- Nine-year-old patch. Anything unpatched today is unmanaged, and unmanaged Office endpoints are exactly where initial-access brokers focus.
Why not higher?
There is no severity bucket above CRITICAL. The score is capped at 9.3 rather than 9.8+ only because UI:R remains a genuine gate — a hardened Protected View + ASR + email gateway stack does meaningfully reduce hit rate on managed fleets.
Why not lower?
Downgrading below CRITICAL would require ignoring KEV listing, EPSS 99.93, and nine years of continuous in-the-wild abuse. No plausible enterprise deployment story justifies treating this as HIGH or below.
What to do — in priority order.
- Deploy Microsoft ASR rule
Block Office from creating child processes— GUIDD4F940AB-401B-4EFC-AADC-AD5F3C50688Ain Block mode kills thewinword.exe → mshta.exetransition that this exploit depends on. Deploy fleet-wide within 3 days per the noisgate CRITICAL mitigation SLA, via Intune, GPOComputer Config → Admin Templates → Windows Components → Microsoft Defender Antivirus → Attack Surface Reduction, or Defender for Endpoint policy. - Disable mshta.exe via AppLocker or WDAC — Block execution of
%windir%\System32\mshta.exeand%windir%\SysWOW64\mshta.exefor all standard users. HTA is legacy and has near-zero legitimate enterprise use in 2026. Roll out within 3 days on a monitored/audit-first basis to catch legit dependencies. - Enforce Protected View for internet and attachment files — GPO
Microsoft Office 2016 → Security Settings → Protected View— enable all three (internet files, unsafe locations, Outlook attachments). Ensure Mark-of-the-Web propagation is intact on SMB shares. - Block outbound HTTP/S from Office processes at the proxy — Egress rule matching
winword.exe,excel.exe,powerpoint.exe,wordpad.exeoutbound to any host not on an internal allowlist. Deploy at the endpoint (Windows Firewall + WFP) and at the network proxy. - Detonate all inbound RTF/DOC/DOCX at the email gateway — Turn on sandbox detonation in Proofpoint TAP / Mimecast Attachment Protect / Defender for Office 365 Safe Attachments with
Dynamic Deliverydisabled for RTF specifically.
- Disabling macros — this exploit uses OLE object linking, not VBA. Macro settings are irrelevant.
- Trusting the CVSS AV:L rating to deprioritize this — the delivery vector is email, and treating it as local underestimates exposure by orders of magnitude.
- Network-based IPS signatures alone — HTTPS delivery from attacker-controlled CDNs (Cloudflare, Discord, Dropbox) evades pattern matching on the HTA response.
- Removing WordPad — Office 2007/2010/2013/2016 are the primary vector; WordPad is a footnote.
Crowdsourced verification payload.
Run on each Windows endpoint under local admin (or via Intune script / SCCM Compliance / Defender for Endpoint Advanced Hunting). Example invocation: powershell.exe -ExecutionPolicy Bypass -File Check-CVE-2017-0199.ps1. Emits VULNERABLE, PATCHED, or UNKNOWN on stdout and sets a matching exit code (2/0/1).
#Requires -Version 3.0
# Check-CVE-2017-0199.ps1
# Detects unpatched Microsoft Office installs vulnerable to CVE-2017-0199.
# Exit codes: 0=PATCHED, 1=UNKNOWN, 2=VULNERABLE
$ErrorActionPreference = 'SilentlyContinue'
# Minimum patched file versions for winword.exe per Office channel (April 2017 patch level)
$MinVersions = @{
'12.0' = [Version]'12.0.6779.5000' # Office 2007 SP3 + KB4015551
'14.0' = [Version]'14.0.7182.5000' # Office 2010 SP2 + KB3178703
'15.0' = [Version]'15.0.4919.1002' # Office 2013 SP1 + KB3178710
'16.0' = [Version]'16.0.4600.1000' # Office 2016 MSI + KB3178708
}
$found = $false
$vulnerable = $false
$details = @()
foreach ($ver in $MinVersions.Keys) {
$regPaths = @(
"HKLM:\SOFTWARE\Microsoft\Office\$ver\Word\InstallRoot",
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\Office\$ver\Word\InstallRoot"
)
foreach ($rp in $regPaths) {
$installRoot = (Get-ItemProperty -Path $rp -Name Path).Path
if ($installRoot) {
$winword = Join-Path $installRoot 'winword.exe'
if (Test-Path $winword) {
$found = $true
$fv = [Version](Get-Item $winword).VersionInfo.FileVersion.Split(' ')[0]
$min = $MinVersions[$ver]
$status = if ($fv -lt $min) { $vulnerable = $true; 'VULNERABLE' } else { 'patched' }
$details += "Office $ver -> winword.exe $fv (min $min) [$status]"
}
}
}
}
# Click-to-Run modern Office: patched in build 16.0.7870+ (Apr 2017)
$c2r = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' -Name VersionToReport).VersionToReport
if ($c2r) {
$found = $true
$fv = [Version]$c2r
$min = [Version]'16.0.7870.2020'
$status = if ($fv -lt $min) { $vulnerable = $true; 'VULNERABLE' } else { 'patched' }
$details += "Office C2R -> $fv (min $min) [$status]"
}
if (-not $found) {
Write-Output 'UNKNOWN - no Office install detected'
exit 1
}
$details | ForEach-Object { Write-Output $_ }
if ($vulnerable) {
Write-Output 'VULNERABLE'
exit 2
} else {
Write-Output 'PATCHED'
exit 0
}
If you remember one thing.
D4F940AB-401B-4EFC-AADC-AD5F3C50688A (Block Office from creating child processes) and AppLocker-block mshta.exe fleet-wide today, and enable email-gateway RTF detonation before end of week. Under the noisgate remediation SLA for CRITICAL, all Office 2007/2010/2013/2016 installs must reach the April 2017 patch baseline within 90 days — realistically anything still unpatched in 2026 is unmanaged shadow IT and should be surfaced with an unmanaged-endpoint inventory sweep (Defender for Endpoint discovery, Tanium, or a login-script asset probe) rather than a normal patch cycle. Prioritize Tier-0 admin workstations, RDS/Citrix hosts, and any endpoint used by users with Domain Admin or backup admin rights first.Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.