← Back to Feed CACHED · 2026-07-13 13:05:18 · CACHE_KEY CVE-2017-0199
CVE-2017-0199 · CWE-20 · Disclosed 2017-04-12

Microsoft Office 2007 SP3

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

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.

"Nine years old, still weaponized. KEV-listed, EPSS 99.93th percentile, and every commodity loader kit ships an exploit builder for it."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Build the weaponized RTF

Attacker generates an RTF or DOCX containing an OLE2 linked object whose \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.
Conditions required:
  • Ability to author documents
  • Web server to host the HTA payload
Where this breaks in practice:
  • 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
Detection/coverage: YARA rules for objautlink+objupdate+hta are widespread; Sigma rule proc_creation_win_mshta_susp_pattern catches the follow-on
STEP 02

Deliver via phishing

Document arrives as an email attachment, OneDrive/SharePoint share, or watering-hole download. UI:R means the user must open the file, but no macro prompt appears — the exploit fires during document rendering.
Conditions required:
  • Working email path to target
  • Target opens attachment outside Protected View
Where this breaks in practice:
  • Protected View blocks external content on internet-marked files
  • MOTW (Mark of the Web) tagging plus SmartScreen
Detection/coverage: Email gateway telemetry; Defender for Endpoint alert Suspicious Office document behavior
STEP 03

Office fetches the OLE link

On document open, 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.
Conditions required:
  • Outbound HTTP/HTTPS reachable from workstation
  • No egress filtering on Office processes
Where this breaks in practice:
  • Egress proxy with domain reputation filtering
  • Attack Surface Reduction rule Block Office from creating child processes (GUID D4F940AB-401B-4EFC-AADC-AD5F3C50688A)
Detection/coverage: EDR child-process telemetry: winword.exe → mshta.exe is a very high-confidence signal
STEP 04

mshta.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.
Conditions required:
  • User has execute rights on mshta.exe (default)
Where this breaks in practice:
  • AppLocker / WDAC rule blocking mshta.exe
  • PowerShell Constrained Language Mode
Detection/coverage: Sysmon Event ID 1 with parent=winword.exe, child=mshta.exe or powershell.exe
STEP 05

Post-exploitation

Code executes with the interactive user's token. On a standard workstation that yields user-context persistence and credential access (LSASS, browser stores). On a shared jump host, RDS server, or admin workstation it yields elevated blast radius; on a Tier-0 admin's endpoint it is a direct path to domain compromise via cached credentials or Kerberos ticket theft.
Conditions required:
  • Time on target for LOTL persistence
  • Reachable C2
Where this breaks in practice:
  • EDR behavioral rules for LSASS access, LOLBin abuse
  • Credential Guard mitigates LSASS scrape
Detection/coverage: EDR high-fidelity alerts; SIEM for anomalous mshta network egress
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusActively 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 statusListed in CISA KEV since the initial KEV catalog publication (2021-11-03). Federal remediation due date already past.
EPSS0.99933 — 99.93rd percentile. Among the highest sustained EPSS scores of any Office CVE.
PoC availabilityPublic 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 vectorCVSS: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 versionsOffice 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 byApril 2017 Patch Tuesday: KB4015551 (Office 2007), KB3178703 (Office 2010), KB3178710 (Office 2013), KB3178708 (Office 2016), MS17-014, MS17-015, KB4014793 (.NET).
Exposure telemetryShodan/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.
DisclosurePublicly disclosed 2017-04-11 by FireEye and Netskope after in-the-wild exploitation. Microsoft advisory MS17-014.
ReporterFireEye (Genwei Jiang), Netskope (Ryan Hanson attribution disputed), Optiv.
04 · The Call

noisgate verdict.

Final Verdict
UPGRADED to CRITICAL (9.3/10)

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.

HIGH Exploitation prevalence and KEV status
HIGH Patch availability and remediation path
MEDIUM Residual unpatched population in a mature enterprise

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.

05 · Compensating Control

What to do — in priority order.

  1. Deploy Microsoft ASR rule Block Office from creating child processes — GUID D4F940AB-401B-4EFC-AADC-AD5F3C50688A in Block mode kills the winword.exe → mshta.exe transition that this exploit depends on. Deploy fleet-wide within 3 days per the noisgate CRITICAL mitigation SLA, via Intune, GPO Computer Config → Admin Templates → Windows Components → Microsoft Defender Antivirus → Attack Surface Reduction, or Defender for Endpoint policy.
  2. Disable mshta.exe via AppLocker or WDAC — Block execution of %windir%\System32\mshta.exe and %windir%\SysWOW64\mshta.exe for 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.
  3. 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.
  4. Block outbound HTTP/S from Office processes at the proxy — Egress rule matching winword.exe, excel.exe, powerpoint.exe, wordpad.exe outbound to any host not on an internal allowlist. Deploy at the endpoint (Windows Firewall + WFP) and at the network proxy.
  5. 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 Delivery disabled for RTF specifically.
What doesn't work
  • 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.
06 · Verification

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).

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
#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
}
07 · Bottom Line

If you remember one thing.

TL;DR
Treat every unpatched Office endpoint as an incident-in-waiting. Under the noisgate mitigation SLA for CRITICAL — and overridden to *immediate/within hours* by active KEV exploitation — turn on Defender ASR rule 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

  1. CISA KEV entry
  2. NVD CVE-2017-0199
  3. Microsoft MS17-014 advisory
  4. FireEye original disclosure blog
  5. Metasploit exploit module
  6. bhdresh PoC repo
  7. Microsoft ASR rules reference
  8. FIRST EPSS lookup
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.