This is a live grenade in the admin jump bag, not a missile hitting every server from the internet
KB5075970 is the February 10, 2026 monthly rollup for Windows Server 2012 R2 ESU. Tenable plugin 298555 flags hosts missing that rollup and ties it to multiple CVEs, most importantly CVE-2026-21513 in MSHTML plus several local privilege escalation bugs such as CVE-2026-21246, CVE-2026-21235, CVE-2026-21508, and CVE-2026-21533. In plain English: an attacker can use a crafted file or web/navigation path to get code running, then use local EoP bugs to turn foothold into SYSTEM on an unpatched 2012 R2 host.
The vendor labeling is easy to misread here. Tenable's plugin severity is high, not critical, while Tenable VPR escalates it because the rollup contains a KEV-listed, actively exploited zero-day (CVE-2026-21513). That said, for a 10,000-host enterprise this still does not behave like an indiscriminate unauthenticated network worm on every server: the dominant path needs user interaction and/or a post-compromise local stage, which sharply narrows real-world reach even though the consequences on the hosts that *are* used by admins are ugly.
4 steps from start to impact.
Deliver a user-execution lure
CVE-2026-21513 as analyzed by Akamai.- Attacker can reach a user or admin who interacts with content on the target host
- Target is Windows Server 2012 R2 ESU missing
KB5075970 - MSHTML-triggering content is allowed to land on or be opened from the system
- Headless back-end servers usually have no interactive browsing or document-opening workflow
- Email security, web isolation, attachment detonation, and file reputation controls stop a lot of commodity delivery
- Many 2012 R2 servers are only reachable by admins, which means the attacker often needs a prior foothold or successful phishing
Trigger the MSHTML bypass
ieframe.dll hyperlink navigation handling. The attacker abuses URL handling so execution escapes intended browser security boundaries and reaches ShellExecuteExW, turning what should be constrained content handling into arbitrary execution behavior.- The lure is opened or otherwise rendered
- The specific vulnerable MSHTML navigation path is hit
- No upstream control strips or neutralizes the active content
- This is not a pre-auth socket listener on port 3389 or 445; it needs content handling
- Protected View-style workflows, browser isolation, and application control reduce success
- Server Core-like minimal workflows reduce exposure compared with user workstations
ieframe.dll-driven execution, ShellExecuteExW abuse, suspicious .lnk/HTML opens, or payloads launched from temp/download/share paths.Land code in user context
- Successful user execution on the target host
- User context has enough local rights or reachable credentials to matter
- Non-admin service accounts or constrained jump workflows limit blast radius
- Application control and constrained language policies can choke follow-on tooling
- Credential Guard, EDR, and PAM reduce what a single user-context foothold can do
Escalate locally to SYSTEM
CVE-2026-21246, CVE-2026-21235, CVE-2026-21508, and CVE-2026-21533. Those are the cleanup crew for an attacker: once they have *any* code running locally, they can attempt to upgrade from low privilege to full box control.- Attacker already has local code execution
- The host is missing
KB5075970and applicable vulnerable components remain present
- This stage is impossible without a prior local foothold
- Some EoP paths are brittle across builds and require exploit engineering
- Behavioral EDR often catches the privilege-escalation toolchain even if it missed the initial lure
The supporting signals.
| In-the-wild status | Yes. CVE-2026-21513 is in CISA KEV, and Akamai states it was actively exploited in the wild and correlates exploitation to APT28. |
|---|---|
| Proof-of-concept / exploit availability | Tenable marks the rollup as Exploit Available: true and lists Core Impact under exploitable-with. Akamai published a technical root-cause and exploitation analysis for CVE-2026-21513, which materially lowers reverse-engineering effort. |
| EPSS | For the dominant CVE (CVE-2026-21513), secondary aggregators reflecting FIRST data place exploit probability at roughly 22% and about the 96.5th percentile as of late May 2026; treat that as high exploit interest, though the direct FIRST CVE-specific query was not retrievable in this interface. |
| KEV status and dates | CVE-2026-21513 was added to CISA KEV on 2026-02-10 with a due date of 2026-03-03. Tenable also exposes the same due date in plugin metadata. |
| CVSS vector, interpreted | The dominant network-relevant bug carries CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H. Translation: *network-deliverable but still needs user interaction*; that is serious, but it is not equivalent to an unauthenticated server daemon RCE. |
| Affected version range | For this plugin, the affected population is Windows Server 2012 R2 ESU hosts missing KB5075970. Microsoft notes 2012 R2 is past normal support and only receiving updates through Extended Security Updates until 2026-10-13. |
| Fixed versions | Install KB5075970 for the February 10, 2026 monthly rollup, with prerequisite SSU KB5068783 where needed. Any later cumulative rollup that supersedes KB5075970 also closes the same issues for 2012 R2. |
| Scanning / exposure reality | There is no meaningful Shodan/Censys-style internet exposure query for KB5075970 itself because this is a host patch state, not a directly fingerprintable network service bug. Real exposure clusters around RDS hosts, admin jump boxes, and legacy servers where humans browse, open files, or handle email. |
| Disclosure date | Microsoft published the rollup and the dominant CVE set on 2026-02-10. |
| Reporting / analysis | Authoritative disclosure came from Microsoft/MSRC; public exploitation analysis and root-cause work came from Akamai Security Research. |
noisgate verdict.
The single biggest factor is that the most important bug in this rollup is actively exploited and KEV-listed, which keeps this out of the comfort zone. But it stops short of CRITICAL because the dominant path is user-execution/MSHTML-driven, not a broadly reachable unauthenticated server-side RCE smashing every 2012 R2 system from the internet.
Why this verdict
- Upward pressure: KEV + live exploitation.
CVE-2026-21513is not theoretical; CISA KEV and Akamai's analysis say attackers are already using it. - Downward pressure: attacker position still matters. The main path needs a person or prior foothold to trigger MSHTML content, which means this is not a broadcast-grade service exploit against every server.
- Downward pressure: narrow exposed population. In real enterprises, only a fraction of 2012 R2 servers are interactive enough for this to matter immediately: admin jump servers, RDS hosts, and a depressing number of legacy dual-use boxes.
- Upward pressure: privilege-escalation bundle. Once code lands locally, the same rollup closes multiple local EoP paths that can convert a small foothold into full host takeover.
- Upward pressure: legacy OS economics. 2012 R2 estates are often the least instrumented and least cleanly segmented servers in the environment, so when this hits the wrong box, containment is usually worse than on modern builds.
Why not higher?
Because the practical chain is not unauthenticated remote-to-SYSTEM on a listening server process. It generally requires user interaction, content handling, or an already-established local foothold, which means a lot of ordinary back-end 2012 R2 servers are simply not reachable through the dominant attack path. If this were a wormable RDP/SMB class bug with the same exploitation evidence, it would be CRITICAL.
Why not lower?
Because the threat side is already settled: KEV-listed and exploited means defenders are racing reality, not a lab exercise. Also, the patch is cumulative: if an attacker does get execution on a legacy 2012 R2 box, the bundled local EoPs make post-exploitation easier and more damaging than a single isolated user-context flaw.
What to do — in priority order.
- Block risky content on server tiers — Immediately, within hours, stop interactive browsing, email access, and untrusted file opening on Windows Server 2012 R2 admin/jump/RDS tiers because the dominant exploit path depends on user-executed content. This is your fastest risk cut while patching catches up.
- Clamp application execution — Deploy or tighten AppLocker/WDAC/application control on 2012 R2 so
.lnk, HTML-launched binaries, script hosts, and user-writable path execution are constrained. Because this is aHIGHverdict with KEV evidence, implement the control change immediately, within hours, not inside a normal 30-day window. - Hunt for MSHTML-to-process-launch chains — Create detections for suspicious
ieframe.dllor MSHTML content leading toShellExecuteExW, LOLBins, script interpreters, or payloads spawned from downloads/temp/network shares. Do this immediately, within hours because it catches both failed and successful exploitation attempts while the estate is still being remediated. - Fence legacy 2012 R2 hosts — Restrict east-west access and admin pathways to 2012 R2 systems, especially RDS and jump hosts, so a user-context foothold has fewer places to pivot. For this verdict and KEV status, put the segmentation change in place immediately, within hours where operationally possible.
- A perimeter firewall alone does not solve this, because the main exploited path is content handling and user execution, not just inbound service exposure.
- Vuln scanner green checks do not prove safety here; Tenable explicitly says this plugin is based on version self-reporting, not exploit validation.
- RDP hardening by itself is not enough. Some of the bundled bugs are local EoP, and the dominant exploited MSHTML path can arrive through channels unrelated to inbound RDP.
Crowdsourced verification payload.
Run this on the target Windows Server 2012 R2 host or through your RMM/EDR live response. Invoke with powershell.exe -ExecutionPolicy Bypass -File .\check-kb5075970.ps1; standard local read access is usually enough, but Administrator is recommended so package enumeration works reliably.
# check-kb5075970.ps1
# Purpose: Verify whether Windows Server 2012 R2 has KB5075970 installed.
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN, 3=ERROR
$ErrorActionPreference = 'Stop'
function Write-Result {
param(
[string]$State,
[string]$Message,
[int]$Code
)
Write-Output "$State - $Message"
exit $Code
}
try {
$os = Get-CimInstance Win32_OperatingSystem
$caption = $os.Caption
$version = $os.Version
if ($caption -notmatch 'Windows Server 2012 R2') {
Write-Result -State 'UNKNOWN' -Message "This script is intended for Windows Server 2012 R2. Detected: $caption ($version)" -Code 2
}
$kbInstalled = $false
$installMethod = @()
# Method 1: Get-HotFix
try {
$hf = Get-HotFix -Id KB5075970 -ErrorAction Stop
if ($hf) {
$kbInstalled = $true
$installMethod += 'Get-HotFix'
}
} catch {
# ignore and continue
}
# Method 2: Component Based Servicing package registry
if (-not $kbInstalled) {
try {
$cbsPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages'
$pkg = Get-ChildItem $cbsPath -ErrorAction Stop | Where-Object { $_.PSChildName -match 'KB5075970' }
if ($pkg) {
$kbInstalled = $true
$installMethod += 'CBS Registry'
}
} catch {
# ignore and continue
}
}
# Method 3: DISM package listing fallback
if (-not $kbInstalled) {
try {
$dism = & dism.exe /online /Get-Packages 2>$null | Select-String -Pattern 'KB5075970'
if ($dism) {
$kbInstalled = $true
$installMethod += 'DISM'
}
} catch {
# ignore and continue
}
}
# Optional: note servicing stack prerequisite visibility
$ssuInstalled = $false
try {
$ssu = Get-HotFix -Id KB5068783 -ErrorAction Stop
if ($ssu) { $ssuInstalled = $true }
} catch {
try {
$ssuPkg = Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages' -ErrorAction Stop | Where-Object { $_.PSChildName -match 'KB5068783' }
if ($ssuPkg) { $ssuInstalled = $true }
} catch {
# ignore
}
}
if ($kbInstalled) {
$msg = 'KB5075970 is installed'
if ($installMethod.Count -gt 0) {
$msg += " (detected via: $($installMethod -join ', '))"
}
if ($ssuInstalled) {
$msg += '; prerequisite SSU KB5068783 also present'
}
Write-Result -State 'PATCHED' -Message $msg -Code 0
} else {
$msg = 'KB5075970 not detected on Windows Server 2012 R2'
if (-not $ssuInstalled) {
$msg += '; SSU KB5068783 also not detected and may be required before install'
}
Write-Result -State 'VULNERABLE' -Message $msg -Code 1
}
}
catch {
Write-Result -State 'UNKNOWN' -Message $_.Exception.Message -Code 3
}
If you remember one thing.
KB5075970 (and KB5068783 if required) in the same emergency cycle to the exposed/high-value slice first and the rest of the 2012 R2 ESU estate right after; the formal noisgate remediation SLA for a HIGH issue is ≤180 days, but using that full window for a live Windows zero-day on legacy servers would be poor judgment.Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.